Запрос базы данных геометрии PostGIS - PullRequest
1 голос
/ 07 марта 2012

У меня есть несколько таблиц, которые содержат мультиполигоны.Мне нужно найти точки в этих многоугольниках, которые я могу использовать в своем тестовом классе Java.То, что я делал, это отправлял запрос, чтобы вернуть все многоугольники, выбрать вершину для использования в качестве точки, и в большинстве случаев она работает.

Однако эти таблицы представляют данные о риске, 1 в 100, 1 в200 и т. Д., И поэтому некоторые из точек распределены между таблицами (многоугольники с более высоким риском инкапсулированы с меньшим риском).какой запрос я могу использовать, чтобы вернуть точку, которая будет в пределах 1 мультиполигона в 1 таблице, но не в других, которые я указываю?

таблицы: river_100_1k, river_200_1k и river_1000_1k

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Ну, вы можете сделать несколько левых соединений:

SELECT a.gid, a.the_geom FROM pointsTable a
LEFT JOIN river_100_1k b 
ON ST_Intersects(a.the_geom, b.the_geom)
LEFT JOIN 
river_200_1k c
ON NOT ST_Intersects(a.the_geom, c.the_geom) -- Not Intersects
LEFT JOIN
river_1000_1k d 
ON NOT ST_Intersects(a.the_geom, d.the_geom) -- Not Intersects
WHERE 
AND c.gid IS NULL AND d.gid IS NULL AND b.gid=2 AND c.gid=2 AND d.gid=2 ; 

Я не уверен, правильно ли я понимаю, но это путь, по которому вы должны идти.

0 голосов
/ 08 марта 2012

Используйте ST_PointOnSurface(polygon), чтобы получить точку в многоугольнике.

...