Czy PostGIS może ograniczyć kolumnę do wieloboków i wielokątów?


10

Obecnie używam PostGIS 1.5.3, ale wkrótce będę aktualizować do wersji 2.0. Dlatego też zwróć uwagę na różnice między dwiema wersjami, które dotyczą następujących pytań.

  • Czy można utworzyć kolumnę typu geometrii PostGIS, która umożliwia wstawianie wielokątów i multipoligonów, ale ogranicza wstawianie innych typów geometrii bez ręcznej modyfikacji ograniczenia generowanego przez PostGIS podczas wywoływania AddGeometryColumn?
  • Czy istnieją powody, aby tego nie robić? W szczególności, czy PostGIS przechowuje jakieś metadane, które ręcznie modyfikując ograniczenie mogą mieć negatywny wpływ? (Jestem bardzo nowy w PostGIS, więc wybacz mi, jeśli pomysł przechowywania metadanych w PostGIS jest absurdalny).
  • Jak znaczny jest narzut związany z używaniem wieloboków do wszystkiego?

Wiem już, że używam ST_Multi do konwersji wielokątów w multipolygony przed wstawieniem, więc jeśli nie jest to możliwe lub nie jest to dobry pomysł, zrobię to.

Odpowiedzi:


6

Dla każdego pytania ...

  1. Nie bez ręcznej modyfikacji ograniczenia.

  2. Metadane są przechowywane w geometrii PostGIS. Technicznie nie ma powodu, aby tego nie robić. Jeśli chcesz, aby kolumna zawierała wielokąt lub wielokąt, to zależy od Ciebie. Ogólnym powodem przyklejania jednego typu geometrii na kolumnę jest prostota w miarę wzrostu stołu i / lub jeśli stół jest masywny.

  3. Wielokąt złożony z tylko jednego wielokąta będzie większy niż sam wielokąt, ale nie będzie to znaczący. Szybkość przestrzennego odpytywania (z odpowiednim indeksem) wieloboku z jednym wielokątem w stosunku do tylko jednego wielokąta byłaby jednak taka sama.

W przypadku moich danych, jeśli kolumna ma zawierać wielokąty, mam kolumnę będącą multipolygonem, ponieważ pozwala to na ewentualność wstawienia do niej wieloboku. Po prostu uruchom ST_Multi podczas wstawiania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.