У меня есть большой набор данных в базе данных PostGIS. Я просматриваю его через веб-интерфейс, который загружает данные как GeoJSON. Слишком много данных, чтобы предоставить клиенту все сразу (10 с лишним МБ ...), поэтому я хотел бы получить область данных внутри ограничительной рамки, образованную краями окна (пунктирная линия на изображении ниже ). Получить координаты для точек f и g легко.
Вопрос 1: Это хороший способ делать вещи? Стоит ли думать о том, чтобы кэшировать их как тайлы или этот метод достаточно эффективен?
Вопрос 2: Как я могу получить только данные в этой ограничительной рамке?
Вопрос 3: Если фигура перекрывает край ограничительной рамки (например, фигура А ниже), есть ли простой способ обрезать ее, как это запрашивается, как на втором изображении?
Ответы:
просто измените порядок вопросов, и у вас есть процедура:
2) Выберите только то, что пересекает bbox (
ST_Intersects
).3) Пересечь его с bbox, чтобы обрезать полигоны (
ST_Intersection
).1) Создать новую таблицу с результатами (
CREATE TABLE newtable AS SELECT...
).Документы ST_Intersection содержат пример кода. Вам нужно будет адаптировать его и использовать ST_PolygonFromText в качестве bbox.
источник
Я думаю, что большинство (все) веб-клиенты (и настольные ГИС тоже) делают это. Вы не можете отправить весь набор данных.
Необходимость настройки какого-либо типа кэширования зависит от того, являются ли ваши данные статичными или изменяются.
Установить этот ограничивающий флажок для получения данных будет очень быстро (если у вас есть пространственный индекс), но, конечно, это не бесплатно. Вы заплатите с некоторой вычислительной мощностью.
Как было сказано ранее: чтобы найти полигоны внутри вашего экстента, вы используете ST_Intersects.
Чтобы получить только часть внутри вашего экстента, используйте ST_Intersection, но не делайте этого. ST_Intersection - дорогостоящий процесс. Если у вас нет очень больших полигонов, я думаю, что лучше отправлять целые полигоны.
Но я думаю, что вы хотите сделать это на лету вместо того, чтобы положить это в стол
источник