QGis'de çokgen kullanan bir ısı veya Choropleth haritasını nasıl oluştururum?


12

QGIS için heatmap eklentisi ile oynuyorum ve çokgenlerin yanı sıra noktaları kullanan benzer bir eklenti / araç kullanarak ısı haritası yapmak mümkün olup olmadığını merak ediyorum?

Isı haritası eklentisinin noktalarla yaptığı gibi, verilerin yoğunluğunun bir gösterimini elde etmek istiyorum.

Aşağıdaki resim, istediğim sonucun kabaca bir taslağıdır:

resim açıklamasını buraya girin


3
Çokgenleriniz için sentroid üretmeyi ve bunlardan ısı haritası oluşturmayı düşündünüz mü?
andytilia

1
Verilerinizle ilgili daha fazla ayrıntı yardımcı olacaktır. Çokgenler neyi temsil eder ve nasıl dağıtılır? Örnek bir resim gönderebilir misiniz?
andytilia

@andytilia: Centroidler çokgenlerin kapsamını doğru bir şekilde temsil etmez. Çokgenler 1200 m2'lik bir alanda kaynak kullanımını temsil eder. Bazı çokgenler, iyi bir meyve yamasını temsil eden küçüktür ve diğerleri, karibu ve geyiğin habitatlarını kapsayan çok büyüktür. Ben altıgen bir ızgara bining ve sonra üst üste binme sayıyorum ... ama ben hemen hemen bir çaylak ben bu yüzden bu konuda anlayabiliyorum iyi bir öğretici bulamadık.
NWT Adam

1
bkz. QGIS heatmap
rkm

Sayısal değerler sizin için bir anlam taşıyor mu yoksa sadece güzel / net bir görselleştirme mi arıyorsunuz?
underdark

Yanıtlar:


5

Belki çokgenlerinize bir dizi rastgele nokta oluşturabilirsiniz, bunun için bir QGIS aracı var mı? Çakışan çokgenleriniz varsa, bu alanda bunların yoğunluğu daha yüksektir. Ardından noktalar için ısı haritası kullanın. Sonuç buna bağlı olduğu için en uygun nokta sayısını bulmak için birkaç tur yapmanız gerekir.

Verileriniz yine de bulanık olan bazı habitatların dağılımını gösteriyorsa, bu, bir noktanın yaklaşık bir örneği yansıttığı gerçek dünya durumuna en yakın olabilir.


1
+1 Harika bir fikir. Ekleyeceğim tek şey, nokta verileri ve altıgen polislerle Konumda Katılmak, eşleşmeyen özelliklerden kurtulmak ve daha sonra puan oluşturmak, böylece tek noktalarınız diğer tüm noktalar arasında boğulmayacak.
RomaH

Bu en iyi sonucu veriyor gibi görünüyor. Çözüm öneren herkese teşekkürler. İyi bir çözüm gibi göründüğü için sadece bir kişiye lütuf vermek kötü hissediyorum!
NWT Adam

6

Sorunuzu doğru anlarsam daha önce benzer bir şey yapmıştım; sadece ne yaptığımı hatırlamak zorunda kaldım.

Bu, polisleriniz üst üste biniyorsa VE aynı katmanla çalışmıyorsa çalışır. Aynı katmandalar ve mümkünse, ayrı katmanlara taşıyın, eğer hedef katman yoksa değerlerden birini miras alacaktır.

Kullanılacak temel işlem , Vektör> Veri Yönetimi menüsünün altındaki Nitelikleri konuma göre birleştir . Burada altıgen alanınızı hedef katman ve birleştirme katmanını çokgenlerinizden biri olarak belirtin. Oluşan katmanınıza bir ad verin ve Tüm Kayıtları Sakla için radyo düğmesini işaretleyin .

Ortaya çıkan katman, çokgen katmanınızla kesişen tüm hücrelerin bulunduğu altıgen katmanınızın bir kopyası olmalıdır. Şimdi entegrasyon için, sonuçta elde edilen son katmanınızı hedef katman olarak kullanın ve bir sonraki çokgen katmanına katılın. Ortaya çıkan lazeri alın ve tüm katmanlarınıza katılana kadar bir sonraki katmanınıza katılın.

Son katmanınız önceki katmanların tüm öznitelik alanlarını devralmış olmalı ve çoğunda NULL diyebilir.

Bu, bir şekil dosyasının bazı bağırsaklarında oynamamız gereken yerdir, bu nedenle katmanı bir şekil dosyası olarak kaydetmediyseniz, şimdi yapın. Ve katmanı QGIS'deki çalışma alanınızdan kaldırın.

