O PostGIS pode restringir uma coluna a multipolígonos e polígonos?


10

Atualmente, estou usando o PostGIS 1.5.3, mas atualizarei para 2.0 em breve. Portanto, observe as diferenças entre as duas versões relevantes para as seguintes perguntas.

  • É possível criar uma coluna do tipo de geometria PostGIS que permita a inserção de polígonos e multipolígonos, mas restrinja a inserção de outros tipos de geometria sem modificar manualmente a restrição que o PostGIS gera ao chamar AddGeometryColumn?
  • Existem razões para não fazer isso? Em particular, o PostGIS armazena metadados que modificar manualmente a restrição pode impactar negativamente? (Eu sou muito novo no PostGIS, então me desculpe se a idéia de PostGIS armazenar metadados for absurda.)
  • Qual é a importância de qualquer sobrecarga ao usar multipolígonos para tudo?

Eu já estou ciente de usar ST_Multi para converter polígonos em multipolígonos antes da inserção, por isso, se não for possível ou não for uma boa ideia, farei isso.

Respostas:


6

Para cada uma das suas perguntas ...

  1. Não sem modificar manualmente a restrição.

  2. Existem alguns metadados armazenados na geometria do PostGIS. Tecnicamente, não há razão para não fazer isso. Se você deseja que uma coluna contenha polígono ou multipolígono, isso é com você. O motivo geral para manter um tipo de geometria por coluna é a simplicidade, à medida que a tabela cresce e / ou se a tabela é massiva.

  3. Um multipolígono composto por apenas um polígono será maior que apenas o polígono, mas não significativamente. A velocidade de consulta espacial (com o índice apropriado) do multipolígono com um polígono versus apenas um polígono seria a mesma.

Para meus dados, se a coluna deve conter polígonos, tenho a coluna como um multipolígono, pois permite a eventualidade de um multipolígono ser inserido na coluna. Basta executar ST_Multi ao inserir.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.