Я хочу создать запрос, чтобы выбрать все пути и их узлы, которые существуют в ограничивающей рамке, используя postGIS. Ограничительная рамка должна содержать все детали, которые получит команда osmosis «--bounding-box».
Есть ли способ сделать это?
Я хочу создать запрос, чтобы выбрать все пути и их узлы, которые существуют в ограничивающей рамке, используя postGIS. Ограничительная рамка должна содержать все детали, которые получит команда osmosis «--bounding-box».
Есть ли способ сделать это?
Для документации по осмосу я вижу опцию команды :
--bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201
для PostGIS вы можете использовать ST_MakeEnvelope (left, bottom, right, top, srid), чтобы построить ограничивающий прямоугольник, затем &&
оператор ограничивающего прямоугольника, чтобы найти, где ограничивающие прямоугольники пересекаются:
SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(10.9351, 49.3866, 11.201, 49.5138, 4326);
SRID 4326 предназначен для WGS84 Lat / Long и требуется только для PostGIS 1.5; это может быть опущено для более поздних версий.
Я думаю, что это будет примерно так: ограничительная рамка в PostGIS создается
Запрос будет использовать ST_Intersection с подзапросом.
Я более или менее воспользовался этим на страницах справки PostGIS
. Второй запрос в таблице путей, разработанный аналогично приведенному выше (но с ST_Dimension () = 1), должен найти пути.
HTH, Миха
источник
здесь есть тема, которая похожа на ваш вопрос здесь ...
1.you также можете получить некоторую информацию здесь о геометрии построения функций.
2.Another информации здесь о пересекающем Пересечении: PostGIS - ST_Intersects, ST_Intersection ...
я надеюсь, что это поможет вам ...
источник
Это комментарий к коду @ Миха.
Пары координат для
POLYGON
должны следовать по часовой стрелке (или против часовой стрелки): верхний левый, верхний правый, нижний правый, нижний левый, снова верхний левый.Итак, по часовой стрелке вызов функции должен быть:
Или против часовой стрелки:
источник