QGIS Alan Hesaplayıcısında Kullanılan Denklemleri Kaydetme?


10

Yeni hesaplanmış bir noktanın belirli değerlerini hesaplamaya çalışıyorum. Bu yüzden değerleri hesaplamak için bir denklem yazmak için alan hesap makinesini kullanıyorum.

Bu denklemi kaydetmenin bir yolu var mı, eğer yeni bir işe başlarsam ve tekrar yazmam gerekmiyorsa?

Bir dizi nokta için stilleri ve sembolojiyi nasıl kaydettiğinize benzer bir şey.


Bu iyi bir özellik isteği ve eklemek oldukça kolay olurdu.
Nathan W

Yanıtlar:


5

QGIS, alan hesaplayıcısında kullanılan son denklemi "Son" sekmesi altına kaydeder, burada çift tıklatarak yeniden kullanabilirsiniz

tarla img


OP'nin daha sonra başka denklemleri kullanmaması durumunda bu doğrudur. Ancak OP yeni denklemler kullandığında zamanla kaybolacaktır. RecentKonteyner sadece geçici olduğunu.
ahmadhanb

5

Denkleminizi yeni bir fonksiyona yazabilirsiniz ve sonra sadece hesaplamayı yeniden uygulamak için fonksiyonu çağırmanız gerekir.

Alan hesap makinesini açın, Function Editorsekmeye tıklayın, new fileardından işlevi düzenleyin. Seçin load. okBu noktada kullanılamayacağını unutmayın .

ExpressionSekmeye geri dönün , customişlev grubunu seçin ve işlevinize çift tıklayın. Güncellenecek alanı seçin ve tuşuna basın ok.


Yalnızca alan değerlerini ve sabitlerini kullanmak istiyorsanız, ile başlayan varsayılan işlev imzasını düzenleyebilirsiniz value1. Örneğimde onu kaldırdım, ancak bu alanları yeni argümanlar geçirmek için kullanabilirsiniz.

Daha sonra özellik alanı değerlerine feature["fieldName"].... kullanarak erişebilirsiniz. Bu işlevi yalnızca söz konusu alanları içeren katmanlarda çağırmaya dikkat edin!

@qgsfunction(args='auto', group='Custom')
def funcTestCalc( feature, parent):
    return feature["fieldA"]+feature["fieldB"];

resim açıklamasını buraya girin resim açıklamasını buraya girin


3

@LaughU'nun çözümüne ek olarak, herhangi bir alan hesap makinesi işlemini grafik bir modele dahil edebilir ve daha sonra modeli kaydedip çalıştırabilirsiniz. Bu, ancak sütun adlarınızın her zaman aynı olmasını gerektirir.


2

Varolan bir katmana yeni bir nokta ekliyorsanız ve o nokta için diğer tüm noktalarla aynı hesaplamayı yapmak istiyorsanız, işte size iki kullanışlı özellik:

Sanal Alan

Sanal alan, her yeni özellik için bir ifadeyi otomatik olarak hesaplar. Ayrıca düzenli olarak güncellenir. Örneğin, "enlem" adı verilen sanal bir alan için ifadeyi kullanabilirsiniz $y.

Sanal Alanların Artıları ve Eksileri:

  • Yeni bir nokta eklediğinizde, otomatik olarak ifadenin çıktısı bu alana eklenir.
  • İfade ifadesi her değiştiğinde otomatik olarak güncellenir. Dolayısıyla, örnekteki noktayı taşırsanız, "enlem" değeri otomatik olarak değişir.
  • Sanal alan değerini düzenleyemezsiniz.
  • Sanal alanlar, şekil dosyasının bir parçası olarak (veya katmanınız hangi formatta olursa olsun) değil, QGIS proje dosyasının bir parçası olarak kaydedilir. Dolayısıyla, katmanı farklı bir projede açarsanız, sanal alanlarına sahip olmaz.

Varsayılan Alan Değeri ile Normal Alan

Bir alanı, bir ifadeye dayalı olarak varsayılan bir değere sahip olacak şekilde ayarlayabilirsiniz. Yeni bir nokta oluşturduğunuzda, özniteliği varsayılan değerle otomatik olarak doldurulur. Özellik değerini değiştirebilirsiniz. Otomatik olarak güncellenmez. *

Varsayılan Alan Değerlerinin Artıları ve Eksileri:

  • Yeni bir nokta eklediğinizde, otomatik olarak ifadenin çıktısı bu alana eklenir.
  • Otomatik olarak güncellenmez. Örnekte bu, mevcut bir noktayı taşıdıysanız, "enlem" değerinin güncellenmeyeceği anlamına gelir.
  • Bu alanın değerini değiştirebilirsiniz.
  • Şekil dosyasının bir parçası olarak kaydedilir. Dolayısıyla, katmanı farklı bir projede açarsanız, öznitelik tablosunda bu alana sahip olacaktır.

* QGIS 3.2'de varsayılan alan değerleri (isteğe bağlı olarak) "güncellemeye varsayılan değeri uygula" olarak ayarlanabilir. Bu seçenekle, varsayılan değerin olduğu bir noktayı taşırsanız $y, geçerli değer yeni y koordinatı ile değiştirilir.


Ben varsayılan alan değeri QGIS 3.2 otomatik güncelleme için ayarlanabilir düşünüyorum.
26_18

@she_weeds Bunu işaret ettiğiniz için teşekkür ederiz. Cevabımı bu bilgiyi içerecek şekilde güncelleyeceğim.
csk
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.