Etiquetar geometrias de parte simples poligonais em PostGIS
por Eloi
Se temos um tema com geometrias de parte simples (single part) poligonais, como por exemplo o tema países. Ao etiquetar surgirá uma etiqueta por cada elemento geométrico quando queremos apenas uma etiqueta para todos os elementos pertencentes ao mesmo grupo, neste caso país.
Antes.
Esta foi uma solução simples e rápida que encontrei. Criar um novo campo com geometria para pontos e ai calcular o centroide da geometria poligonoal com maior superfície do grupo, neste caso país. Código SQL:
SELECT AddGeometryColumn('sch_cartobase', 'wd_paises', 'geom_label', 4326, 'POINT', 2);
UPDATE sch_cartobase.wd_paises
SET geom_label = SetSRID(MakePoint((ST_X(ST_Centroid(geom))),(ST_Y(ST_Centroid(geom)))), 4326)
WHERE ST_Area(geom)
IN (SELECT max(ST_Area(geom))
FROM sch_cartobase.wd_paises
GROUP BY iso3166_2);
Agora para o mesmo tema existem duas geometrias, uma poligonal e outra de pontos, esta ultima servirá apenas para etiquetar.
Depois.


Olá Eloy, parabéns pelo Blog, tens me ajudado muito.
Só uma sugestão… você poderia também criar uma view sem a necessidade de criar uma nova coluna e alimentá-la, dessa forma, caso uma nova geometria seja inserida na tabela, teremos a view atualizada. isto dispensa o uso do Update.
Um abraço
Boa sugestão. Uma pequena vantagem desta abordagem é a possibilidade de mover os pontos e desta maneira personalizar onde queremos que surja cada uma das etiquetas.
Obrigado pelo comentário.
Abraço.