Eu tenho um Shapefile (que consiste nas principais estradas europeias) com cerca de 250.000 segmentos que eu tenho que simplificar para o rejunte. Mas não consigo encontrar uma maneira de fazer isso corretamente.
Isto é o que parece:
e é assim que deve ser:
De alguma forma, tenho que remover todos os pontos das linhas que estão conectados a menos de 3 linhas (não sendo um cruzamento), preservando as conexões topológicas entre os pontos restantes. Se alguém tiver uma idéia, seria muito apreciada!
Cumprimentos
EDIT: Tentei implementar a idéia do @dkastl e consegui obter apenas os nós desnecessários (nós com apenas 2 cadeias de linhas adjacentes) da minha rede com o código abaixo (geração de rede obtida no blog da underdark http://underdark.wordpress.com / 2011/02/07 / a-beginners-guide-to-pgrouting / ):
SELECT * FROM
(SELECT tmp.id as gid, node.the_geom FROM
(SELECT id, count(*) FROM network
JOIN node
ON (start_id = id OR end_id = id) AND (end_id = id OR start_id = id)
GROUP BY id ORDER BY id) as tmp
JOIN node ON (tmp.id = node.id)
WHERE tmp.count = 2) as unn_node;
Então, tudo o que tenho a fazer agora é a fusão das linhas. No entanto, não tenho idéia de como. Eu imagino que tem que ser um loop que para cada linha do resultado da consulta acima obtenha as linhas adjacentes e as mescla. Em seguida, reconstruiria a rede completamente e repetiria o processo até que a consulta acima retornasse um resultado vazio.
Respostas:
Você certamente deve aplicar um filtro ramer-douglass-peucker às suas linhas. Está disponível no PostGIS como a função ST_Simplify . A versão com preservação de topologia pode ser interessante para o seu caso. Boa sorte!
fonte