Eu tenho um shapefile da linha central da estrada que tem estradas divididas em todos os cruzamentos. No entanto, gostaria de associar LINESTRINGs que possuem um conjunto comum de atributos em um único LINESTRING. Contanto que o nome, o limite de velocidade, etc. não sejam alterados, desejo mesclá-los. Isto é para eventual fusão no OpenStreetMap.
O software ArcGIS for Desktop da Esri parece permitir isso com o comando Dissolve e a opção UNSPLIT_LINES.
Eu também encontrei um comando Dissolve no QGIS, mas parece funcionar apenas em polígonos e campos únicos.
Supondo que nada exista para o QGIS, alguém sabe como fazê-lo no PostGIS ou GRASS?
postgis
openstreetmap
grass
dissolve
joshdoe
fonte
fonte
Respostas:
Pergunta interessante. Eu não me considero um guru do PostGIS, mas brinquei com seu problema e criei a seguinte consulta que dissolve
LINESTRING
registros de rodovias emMULTILINESTRING
registros quando eles têm valores comuns em vários campos (no meu conjunto de dados, eu correspondi nos camposname
estate
). Usei o OGR para enviar um shapefile de rodovia (renomeado para ushwys) para o PostGREsql; então meu campo de geometria é chamadowkb_geometry
. Tente invadir esta consulta para acomodar seus dados e condições de campo:Se isso funcionar, você poderá usar ogr2ogr para executar esta consulta e exportar os resultados da maioria dos formatos vetoriais que você preferir, como shapefile, GML, CSV ou outro. Para obter informações sobre como chamar consultas SQL a partir do ogr2ogr, consulte a documentação SQL do OGR .
Como referência, revi a instrução PostGIS ST_Collect , bem como este site que demonstra o agrupamento em vários campos.
Se você achar que as redações desta consulta não funcionam para você, entre em contato e eu responderei minha resposta para que ela não permaneça e confunda as pessoas.
PS: Se você não está familiarizado com o ogr2ogr para enviar dados geográficos para o PostGIS, usei o seguinte script ogr2ogr para executar minha importação de dados ( cuidado ao copiar da Web e colar diretamente na janela de comando ogr2ogr, pois achei a formatação da página introduz quebras de linha e substituições de fonte / caractere entre aspas duplas que quebram o script ogr ):
[Atualizar]
Eu queria ver como isso "parecia" no QGIS depois de executar essa consulta, então modifiquei a consulta para aplicar esta
WHERE
cláusula (que me fornece todas as variantes da US Highway 65 no estado do Missouri):Em seguida, usei o QGIS e o plugin QuickWKT para visualizar todos os oito (8) dos meus
MULTILINESTRING
registros de rodovia resultantes . Como você pode ver na captura de tela, os resultados finais levam a Hwy 65 da fronteira norte de Missoui com Iowa até a fronteira sul com Arkansas:Para mim, essa visualização demonstra que minha consulta não produziu duplicação ou eliminação inesperada de recursos. Então, em seguida, me perguntei "ok, a dissolução retornou oito recursos, mas quantos recursos na tabela original realmente representam a Hwy 65 no Missouri?" Minha próxima consulta respondeu a essa pergunta. Parece que o conjunto de dados original usa trinta e oito (38) recursos para representar a Hwy 65 no Missouri:
Na análise final, a consulta reduziu trinta e oito (38) recursos para oito (8) recursos que compartilhavam valores nos campos de nome e estado. Neste ponto, estou relativamente confiante de que esta consulta é útil e apropriada para dissolver geometros de peça única em geometrias de várias partes quando a tarefa de dissolução precisar considerar vários campos.
Felicidades. :)
fonte
No PostGIS, existe uma função dedicada para mesclar linhas
http://www.postgis.org/docs/ST_LineMerge.html
fonte
No GRASS GIS, consulte v.build.polylines
fonte