Вопрос

PostgreSQL поддерживает множество геометрические типы из коробки, вместе с большим количеством геометрических операторы и Основные индексы которые, по-видимому, предлагают пространственную индексацию данных.

И потом, есть еще кое-что PostGIS ( ПостГИС ), который является расширением к PG.

В чем разница между встроенной пространственной поддержкой в PG и PostGIS?

Если моему приложению необходимо хранить географические координаты (точки, области, полигоны), а затем эффективно выполнять запросы (такие как точка в полигоне, пересечение полигонов), нужен ли мне PostGIS или я могу использовать (возможно) более удобные и простые встроенные типы данных / синтаксис?

Это было полезно?

Решение

Сначала я хотел бы прояснить суть индексов:GiST на самом деле является основой для создания индексов для новых типов данных, а не какой-либо конкретной схемой индексации как таковой.Этот фреймворк используется для геометрических типов, которые поставляются с Postgres, но он также используется для индекса подобия текста, соответствующего триграмме, в стандартных текстовых столбцах и, конечно же, используется в схемах индексации многих внешних пакетов, среди которых мы можем назвать PostGIS.

Будут ли стандартные геометрические типы данных работать для вас или вам понадобится PostGIS, полностью зависит от вашего приложения.

PostGIS хранит геометрические данные в столбце типа "геометрия".;в нем вы можете хранить более или менее произвольные данные (точки, окружности, полигоны, все, что у вас есть).Индексация происходит быстро и довольно сложно:он может выполнять такие вещи, как индексация с потерями, используя ограничивающие рамки для сложных фигур, которые в противном случае невозможно индексировать каким-либо разумным способом.Поддерживаются различные системы пространственной привязки с автоматическим преобразованием результатов запросов.PostGIS также поддерживает стандартные отраслевые форматы OpenGIS, которые могут помочь в обмене данными с другими системами.

Напротив, набор внутренних геометрических типов и их индексов намного менее сложен.Не существует реального "универсального" типа геометрии;вместо этого вы должны выбрать тип столбца: точка, линия, круг, многоугольник или что там у вас есть;для комбинаций вам, вероятно, придется использовать несколько столбцов.Индексация не так хороша;не так много различных типов фигур могут быть проиндексированы (хотя вы могли бы добавить поддержку ограничивающих рамок, используя для них отдельный столбец и генерируя ограничивающие рамки вручную), и индексы, вероятно, работают не так быстро в некоторых ситуациях.С другой стороны, если внутренние геометрические типы удовлетворяют вашим потребностям, вы получаете преимущество в том, что ваше приложение легче переносить на другие системы, в которых установлен Postgres, но не PostGIS.

Мой совет был бы поиграть с внутренними геометрическими типами и посмотреть, насколько хорошо это работает для вас;если вы начнете сталкиваться с проблемами, попробуйте PostGIS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top