Rasterleri QGIS'de düzgün kontur çokgenlerine dönüştürün


14

Raster katmanlardan düzgün kontur çokgenleri oluşturmada sınırlı bir başarı elde ettim.

Kontur çizgileri ve sınır polinleri oluşturdum ve sonra QGIS Birliği kullandım. Sonra QGIS Polygonize kullanıyorum. Daha sonra çokgenlerdeki değeri almak için orijinal raster için bölgesel istatistikleri kullanın.

Denediğim ikinci yöntem, rasterini çokgene dönüştürmekti. Sonra arzu ettiğim konturun içine yuvarlanmış yeni bir nitelik sütunu oluşturun. Sonra aynı değer arasındaki çizgileri çözdüm. Sonra v.generalize kullanın. Bu yöntem biraz daha hızlıdır, ancak bazı çokgenleri pürüzlü / düzensiz bırakacaktır.

resim açıklamasını buraya girin

Aslında her zaman çalışan daha kolay bir yöntem var mı? Tüm işlemi yapan basit bir komut olması gerektiği anlaşılıyor.


2
Neden Poligonize kullanıyorsunuz? Giriş rasteriniz sürekli mi (kayan nokta DEM gibi)? QGIS GDAL_Contour kısayol olan bir kontur aracı, .. sahiptir qgistutorials.com/en/docs/working_with_terrain.html konturları veya hipsometrik alanları almaya çalışıyorsun?
Michael Stimson

Girdi dosyası bir tif ve gerekli çıktı dosyası sadece belirli artışlarla çokgenleri olan bir şekil dosyasıdır. Çokgenler oluşturmak için çok sayıda araç buldum, ancak çokgenler değil.
Kx_

Yeterince adil, hipermetrik alanlar elde etmeye çalışıyorsunuz. Raster tarafından çokgene oluşturulan çokgenleri basitleştirme seçeneğine sahip (çoğunlukla) Esri kullanıyorum, ancak burada yardımcı olmayacak. DEM'den konturlar oluşturmak, bir sınırlayıcı kutu eklemek ve daha sonra çokgenleştirmek olsaydınız nasıl olurdu? Daha sonra etiket noktaları oluşturabilir, değerleri kesebilir / örnekleyebilir ve çokgenleri özniteliklerle etiketleyebilirsiniz ... muhtemelen çözülebilecek birkaç aynı değer poligonu alabilirsiniz, ancak daha büyük sorun bir aralıktan daha fazla atlıyor. Konturlardan hipo atfetmek için kodum var ama ArcInfo kapsama alanı üzerinde çalışıyor
Michael Stimson

Açıkladığınız şey, ilk yöntemimle yaptığımı sanıyorum. Bu hantal. Her dosyanın bir id özniteliğine sahip olduğundan emin olun ve sonra çokgenleştirildikten sonra sıfırın üzerinde alan içermeyen çokgenleri silin. Çokgene aktarılacak çizginin tutarlı doğru etiketini alamadım. İkinci yöntem istediğim kadar o kadar yakın, ama v.generalize zamanın% 100'ünde çalışmıyor gibi görünüyor. ESRI'nin çokgenleri basitleştirmesini dilerdim QGIS'de belirttiğiniz gibi bir seçenek olsaydı.
Kx_

Yanıtlar:


12

İkinci yönteminizde yaşadığınız problemleri yaşadım. Bir Raster'i bir Vector'a aktardım ve v.generalise kullanmaya çalıştım ve algoritmadan etkilenmemiş görünen 'kademeli' sınırla çoğunlukla pürüzsüz çokgenler elde ediyorum.

Görevim için çalışan bir süreç buldum, en iyi yoldan emin değilim ama size yardımcı olması durumunda paylaşacağımı düşündüm.

Ne ile başladı BoM bir ascii ızgara şuna benziyordu: resim açıklamasını buraya girin

Ne gibi BoM üretmek gibi bir şey istedim: resim açıklamasını buraya girin

Aşağıdaki adımları kullanarak (mutlu olduğum) bir sonuca ulaşabildim.

  • QGIS içine ızgara (benim durumumda BoM ASCII Izgara) yükleyin.
  • Ayrık sınıflara kaydedildi. (İşleme Araç Kutusu> Çim> Raster> r.recode)
  • 'Temizlemek' için çoğunluk filtresi çalıştırın. (İşleme Araç Kutusu> SAGA> Raster Filtre> Çoğunluk Filtresi)
  • Filtrelenmiş ızgaradan 1 aralıklarla konturlar oluşturdu ve bunları 'sınıf' özniteliğinde sakladı (çünkü sınıflarım 1,2,3,4 vb.). (Raster 'Menü'> Çıkarma> Kontur)
  • Çıktı konturları biraz genelleştirilmiş, ancak bunları düzeltmek için 'yılanlar' algoritmasıyla genelleştirilmiş v.general kullandım.
  • Daha sonra satırları çokgene dönüştürdüm. (İşleme Araç Kutusu> QGIS geoalgoritmaları> Vektör Geometri Araçları> Çokgenlere Satırlar)
  • Sonunda tek parça çokgenleri birden çok parçaya dönüştürmek zorunda kaldım, böylece tüm çokgenler güzelce çizildi. (İşleme Araç Kutusu> QGIS geoalgoritmaları> Vektör Geometri Araçları> Mulitpart'a Tek Parçalar).

Şekillendirdikten sonra çıktım aşağıda: resim açıklamasını buraya girin

Birisi daha basit bir yol biliyorsa duymakla da ilgilenirim. Başlangıçta rasterimi vektöre dönüştürüp genelleştirebileceğimi @Rx_'ye benziyordum ve yapardım. Yapmam gereken çok daha uzundu.


3

Buradaki cevapları seviyorum ama QGIS'in bunu yapmanın hızlı ve kolay bir yolu olmadığına inanamıyorum. MapInfo, belirtebileceğiniz herhangi bir aralıkta çokgen veya çizgi olarak konturlar oluşturabilir.

Bu kadar basit bir görev gibi görünüyor ve aynı zamanda uzantıları elde etmek için de önemli. Herhangi birinin bunu yapmanın güncellenmiş veya daha hızlı bir yolu varsa lütfen paylaşın!


1

Daha doğrudan bir yol, gdal_countour"çokgen modunda" (yani -pseçenekle) doğrudan (komut satırı programı olarak ) kullanmaktır.

Misal:

gdal_contour -p -amin min_val -amax max_val -i 1 input_raster.tif output_shape.shp

Belgeler: https://gdal.org/programs/gdal_contour.html

Bu seçenek yalnızca> = 2,4 sürümünde mevcuttur (bu seçenekle işaretlenebilir gdalinfo --version). Ubuntu 18.4 kullanıyorsanız, UbuntuGIS'ten yüklemeniz gerekebilir


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.