Devo dividir MultiPolygons em Polygons?


8

No sistema que estou implementando, tenho uma tabela T1 com uma geometria associada. A maioria das geometrias é um conjunto de n polígonos, com 10 <n <100. No momento da tabela T1, tenho uma coluna de geometria do tipo MultiPolygon, com um índice GiST.

Como a tabela T1 será grande, receio que seria melhor criar uma relação um para muitos com uma segunda tabela T2, com uma coluna do tipo Polygon, e dividir cada MultiPolygon em vários polígonos.

Mas eu tenho que implementar pesquisas na tabela T1, portanto, com a segunda abordagem, a desvantagem é que eu tenho uma associação adicional para lidar. Além disso, seria mais complicado inserir uma geometria para um único registro da tabela T1.

Gostaria de saber se alguém tem alguma experiência com esse problema e se essa pessoa poderia lançar alguma luz.

Respostas:


1

Eu estaria inclinado a dizer para não se preocupar com o tamanho da sua mesa T1; índices (e gatilhos, é claro) são os que afetam o desempenho na maior parte.

Além de ter um número menor de junções, a tradução de WKB para a representação interna do PostGIS / GEOS que eu imaginaria seria um pouco mais ideal do que fazer isso para vários polígonos individualmente.

A única necessidade de ter uma tabela de geometria separada seria se um polígono estivesse associado a mais de um registro. Os multipolígonos devem ser considerados uma entidade única para fins de design do banco de dados e somente se o relacionamento for mais complexo você deve considerar uma tabela separada. E haveria uma pequena economia de espaço físico com menos tabelas.

Experimente com as duas configurações e executando a consulta no pgadmin, que fornece os horários para cada parte da consulta.


4
@MerseyViking. O índice fará um trabalho muito melhor se os multipolígonos forem divididos em polígonos. No caso de multipolígono, o índice é construído na extensão total bbox do multipolígono. Quanto menores as caixas no índice, o índice mais eficaz.
Nicklas Avén

@Nicklas concorda que o BBOX será maior com vários polígonos. +1
Mapperz

Ok obrigado. Mas o que não consigo entender é quando usar o tipo MultiPolygon se um índice funcionar sempre melhor para o Polygon.
User3125 27/03

2
A decisão de polígono vs multi-polígono é mais complexa do que isso. Há mais coisas a considerar. Os polígonos múltiplos podem fornecer um design de banco de dados "melhor". Dependendo de como os polígonos e os polígonos múltiplos estão espacialmente relacionados e o processamento, a análise que você deseja fazer, o ganho na divisão dos polígonos múltiplos pode ser grande ou nada. Polígonos múltiplos também são um tipo de geometria comum como resultado do processamento. Se você, por exemplo, usar ST_Difference em um polígono e uma estrada de travessia, receberá um polígono múltiplo.
Nicklas Avén

1
@MerseyViking, entendo o seu ponto, mas como ele tem entre 10 e 100 polígonos em cada multipolígono, há uma grande chance de que a divisão em polígonos traga um grande impulso. E uma junção em campos inteiros indexados não custará muito.
Nicklas Avén
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.