2010-07-04 2 views
2

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

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

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

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

В чем разница между двумя наборами координат? Что мне нужно сделать, чтобы я мог выполнить тест пересечения с помощью POINTS, которые используют значения lat/lon?

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

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

Спасибо!

ответ

1

И мультиполигоны, и набор данных точек должны находиться в одной проекции (SRID) при выполнении пространственной операции, такой как ST_Intersects. Во втором примере координаты точки находятся в lat/lon (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.

Смежные вопросы