PostgreSQL / PostGIS с использованием переменных в запросе - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь получить доступ к точке и получить имя для нее.Сам запрос работает нормально, но мне нужны переменные долготы и широты, так как Lng и Lat изменятся.

Это то, что у меня есть

DO $$
DECLARE
   longitude text := -4.323966436509;
   latitiude text := 51.857052145748;
BEGIN 
    --RAISE NOTICE '% %', longitude, latitiude;
    SELECT inspectors_name as Name  
    FROM ccc_transport_streets."Inspectors_Areas_polygon" 
    WHERE ST_Contains(geom, ST_Transform (ST_GeometryFromText('POINT(lonitude latitiude)',4326), 27700));
END $$;

Однако я получаю сообщение об ошибке: -

ОШИБКА: ошибка синтаксического анализа - неверная геометрия ПОДСКАЗКА: "POINT (lo"<- ошибка разбора в позиции 8 в геометрии </p>

Я также изменил тип данных на float. Любые идеи довольно новые Postgresql.

1 Ответ

0 голосов
/ 06 октября 2018

Для создания точки используйте функцию st_makepoint ().Затем установите SRID для точки и затем проверьте, содержит ли эта точка многоугольник.

DO $$
    DECLARE
       longitude numeric := -4.323966436509;
       latitiude numeric := 51.857052145748;
    BEGIN 
        --RAISE NOTICE '% %', longitude, latitiude;
        SELECT inspectors_name as Name  
        FROM ccc_transport_streets."Inspectors_Areas_polygon" 
        WHERE ST_Contains(geom, ST_setSRID (st_makePOINT (longitude, latitiude),4326)
);
    END $$;
...