Ошибка при поиске ближайшего соседа в PostGIS - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь написать запрос PostGIS для ближайшего соседа, в котором выбран набор координат и определено расстояние от ближайшего полигона затопления. Затем я хочу классифицировать расстояние как «ВНЕШНЕЕ», «ЗАКРЫТЬ» ИЛИ «ВНУТРИ»:

WITH 
  point_loc (geom) AS ( 
    SELECT ST_SetSRID(ST_MakePoint(531673.0, 180848.2),27700) ),
  distances (gid, distance) AS (
    SELECT  
      fl.gid,
      ST_Distance(fl.geom, p.geom) AS distance
    FROM
      point_loc p, flooding fl
    WHERE ST_DWithin(p.geom, fl.geom, 400)
  SELECT 
    gid,
    CASE WHEN distance > 300 THEN 'OUTSIDE'
         WHEN distance > 50 AND <= 300 THEN 'CLOSE'
         ELSE 'INSIDE'
    END as flood_result
  FROM distances;

Я получаю синтаксическую ошибку при последнем вызове SELECT. Кто-нибудь может увидеть, что я делаю не так?

1 Ответ

0 голосов
/ 30 апреля 2018

В вашем втором CTE отсутствует закрывающая скобка.

Эта строка: WHERE ST_DWithin(p.geom, fl.geom, 400)

Должно быть: WHERE ST_DWithin(p.geom, fl.geom, 400) )

...