Açık kaynak araçları kullanarak çokgenleri şekil dosyasından nasıl çözerim?


10

Mevcut projemde, bir ülkenin her idari alanı için bazı değerleri temsil eden bir harita üzerinde veri görselleştiriyorum. PolyMaps ile kullanmak için GeoJSON'a dönüştürdüğüm bu ülkenin bir şekil dosyası verildi. Bazı küçük alanlar için veri olmadığından, ancak büyük alanlar için toplu veriler elde edilebildiğinden, şimdi birden fazla alanı daha büyük alanlara kümeleme gereksinimim var. Bu kümeler önceden tanımlanmıştır (örneğin A + B + C = D), bu yüzden kümelenmiş bir şekil dosyası oluşturmanın ve bunu daha sonra GeoJSON'a dönüştürmenin daha kolay olacağını düşündüm.

Ancak, tercihen otomatik ve açık kaynaklı araçlarla böyle bir kümeyi nasıl oluştururum? Başka mantıklı yollar da elbette hoş geldiniz.

Yanıtlar:


5

Dahili "seçilen özellikleri birleştir" aracını kullanarak şekil dosyalarınızı açmak ve özellikleri birleştirmek için her zaman QGIS gibi açık kaynaklı bir araç kullanabilirsiniz (sadece özellikleri seçin, birleştir'i tıklayın, yeni birleştirilmiş özelliğe devralmak için nitelikleri seçin, bitti).

Yüzlerce veya binlerce birleşme hakkında konuşursak, bu elbette pek mantıklı değil. Ben kendimi geçen gün QGIS "öznitelik ile" özellikleri birleştirmek mümkün olup olmadığını merak ediyordum?

DÜZENLEME: Tamam, aptalım, "küme" için kullanacağınız tüm özellikler için ortak bir özniteliğiniz varsa (bir il veya ilçe adı gibi) bu çözme aracı için bir durum olacaktır. Şekil dosyanızı açın, çözmeyi seçin (QGIS'de Vector> Geoprocessing Tools> Erit) öğesinde seçin, yukarıda belirtilen ortak ada sahip sütunu seçin ve işlemi başlatın. Bu, umarım (sizi yanlış anlamadıysam) aradığınız şeyle sonuçlanmalıdır.


Genel olarak, iyi bir tavsiye ve eğer her şey el işine gelirse, tarif ettiğiniz gibi QGIS ile benim için bu şekil dosyalarını yaratacak birini bulacağım. Ancak, bu kümeleri tanımlamak (örneğin NUTS kodları aracılığıyla: FR413 ve FR411'i _FRX1 adlı bir şeye birleştirmek) ve sonra bu kümelenmiş şekil dosyalarını oluşturacak bir komut dosyası çalıştırmak istiyorum. Bir GUI aracının yükü olmadan hataları düzeltmek veya hızlı izlenen değişiklikleri karşılamak istiyorum. Bu kümelerin bir gün son kullanıcılar tarafından tanımlanması kesinlikle mümkündür, bu yüzden biraz esnekliğe ihtiyacım var.
Nikolai Prokoschenko

Asla kullanmıyorum, ancak QGIS'deki her şeyi yapmak için konsolu kullanabileceğinizi düşünüyorum, bu yüzden GUI'ye gerek yok. Ayrıca tamamen bir betik çözümüne güveniyor olsanız bile, bu kümeleri bir tür tabloda tanımlamanız gerekir. Böylece, bu tabloya katılarak ve sonra çözünerek şekil dosyanızla uğraşmaktan kaçınabilirsiniz. Sanırım bu da yazılabilir olurdu?
SAnderka

mükemmel bir şekilde mümkün, ben CBS her şey tamamen yeni başlayan biriyim. Senaryo yazımı QGIS'e bakacağım, teşekkürler.
Nikolai Prokoschenko

2

Daha az manuel çalışma için SpatiaLite'a bakabilirsiniz. Örneğin kullanarak şekil dosyalarını kolayca içe aktarabilirsiniz.

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

Sonra çözünen kısım için:

Bu kümeleri tanımlamak istiyorum (örneğin, NUTS kodları ile: FR413 ve FR411'i _FRX1 adlı bir şeye birleştirin)

Burada ihtiyacınız olan işlev GUnion () işlevidir. "Kümelerinizi" ikinci bir tabloda tanımlamak isteyebilirsiniz. Sonra küme ve alan tablosuna katılabilir ve son union_table oluşturmak için GROUP BY ile GUnion () kullanabilirsiniz.

Daha sonra .dumpshp kullanarak şekil dosyasına dışa aktarabilirsiniz

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

GeoJSON'a ihtiyacınız varsa, dosyayı şimdi dönüştürebilirsiniz.

Tüm bu yükleri, birleştirmeleri ve dökümleri işleyen Python'a kısa bir komut dosyası yazabilirsiniz.


Çok ümit verici görünüyor, deneyeceğim! Teşekkürler! UPDATEVe SELECTçizgilerinin ne yaptığını açıklar mısınız?
Nikolai Prokoschenko
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.