Acho que o procedimento pode ser assim:

Uma função com os seguintes passos.

1 - Selecione os poligonos que intesectam o box da linha ou a propria
linha. Vc deve definir isso, pois os resultados poderam ser
diferentes.
2 - Una os poligonos; ST_Union
3 - Pegue o anel exterior; ST_ExteriorRing
4 - Faça a diferença; ST_Difference. O anel deve ser o primeiro
parametro da função. O resultado deve ser uma coleção
5 - Verifique qual elemento tem menor comprimento e retorne ele.

Espero ter ajudado,

Com os melhores cumprimentos.

Diego Moreira Carvalho



Em 16 de agosto de 2011 09:40, Marco Afonso <[email protected]> escreveu:
>
> Boa tarde,
> Gostaria de saber se existe uma forma de, dado um ponto inicial A e um ponto 
> final B, chegar a uma LINESTRING (a mais curta) que contorne N poligonos que 
> possam existir entre estes dois pontos.
> Conheço a solução pgRouting... mas gostava de saber se apenas com operações 
> entre geometrias (ST_SymDifference, ST_Intersection, ST_LineMerge, etc...) 
> seria possível chegar a uma linha que contornasse poligonos...
> Encontrei este método para dividir poligonos
> http://trac.osgeo.org/postgis/wiki/UsersWikiSplitPolygonWithLineString
> Apartir destes resultados, penso que seria possível order por comprimento do 
> perímetro e fazer ST_SymDifference + ST_LineMerge da linha inicial... mas 
> ainda não cheguei a uma query que funcionasse... ou talvez não seja possível 
> de todo...
> Obrigado
>
>
>
>
> _______________________________________________
> Portugal mailing list
> [email protected]
> http://lists.osgeo.org/mailman/listinfo/portugal
>
_______________________________________________
Portugal mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/portugal

Responder a