Çokgenlerdeki delikler otomatik olarak nasıl doldurulur?


12

QGIS'de, maksimum alan, sınır çizgileri arasındaki mesafe gibi parametreleri ayarlayarak çokgenlerdeki delikleri otomatik olarak doldurma seçeneği var mı? Ben çok "ince" / küçük delikleri silmek / doldurmak istiyorum.


1
Deliklerle (polgyons içerisindeki halkalar) veya ayrı çokgenler arasındaki boşlukları mı merak ediyorsunuz ?
Simbamangu

Bunun QGIS tabanlı bir çözüm olması gerekir mi? Daha önce PostGIS'de ( geospatial.commons.gc.cuny.edu/2013/11/04/… ) uzamsal SQL kullanarak bunu nasıl yapacağım hakkında blog yazdım . PostGIS kullanmıyorsanız, muhtemelen sizin için SpatiaLite'a adapte olabilirim, ki tahminen QGIS kullanıyorsanız, araç zincirinizde zaten SpatiaLite olabilir.
Lee Hachadoorian

Yanıtlar:


11

QGIS 2.10.1-Pisa'yı İşleme sürüm 2.10.2 ile birlikte , İşleme Araç Kutusu'nda birkaç araç vardır :

  • Maksimum alanı belirtebileceğiniz doldurma delikleri aracı .
  • Tüm giriş katmanına uygulanacak delikleri silin .

Bu yardımcı olur umarım!


1
Sadece kontrol etmek için, maksimum alan parametresi, doldurulacak bir deliğin maksimum boyutu nedir? Yani bir metrelik UTM projesinde, eğer maks 10.000 olsaydı, bu doldurulacak en büyük deliğin bir hektar olacağı ve bundan daha büyük olacağı anlamına mı geliyor?
BillW

1
@ BillW - Evet, tam olarak ne olduğuna inanıyorum :)
Joseph

11

Çokgenler arasında birçok boşluk bulunan bu şekil dosyasıyla sizinkiyle aynı sorunla karşılaştım.

Boşluklu orijinal dosya

Sorunu çözmek için, tshiffle'ın yönteminde küçük bir değişiklik kullanabilirsiniz:

  1. İlk olarak, dosyanızla tüm boyutunu kapsayan bir çokgen arasındaki farkı gerçekleştirin.

Extent_polygon

Difference_tool

Bu eylem, yalnızca bir çokgenden oluşan yeni bir şekil dosyası oluşturacaktır, bu yüzden onu tek parçalara ayırmanız gerekir. Bunun için, Vektör / Geometri Araçları / Çok Parçalı olarak tek parça aracını kullanabilirsiniz.

Difference_result

Multi_to_single

Bundan sonra, harici varlığı silin. Şimdi, yeni bir şekil dosyasında, orijinal kapsamınızın boşluklarını kapsayan birkaç çokgen var.

gaps_covered

  1. İlk veriler ve tek parçalar arasında bir Birlik gerçekleştirin. SAGA aracını kullanın, çünkü varsayılan QGIS seçeneği veritabanında kopyalar oluşturur.

Birlik

  1. Tüm boşluklar artık veritabanında boş kayıtlar olarak görünecektir (örnek 72 satır için). Alan alanını kullanarak tablonuzu sıralayın ve orijinal dosyadaki en küçük çokgenden değeri alın. Bu durumda 0.13645 hektar.

veri tabanı

  1. Son olarak, resimde gösterilen ayarlarla "Şerit çokgenlerini ortadan kaldır" aracını kullanın.

resim açıklamasını buraya girin

  1. Nihai sonuçta herhangi bir boşluk yoktur.

resim açıklamasını buraya girin


Parametre seçimi hakkında daha fazla bilgi ekleyebilir misiniz? "Değer" nedir? QGIS dokümantasyon sayfası detaylarda çok kısadır. Çok zarif cevap, yazık ilk kullanıcı cevapların hiçbirini kabul etmedi!
user3386170

1
'Değer' karşılaştırma için kullandığınız büyüklüktür. Örnekte, kullanılan 'alan' alanı hektar olarak ayarlanmıştır, bu nedenle 0.1 şu anlama gelir: 0.1 hektardan küçük veya eşit çokgenleri ortadan kaldırın.
18'de gtapko

gtapko, lütfen 3. aşama hakkında daha ayrıntılı bilgi verebilir misiniz? anlayamıyorum, teşekkürler
newGIS

4

Orada daha şık çözümler olabilir, ama bu her zaman benim için çalıştı.

