Mais

Convertendo um raster PostGIS de volta ao vetor

Convertendo um raster PostGIS de volta ao vetor


É possível converter um raster PostGIS em uma linha?

Gostaria de generalizar alguns dados vetoriais, convertendo-os em raster e alterando o tamanho da célula para corrigir 'lacunas' na conectividade vetorial.

Depois de atingir um bom tamanho de célula de raster, gostaria de converter esse raster de volta em uma linha vetorial, conectando todos os centróides de células em linhas contínuas dentro de uma determinada tolerância (para não conectar muitas células adjacentes em interseções).

Imagino que a consulta se pareça com isso, mas não consigo descobrir qual seria a função externa:

Converter em vetor (linha) (Converter em raster (tamanho da célula) (Linha original (geom)))

Um exemplo simples seria converter a 'linha' raster de volta para um vetor como na documentação SQL do ST_AsRaster:

ST_AsRaster (ST_Buffer (ST_GeomFromText ('LINESTRING (50 50,150 150,150 50)'), 10, 'join = bevel'), 200,200, ARRAY ['8BUI', '8BUI', '8BUI'], ARRAY [118,154,118], ARRAY [ 0,0,0]);

Você usaria algo como:

- Dump As Polygons - http://postgis.net/docs/RT_ST_DumpAsPolygons.html

ou

- ST_Polygon - http://postgis.net/docs/RT_ST_Polygon.html

Para converter seu raster de volta em geometria. Exceto, observe que, como os rasters são pixels minúsculos, você recebe de volta uma geometria de área.

No PostGIS 2.2.0 - a versão é eminente, se você construiu com SFCGAL, você pode usar

o ST_ApprovimateMedialAxis.html

http://postgis.net/docs/manual-dev/ST_ApproximateMedialAxis.html

a função ST_StraightSkeleton,

http://postgis.net/docs/manual-dev/ST_StraightSkeleton.html

Acho que ST_ApprovimateMedialAxis.html chega perto do que você deseja quando aplicado ao polígono que você obteve de raster. Eu acho que outros têm funções plpgsql por aí que fazem algo semelhante se você não conseguir obter o PostGIS 2.2 enriquecido com SFCGAL