Ogr2ogr veya gpc ile çokgenleri çöz / çöz?


16

Mümkün olduğunca az çokgenle birleştirmem gereken ABD eyaletlerinin sınırlarını temsil eden çok sayıda çokgen var.

Bunu ticari olmayan bir yazılımla veya makul bir fiyata yazılımla yapmak mümkün müdür?

PostGIS kullanılamaz, Java mevcut değildir, ancak C kullanılabilir.


OpenSourceSoftware bir çok şey yapabilir, neye ihtiyacınız var ... bir araç, bir kütüphane ve bir C derleyicisi de hangi ortamda / işletim sisteminde çalışmak?
huckfinn

qgis'i www.qgis.org adresinden indirin
Antonio Locandro

@huckfinn: CentOS'tayım ve sorduğunuz için bir komut satırı aracı veya Perl-XS veya C kütüphanesi ideal olurdu. Çokgenlerin MySQL'e kopyalarım olmasına rağmen, kaynak verilerim ESRI Shapefiles'ında. Ogr2ogr var ama MySQL lehçesi değil.
LeeGee

gpcBaşvurulan başlığın Manchester Üniversitesi'nden GPC - General Polygon Clipper kütüphanesi olduğunu tahmin ediyorum
matt wilkie

Yanıtlar:


32

İle ogr2ogr(GDAL> = SpatiaLite destekli 1.10):

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

1
Windows için Gdal / Ogr sürümlerinden herhangi biri Spatialite desteği, MS4W, OSGeo4w, gisinternals, geoinformatica içeriyor mu?
klewis

AFAIK OSGeo4W ve Tamas Szekeres ( vbkto.dyndns.org/sdk ) tarafından sağlanan paketler kesin.
Antonio Falciano

1
Hangi GDAL sürümünü ( gdalinfo --version) kullanıyorsunuz ? Geçici çözüm olarak, önce bir şekil dosyası oluşturmayı ve sonra KML'ye dönüştürmeyi deneyebilirsiniz, çünkü KML sürücüsünün bazı sınırlamaları vardır.
Antonio Falciano

3
Ben "geometri" için ne kullanılacağını belirleyen bir zaman şeytan vardı, böyle bir sütun: geometri hata alıyordu . Stack ve başvuru belgelerindeki benzer örneklerin tümü geo veya the_geom gibi kırık varyantları da kullanır . Sonunda ogrinfo -so özet sadece anahtarı:, ogrinfo -so somedata.gdb my_layer_nameve "Geometri Sütun =" için filtre keşfettim
matt wilkie

3
Ayrıca, sadece şekil dosyasındaki tüm çokgenleri tek bir büyük çokgene eritmek istiyorsanız, şunları yapabilirsiniz: ogr2ogr output_dissolved.shp input.shp -dialect sqlite -sql "SELAL ST_Union (geometri) AS geometri FROM girişi" unutmayın, eğer GDAL oluşturursanız kendiniz, sqlite kurulu olmalı ve konfigürasyona en az sqlite ve spatialite dahil etmelisiniz, yani --with-sqlite --with-spatialite = yes veya benzeri bayraklar .
cm1

3

Saf bir hafif C erişimi istiyorsanız, Frank Warmerdam'dan shapelib ve Alan Murta'dan gpc kombinasyonunu kullanabilirsiniz . Ben shapelib DBF taşıma biraz zor, ama bir şey okumak Tamam olduğunu düşünüyorum. Perl için bunları Geo :: Shapelib ve Math :: Geometry :: GPC girişleri altındaki CPAN Deposunda bulabilirsiniz . Koordinat dönüşümü için Geo :: Proj4 ile birlikte GIS operasyonlarına minimalist erişime sahip olabilirsiniz. Bunu sevdim.


Teşekkürler - bunu denedim, ama çok, çok yavaş görünüyordu: bir MacBookPro 4gig üzerinde 2.000 ilçe toplamak için bir saatten fazla. Belki de benim
kodum

Örneğin, bbox'larla çakışan herhangi bir indeksleme kullanıyor musunuz?
huckfinn

Hayır - Karanlıkta tökezlerim, bunu yıllardır yaptığımı düşünmeyen referanslar bulmakta zorlanıyorum veya PostGIS'i çalıştırıyorum.
LeeGee

Ancak Postgresql / PostGIS'i tüm gelişmiş içerik indeksleme, ilişki ... işlemleriyle birlikte kullanabilirsiniz. Şekil için veri içe aktarma shp2pg aracı ile çok kolaydır. Ve SQL sözdizimini öğrenmek o kadar zor değil ...
huckfinn

PostGIS'in anlaşılması birkaç saniye sürdü - özellikle ogr2ogr ile çok basit. Ama GPC kullanmayı tercih ederim: Dosyalardan çokgenler biriktiriyorum, her zaman bir sendika yapıyorum ve PostGIS'in tam anlamıyla saniyeler içinde yaptıklarını yapmak saatler sürdü, bu yüzden belgelerin yanlış anlaşılmam olması gerektiğini söylüyorum .
LeeGee
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.