1) "Delik doldurma" çokgenleri oluşturun. Bunu yapmak için orijinalinden daha büyük bir dev çokgen çizin ve "fark" aracını kullanın. Çok daha büyük bir çokgen çizdiyseniz, tüm "deliği dolduran" çokgenlere ve orijinal şeklin etrafında dolaşan daha büyük bir çokgene sahip olacaksınız. "Delik doldurma" çokgenlerini tutarak o büyük çokgeni silin.

2) "Delik doldurma" çokgenlerini orijinal şekil dosyasıyla birleştirin. Yalnızca belirli ölçütlere uyan delikleri doldurmak istiyorsanız (yani kilometrekare X sayısının altında), burada filtre uygulayabilirsiniz.

3) Yeni birleştirilen çokgeni ortak bir alanda çözün.


Adım 3 hakkında net değil, bazıları ortak alanı nasıl bulacak?
iRfAn

Bu adımda ortak alan herhangi bir şey olabilir, amaç çokgenler arasındaki sınırları basitçe çözmek. Mevcut bir alanı kullanabilir veya yalnızca bir alan ekleyebilirsiniz.
tshiffle

4

Python / shapely'de bu çokgeninizi doldurabilir:

import shapely
from shapely.geometry import Polygon
filled_shape = Polygon(shape_with_holes.exterior)

2

Gtapko ve tshiffle ile aynı yolu izleyen bazı açıklamalar gördüm, ancak hiçbiri benim için işe yaramadı çünkü geçersiz geometriler fark aracını işlevsiz yaptı. Böylece,% 100 otomatik olmayan, ancak yönetilebilir olan bir çözüm buldum. Muhtemelen birisi zaten bunu anladı, ama şansımı alacağım:

1) Orijinal, hasarlı katman üzerinde bir kimlik oluşturun

Kimlik özniteliği oluşturmak basit, ama benim çözümüm de bu yüzden üstesinden geleceğim.

İlk olarak, öznitelik tablonuzu açmanız ve daha sonra bir abaküs gibi bir düğme olan Alan Hesaplayıcı'ya gitmeniz gerekir . Orada, yeni bir alan oluşturma veya mevcut bir alanı güncelleme seçeneği sunulur. Yukarıdaki resimde "ID" adında yeni bir tane oluşturuyorum. Formül resmin sonundadır. (QGIS'imi farklı bir dilde oluşturduğum için özür dilerim. Tasarım ve formüller dil sürümlerinde tamamen aynı olduğundan, burada yolumuza gireceğini düşünmüyorum.)

2) Çokgenleri çizgilere dönüştürün

Bu adım, menünün Vektör> Geometri bölümünde bulunur. Dönüştürülen şeklin şöyle görünmelidir:

Çokgenleri hatta dönüştürdükten hemen sonra, tam tersini yapmanız gerekecek ...

3) Çizgileri çokgenlere dönüştürün

Seçenekler yan yana. Yine, burada dil engelini düşünmeyelim.

4) Sevin Seviye 2 ve 3 adımlarını gerçekleştirmenizin nedeni, şimdi bu satırların çokgen olarak kabul edileceğinden eminsiniz, yani Öznitelik Tablosunda artık kendi satırları vardır. Eğer kontrol ederseniz, şöyle görünecektir:

Birincisi HER ZAMAN tüm çokgen (güven bana, bugün birkaç yüz satır sildim ...) ve geri kalanı ortadaki gevşek çizgilerdir. Düzenlemeyi etkinleştirebilir ve eyleme hazır olabilirsiniz. Bunu denemeye karar verirseniz, aklınızda bulundurmanız gereken iki şey şunlardır: tablonuzu kimliğinizle organize edin , bu şekilde hiçbir şeyi kaçırmayacağınızdan ve diğer programlar gibi veri kümelerini seçmek için shift'i kullandığınızdan emin olabilirsiniz. .

Ben bu değil farkındayım krem de la krem QGIS problem çözme, ancak araçlar nedeniyle çalışmayan bir durumla karşı karşıya iseniz geçersiz geometri bu çizgi oluşturmak (Hatta kimliğe göre eriterek çalıştı, ancak işe yaramadı), o zaman bu bir çıkış yolu olabilir.


Resimlerinizi güncelleyebilir misiniz? Bağlantılar koptu!
Simbamangu

Hey. Üzgünüm, ama görünüşe göre Photobucket görüntülerimi kaçırdı, onlara erişimimi kaybettim. Zaten bir bilet açtım ve tekrar erişim kazanmaya çalışıyorum. Mümkün olduğunda size geri döneceğim.
Eric Lino
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.