Запрос практически одинаков для любого направления, он зависит только от ваших критериев выбора. Предположим, у вас есть следующая таблица:
---------------------------------------------------
| id | name | otherdata | geometry(MULTIPOLYGON) |
---------------------------------------------------
| 1 | poly1 | blah | 1020304050...... |
---------------------------------------------------
с использованием следующего:
SELECT * FROM poly_table
или
SELECT id,name,otherdata,AsText(geometry)
отобразит эту таблицу как есть (позже будет получен более читабельный вывод на английском языке)
теперь, если у вас также есть подобная таблица, но вместо полигоновв геометрии у вас есть точки, для создания перекрестных фильтров на них вы можете использовать простые объединения.
EG:
SELECT points.* FROM points_table points
INNER JOIN polygon_table polys ON ST_Within(points.geometry,polys.geometry)
WHERE polys.id = 1 -- Or some other where clause to restrict the polygon area to the one you want.
это вернет все точки из таблицы точек, которые попадают внутрьвыбранный многоугольник, представляющий интересующую вас область.
примечание: здесь я использую ST_With, но в PostGIS могут присутствовать другие геометрические операторы, которые могут выполнять много других типов проверок, которые бы делали ваши пересечения или ограничивающие измеренияточнее, но для всех них принцип один и тот же.
Для вашего второго запроса необходимый ГИС-SQL будет очень похож, но инстЧтобы вернуть точки для данного поли, вам нужно изменить критерии, чтобы вернуть поля для данной точки:
SELECT polys.* FROM polygon_table polys
INNER JOIN points_table points ON ST_Within(points.geometry,polys.geometry)
WHERE points.id = 1 -- Or some other where clause to restrict the point to the one you want.
ПРИМЕЧАНИЕ: мы сохраняем параметры в 'ST_Within в точно том же порядке, потому что ST_Withinобрабатывает, используя следующее правило:
returns true IF geometry A is within geometry B
Поскольку точка все еще меньше из двух сущностей, нам все равно нужно проверить на то же пространственное упорядочение.