Dissolver / agregar polígonos com ogr2ogr ou gpc?


16

Eu tenho um grande número de polígonos representando os limites dos condados dos EUA que eu preciso mesclar no menor número possível de polígonos.

É possível fazer isso com software não comercial ou com preço razoável?

O PostGIS não está disponível, nem Java, mas C está.


O OpenSourceSoftware pode fazer muitas coisas, o que você precisa ... uma ferramenta, uma biblioteca e um compilador C também funcionam em qual ambiente / sistema operacional?
Huckfinn

faça o download do qgis de www.qgis.org
Antonio

@ huckfinn: Estou no CentOS, e uma ferramenta de linha de comando ou biblioteca Perl-XS ou C seria ideal, obrigado por perguntar. Meus dados de origem estão nos Shapefiles da ESRI, embora eu tenha cópias dos polígonos no MySQL. Eu tenho ogr2ogr, mas não o dialeto do MySQL.
precisa saber é o seguinte

Eu presumo que o gpcreferenciado no título é GPC - Biblioteca Geral Polygon Clipper , da Universidade de Manchester
Matt Wilkie

Respostas:


31

Com ogr2ogr(GDAL> = 1.10 com suporte ao SpatiaLite):

ogr2ogr output.shp input.shp -dialect sqlite -sql "SELECT ST_Union(geometry), dissolve_field FROM input GROUP BY dissolve_field"

1
Alguma das versões Gdal / Ogr, para Windows, contém suporte para Spatialite, MS4W, OSGeo4w, gisinternals, geoinformatica?
klewis

AFAIK OSGeo4W e pacotes mantidos por Tamas Szekeres ( vbkto.dyndns.org/sdk ) com certeza.
Antonio Falciano

1
Qual versão do GDAL você está usando ( gdalinfo --version)? Como solução alternativa, você pode tentar criar um shapefile primeiro e depois convertê-lo em KML, porque o driver KML tem algumas limitações.
Antonio Falciano 03/02

3
Eu tive um diabo determinando o que usar para "geometria", estava recebendo o erro nessa coluna: geometria . Todos os exemplos semelhantes aqui na Stack e nos documentos de referência também usam variantes quebradas, como geo ou the_geom . Finalmente descobri ogrinfo -so somente resumo mudar: ogrinfo -so somedata.gdb my_layer_namee filtro para "Coluna Geometria ="
wilkie mate

3
Além disso, se você quiser dissolver todos os polígonos no arquivo shapefile em um polígono grande, faça o seguinte: ogr2ogr output_dissolved.shp input.shp -dialect sqlite -sql "SELECT ST_Union (geometria) COMO geometria da entrada" lembre-se, se você criar o GDAL você precisa instalar o sqlite e incluir pelo menos sqlite e spatialite na configuração, ou seja, sinalizadores --with-sqlite --with-spatialite = yes ou similar.
cm1

3

Se você deseja um acesso C leve e puro, use uma combinação de shapelib de Frank Warmerdam e gpc de Alan Murta. Acho que o manuseio do DBF no shapelib é um pouco complicado, mas ler algo está OK. Para o perl, você pode encontrá-los no Repositório CPAN, nas entradas Geo :: Shapelib e Math :: Geometry :: GPC . Além do Geo :: Proj4 para transformação de coordenadas, você pode ter um acesso minimalista às operações de GIS. Eu gosto disso.


Obrigado - eu tentei isso, mas parecia muito, muito lento: mais de uma hora para agregar 2.000 municípios em um MacBookPro 4gig. Talvez seja a minha :) de codificação
LeeGee

Você usa algum tipo de indexação, sobrepondo bboxes, por exemplo?
precisa saber é

Não - estou tropeçando no escuro, achando difícil encontrar árbitros que não suponham que eu esteja fazendo isso há anos ou que esteja executando o PostGIS.
precisa saber é o seguinte

Mas você também pode usar o Postgresql / PostGIS com todas as operações avançadas de indexação, relação ... de coisas. A importação de dados para a forma é muito fácil com a ferramenta shp2pg. E a sintaxe SQL não é tão difícil de aprender ...
huckfinn

O PostGIS levou alguns segundos para descobrir - maravilhosamente simples, especialmente com ogr2ogr. Mas eu prefiro usar o GPC: acumulo polígonos a partir de arquivos, cada vez que criamos um UNION, e levamos horas para fazer o que o PostGIS fez em literalmente segundos, e é por isso que digo que deve ser minha interpretação incorreta dos documentos .
LeeGee 5/05
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.