PostGIS può vincolare una colonna a multipoligoni e poligoni?


10

Attualmente sto usando PostGIS 1.5.3, ma presto aggiornerò a 2.0. Quindi, nota eventuali differenze tra le due versioni che sono rilevanti per le seguenti domande.

  • È possibile creare una colonna del tipo di geometria PostGIS che consente l'inserimento di poligoni e multipoligoni ma limita l'inserimento di altri tipi di geometria senza modificare manualmente il vincolo che PostGIS genera quando si chiama AddGeometryColumn?
  • Ci sono ragioni per non farlo? In particolare, PostGIS memorizza metadati che possono influire negativamente sulla modifica manuale del vincolo? (Sono molto nuovo con PostGIS, quindi perdonami se l'idea di PostGIS che memorizza i metadati è assurda.)
  • Quanto è significativo il sovraccarico dovuto all'utilizzo dei multipoligoni per tutto?

Sono già a conoscenza dell'utilizzo di ST_Multi per convertire i poligoni in multipoligoni prima dell'inserimento, quindi se non è possibile o non è una buona idea, lo farò.

Risposte:


6

Per ciascuna delle tue domande ...

  1. Non senza modificare manualmente il vincolo.

  2. Ci sono alcuni metadati memorizzati nella geometria PostGIS. Tecnicamente, non c'è motivo di non farlo. Se vuoi che una colonna contenga poligoni o multipoligoni, dipende da te. Il motivo generale per attaccare con un tipo di geometria per colonna è la semplicità man mano che la tabella cresce e / o se la tabella è enorme.

  3. Un multipoligono composto da un solo poligono sarà più grande del solo poligono, ma non in modo significativo. La velocità di interrogazione spaziale (con l'indice appropriato) del multipoligono con un poligono contro un solo poligono sarebbe la stessa.

Per i miei dati, se la colonna deve contenere poligoni, ho la colonna come multipoligono in quanto consente l'eventualità che un multipoligono venga inserito nella colonna. Esegui ST_Multi mentre lo stai inserendo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.