Şekil dosyasının * .dbf dosyalarını OpenOffice Calc içinde açın, Excel'i KULLANMAYIN . Dosyayı değiştirecek ve işe yaramaz, zor yoldan öğrendi. Ve verileri yeniden sıralamayın, dosyadaki satırların sırasına da çok spesifiktir. NULL'ların şimdi sıfır olup olmadığını kontrol edin, eğer değilse, dikkatlice değiştirin.

Şimdi şekil dosyasını QGIS'e ekleyin ve Nitelik Tablosunu açın . Şimdi NULL yerine sıfır göstermelidir. Alan Hesaplayıcı'yı kullanın ve çalışmanızla ilgili alanları yeni bir sütunda toplayın.

Şimdi, hedef alanla örtüşen tüm özellik koleksiyonlarının değerlerini bir dereceye kadar doğrulukla göstermesi gereken bir özetlenmiş alanınız var. Çok güzel bir choropleth haritası için çokgenlerinizi renklendirmek için Semboloji işlevini kullanabilirsiniz.

Dosyadaki kullanılmayan tüm alanlardan kurtulmak istiyorsanız. Sadece Calc içinde dbf dosyasını açın ve istemediğiniz sütunları silin. Şahsen, sık sık yaptığım gibi bir şekil dosyasına girmeyi rahatlatmayı öğrenmenizi tavsiye ederim.


Ne yazık ki, aynı katmanda çakışan yüzlerce çokgen var. Bunları birkaç yüz katmana ayırmadan bunun etrafında bir yol görebiliyor musunuz?
NWT Adam

1
Üst üste binen polislerinizi parçalayan PostGIS (kullanıyorsanız) ile bir çokgen bindirme oluşturabilirsiniz. gis.stackexchange.com/questions/83/… Belki de daha iyi SQL-fu olan biri burada bize ve sonuç polys değerlerini miras almak için nasıl yardımcı olabilir, ben çok iyi değilim.
RomaH

1
Başka bir seçenek, şiddetle tavsiye edeceğim bir şey, belki de probleminize tam yaklaşımınızı yeniden düşünmenin zamanı geldi. Hangi verileri eşlemeye çalışıyorsunuz? Değerin çokgenler arasında homojen olacağını varsaymak için bir neden var mı? Üst üste binen çokgenin aslında biriktirici etkileri olur mu? Bunları önermek için iyi bir kanıtınız yoksa, bu haritanın herhangi bir tahmine dayalı modelleme için kullanımı titrek bir zeminde olabilir. Sadece düşünün, doğru çözüme sahip olabilirsiniz, ancak modellemek veya haritalamak için daha iyi bir yol keşfedebilirsiniz.
RomaH

1
PostGIS önerisi için teşekkürler. Buna bir göz atacağım ama sadece PostGIS'i nasıl kullanacağımı öğreniyorum. Soruyu yeniden değerlendirmeye gelince ... Ne demek istediğini anlıyorum ama ifade etmeye çalıştığımız şeyi başka nasıl görselleştirebileceğimden emin değilim. Verilerimiz, toplumun büyüklerinin ve kaynak kullanıcılarının kültürel açıdan üretken veya önemli olarak eşledikleri tüm alanları temsil eder. Değer haritasının çokgen boyunca homojen olmadığını, ancak harita ile ifade etmek istediğimiz noktaya yeterince yakın olduğunu biliyoruz.
NWT Adam

1
Qgis'te manuel olarak herhangi bir şeye dikkat edin - özellikle // tons // şekil dosyaları ile uğraşmaya başladıktan sonra, gerçekten sinir bozucu bir pozisyonda olabilirsiniz. SQL-fu'nuzu kullanarak pişman olmayacaksınız, postGIS eklentisi veya GRASS eklentisi olsun (aşağıdaki cevabım bakın: gis.stackexchange.com/a/42188/7689 ).
egbutter

4

Bu rasterleri kullanan genel bir iş akışıdır. QGIS'de bunu başaracak özellikleri bilmiyorum.

  1. Çokgen çakışma alanlarının yeni bir vektör katmanını oluşturmak için kavşak aracını kullanın
  2. Örtüşme katmanı da dahil olmak üzere vektör katmanlarınızı rasterlere dönüştürün
  3. Rasterleri birleştirmek için raster aritmetiği (muhtemelen ekleme) kullanın
  4. Sonuç bir ısı haritası gibi görünen bir raster olmalıdır

