Чи може 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.