PostGIS multiponto vs ponto

12

É normal usar o tipo de geometria 'multiponto' em vez de 'ponto' sabendo que eu o uso para armazenar apenas um ponto?

Como posso converter de multiponto em ponto?

Youssef
fonte
Existe uma boa resposta que explica como verificar geometrias de várias partes e converter tipos de colunas de geometrias de múltiplas para únicas em: gis.stackexchange.com/questions/28835/…
John

Respostas:

16

Para converter "Multiponto" em "Ponto", você deve usar ST_Dump , por exemplo:

SELECT (ST_Dump(the_geom)).geom AS the_POINT_geom
  FROM MULTIPOINT_table;

Sobre a questão de usar "Multi" ou geometrias únicas, eu uso esta lógica:

  • se toda geometria tiver atributos diferentes -> Único
  • se um grupo de geometrias tiver os mesmos atributos -> "Multi"
Taber
fonte
9

A maneira mais fácil de extrair um ponto de um ponto único MULTIPOINTé ST_GeometryN:

SELECT ST_AsText(ST_GeometryN('MULTIPOINT ((1 1))', 1));
--POINT(1 1)

Isso evita possíveis problemas em situações em que uma função de retorno de conjunto não pode ser usada.

Existem algumas otimizações importantes disponíveis apenas para POINTdigitar geometrias (especialmente em versões anteriores do PostGIS), armazenando pontos únicos, como POINTé uma boa prática. A POINTtambém usa cerca de 25% menos espaço que a MULTIPOINT.

dbaston
fonte