Alfa / null değerler ve / veya katman saydamlığı, rasterleri herhangi bir temel haritada yerleştirmenize olanak tanır.


Bu iş akışından geçtikten sonra, yeni rasterin boyutunu kapsayan büyük bir gri blokla bırakıldım. Isı haritası gibi görünmesini nasıl sağlayabilirim?
NWT Adam

1
Son taramadaki piksellere atanmış farklı değerler var mı? Birkaç düşünce: Rasterleri oluştururken daha iyi bir çözünürlük (daha fazla piksel) belirtmeniz gerekebilir; rasterler aynı boyutta ve çözünürlükte olmalıdır; daha büyük değerler için daha parlak renkler göstermek üzere ortaya çıkan raster renk eşlemesini uzatmanız veya değiştirmeniz gerekebilir.

Tamam renk haritasını ayarladım ama sadece iki renk mavi (değer 0) ve kırmızı değer (2) alıyorum kırmızı değer vektör orijinal katmanlarımın ve örtüşme katmanımın alanını kaplıyor. Ben katmanlar her rasterleştirildiğinde her poligon yerine 1 değeri verildi tahmin ediyorum. Daha sonra rasterler eklendiğinde toplam değer 2'ye eşittir. Katman seviyesinden ziyade çokgen seviyesinde değerlerin nasıl korunacağı / ekleneceği?
NWT Adam

daha ince çözünürlük raster yardımcı olmalıdır

Nasıl daha iyi bir çözünürlük taraması yapabilirim?
NWT Adam

4

Bunu deneyin, gereksinimlerinize uygunsa, veri kümesine hesaplamalı bir çözüm değildir, ancak yalnızca bir Infographic çözümü arıyorsanız, bunun yerine bunu deneyebilirsiniz.

Özelliklere göre hedeflere, hedef olarak hedefinize ve nokta verileriniz de birleştirmeye katılın. Tüm özellikleri korumayı seçin. Sembolojiyi kalıtsal değeri istenen hücrelere istenen renge ayarlayın ve% 50 gibi bir şeye şeffaflık ayarlayın.

Sonra daire polys ile katman üzerinde semboloji aynı renk ve şeffaflık ayarlayın. Daire poli hücre poli önüne yerleştirin. Bu, değer arttıkça artan doygunluk yanılsamasını verecektir.

İsterseniz, tüm polislerin çizgilerini ve üstteki bindirmeyi çıkarabilirsiniz, böylece alt katman anahatları diğer katmanlar tarafından renklendirilmiş görünmez.

En iyi çözümü bulmak için renkler ve şeffaflıkla oynamanız gerekecek. Ben aynı renkleri en iyi görünüyor ama deneyim.


4

GRASS eklentisini kullanmanızı öneririm - QGIS oldukça sınırlı işlevselliğe sahiptir (ve GRASS gibi bir yazılım zaten varken tekerleği neden python'da yeniden icat ettiniz?):

v.in.ogr.qgis

[çokgenlerinizin zaten bir değere sahip olup olmadığına bağlı olarak sonraki iki satır gerekli olabilir]

v.db.addcol 
v.db.update_const 

Bu biz nerede çokgen örtüşme kadar ekleyin sonra raster yapmak bu sütunların dayalı

v.to.db ... qcolumns=sum(col_with_polygon_value)
v.to.rast.attr

v.out.ogr [r.out.ogr]

3

Düz QGIS ile zor olabilir, özel komut dosyalarına ihtiyacınız olabilir veya PostGIS veya Spatialite gibi uzamsal veritabanı kullanabilirsiniz. PostGIS ile düzenli puan ızgarası oluşturabilir veya CSV metin dosyası olarak oluşturabilir ve bunu içe aktarabilirim. Daha sonra st_buffer ile her noktanın çevresine veya ST_MakeEnvelope ile dikdörtgenler çizin ve her tamponun üst üste binen tüm alanlarını sayın. Ardından, "veri yok" anlamına gelirse, 0 değerinin tümünü kaldırmak isteyebilirsiniz. Son olarak, Ağırlık alanı olarak sayacı kullanarak ızgara için ısı haritası yapabilirsiniz.

En uygun olanı bulmak için farklı ızgara çözünürlüklerini denemeniz gerekir. Aslında, Kevin'in önerdiği raster yaklaşımına çok benziyor, sadece vektör dünyasında kalıyor.

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.