Устранение неполадок с пересечением постГИС - PullRequest
2 голосов
/ 04 июля 2010

Я только начал использовать PostGIS & Postgresql, и все по большей части работает без сбоев.Когда я пытаюсь выяснить, в чём заключается точка MULTIPOLYGON, я застреваю.У меня есть две отдельные точки, которые, я уверен, лежат внутри одной и только одной фигуры, которая имеет тип данных MULTIPOLYGON в моей базе данных.Они не совпадают, и они находятся в разных форматах.

Пример 1, я не уверен, какой это формат, но запрос возвращает истинное значение, как я и ожидал (обратите внимание, я нашел это значение, загрузив набор данных в QGIS и наведя курсор на точку внутри).

Во втором примере я геокодировал адрес, который находится внутри фигуры, на которую я смотрю.Однако в результате запроса возвращается ложное значение.

Я использовал shp2pgsql для загрузки данных в базу данных непосредственно из файла формы.SRID файла формы - 4269 (я пытался выполнить запросы ниже, указав SRID во время вызова GeomFromText, но результаты совпадают).

В чем разница между двумя наборами координат?Что мне нужно сделать, чтобы я мог выполнить тест пересечения, используя ТОЧКИ, которые используют значения широты / долготы?

1.) SELECT ST_Intersects ((выберите the_geom из wardstable, где gid = 37), ST_GeomFromText ('POINT(1172539 1924462) '));

2.) SELECT ST_Intersects ((выберите the_geom из wardstable, где gid = 37), ST_GeomFromText (' POINT (-87.6547884 41.96367) '));

Спасибо!

1 Ответ

1 голос
/ 04 июля 2010

И мультиполигоны, и набор данных Точки должны находиться в одной проекции (SRID) при выполнении пространственной операции, такой как ST_Intersects.Во втором примере координаты точки указаны в широте / долготе (4326).Вы должны преобразовать их в 4269, используя ST_Transform :

SELECT ST_Intersects((select the_geom from wardstable where gid=37), ST_Transform(ST_GeomFromText('POINT(-87.6547884 41.96367)',4326),4269));

Редактировать: я пропустил параметр SRID в ST_GeomFromText.

...