Может ли PostGIS ограничивать столбец мультиполигонами и полигонами?


10

В настоящее время я использую PostGIS 1.5.3, но скоро обновлюсь до 2.0. Поэтому, пожалуйста, обратите внимание на любые различия между двумя версиями, которые имеют отношение к следующим вопросам.

  • Можно ли создать столбец типа геометрии PostGIS, который позволяет вставлять полигоны и мультиполигоны, но ограничивает вставку других типов геометрии, не изменяя вручную ограничение, которое PostGIS создает при вызове AddGeometryColumn?
  • Есть ли причины не делать этого? В частности, хранит ли PostGIS какие-либо метаданные, которые могут вручную повлиять на изменение ограничения? (Я очень новичок в PostGIS, так что извините, если идея хранения метаданных в PostGIS абсурдна.)
  • Насколько значительны какие-либо накладные расходы, связанные с использованием мультиполигонов для всего?

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

Ответы:


6

Для каждого из ваших вопросов ...

  1. Не без ручного изменения ограничения.

  2. В геометрии PostGIS хранятся некоторые метаданные. Технически, нет никаких причин не делать этого. Если вы хотите, чтобы столбец содержал многоугольник или многоугольник, это ваше дело. Основная причина придерживаться одного типа геометрии на столбец - это простота по мере роста таблицы и / или, если таблица массивна.

  3. Мультиполигон, состоящий только из одного многоугольника, будет больше, чем просто многоугольник, но незначительно. Скорость пространственного опроса (с соответствующим индексом) мультиполигона с одним полигоном по сравнению с одним полигоном будет одинаковой.

Для моих данных, если столбец должен содержать многоугольники, у меня есть столбец, являющийся мультиполигоном, поскольку это учитывает возможность того, что мультиполигон будет вставлен в столбец. Просто запустите ST_Multi при вставке.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.