@EVOSandru6

Как в posgis найти все записи, где геокоордината содержится в рамках указанного полигона?

Добрый день,

Мне нужно достать объекты, которые находятся в области экрана на карте.

Крайние координаты углов известны. В базе координата объекта ( поле gis_centroid ) имеет тип geography

Пробовал 2-мя вариантами:

select *
            FROM m_waypoints
            where 
              ST_Within( 
               gis_centroid, 
                ST_GeometryFromText(
                  'POLYGON((43.284500434723 76.93922996521, 43.293825032866 76.93922996521, 43.293825032866 76.965687274933, 43.284500434723 76.965687274933, 43.284500434723 76.93922996521))', 4326
                )
            )


Ловлю: ERROR: function st_within(geography, geometry) does not exist

select *
            FROM m_waypoints
            where 
              ST_Within( 
                ST_GeometryFromText(gis_centroid), 
                ST_GeometryFromText(
                  'POLYGON((43.284500434723 76.93922996521, 43.293825032866 76.93922996521, 43.293825032866 76.965687274933, 43.284500434723 76.965687274933, 43.284500434723 76.93922996521))', 4326
                )
            )


Ловлю:

ERROR: function st_geometryfromtext(geography) does not exis

Не понял - зачем преобразовывать тип точки, если на вход - нет данных. Просто нужно найти все объекты в полигоне.

Помогите пожалуйста с запросом.
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ответы на вопрос 1
ST_Within вроде как работает только с геометрическим типом. Вероятно, вам нужно скастить gis_centroid к геометрии, добавив к нему '::geometry', только я не уверен, что будет работать индекс. Вам нужно подумать, почему у вас хранится географический тип, если вам нужно работать с ним как с геометрией (а вам нужно именно так, раз у вас карта).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы