QGIS'deki toplu Refactor Alanları aracı “alan eşleme” sözdizimi nedir?


10

QGIS'de, İşleme Araç Kutusunda şu güzel araç "Refactor Fields" vardır:

Refactor Alanları aracı

Tek bir katmanda kullanmak oldukça basittir.

Ancak, toplu modda kullanmayı planladığınızda, "Alan eşleme" metin kutusu görülebilir . Orada kullanılacak sözdiziminin bir örneğini arıyorum . Henüz belirli bir belge bulamadım.

Refactor kesikli


GUI'den bir refactoring çalıştırdıktan sonra, İşleme -> Geçmiş menüsünde (Ctrl + Alt + H)
kadarivan

Yanıtlar:


7

Bunu yapmak çok rahat değil, ancak aşağıdaki metin kutusu için gerekli sözdizimi (sadece netlik uğruna birkaç satıra yazıyorum):

{'expression': u'type the expression here',
 'length': <type the length>,
 'type': <code of the type>,
 'name': u'type the field name here',
 'precision': <type the precision>}

Örneğin (süslü parantez kullanmayı unutmayın):

{'expression': u'"FLAG1"+"FLAG2"',
 'length': 20, 'type': 6,
 'name': u'FLAG1',
 'precision': 5}

Virgülle ayırarak, giriş alanı sayısı kadar yukarıdaki gibi bir satır yazmanız gerekir. Örneğin, katmanınız üç alan içeriyorsa:

{'expression': u'"FLAG1"+"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG1', 'precision': 5}, {'expression': u'100*"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG2', 'precision': 5}, {'expression': u'"100-"FLAG2"', 'length': 20, 'type': 6, 'name': u'FLAG3', 'precision': 5}

ve işe yaramalı (benim için çalıştı).

Bu sözlüğe dayalı sözdizimini kullanmaktan kaçınabileceğinizi ve doğrudan gerekli değerleri kullanabileceğinizi lütfen unutmayın . Örneğin, ilk örneğe istinaden şunları kullanabilirsiniz:

{u'"FLAG1"+"FLAG2"', 20, 6, u'FLAG1', 5}

Bu sözdizimini kullanmazsanız, aşağıdaki hata gösterilir:

Eksik parametre değeri: Alan eşleme (satır 1)


2
<Tür kodunun> ne anlama geldiğini açıklayabilir misiniz? (Açılır seçeneklerde 3. olduğu gibi) dize için varsayarak 3 kullanmayı denedim ama bir hata var: 'int' nesnesi ' getItem ' özniteliği yok Daha fazla bilgi için günlüğü bakın. Kullandığım kod: {'expression': u '"FLAG"', 'length': 0, ', katmanlarımdan biri için {u' "FLAG" ', 0, 3, u'FLAG', 0}. ': 3,' name ': u'FLAG', 'duyarlık': 0} yazın.
JAT86

@ JAT86 Veri türünü tanımlayan sayıdır (örn. İnt, string vb.). Ne yazık ki, onlar için bir referans bulamadım, ancak en çok kullanılan türlerin değerlerini hatırlamalıyım: int için 2 , double için 6 ve string için 10 . Buna ek olarak, belki 0de alan uzunluğunu belirtmemelisiniz (en azından 1!). Lütfen, sorunu çözdüğünüzü bana bildirin.
mgri

Hızlı yanıt için teşekkürler. Belki de toplu işlem düşündüğümden çok daha karmaşıktır. Uzunluk için en az 1 ve kod türü için 10 kullanmayı denedim: {u '"FLAG"', 1, 10, u'FLAG ', 0} Yine de hata ortaya çıkıyor:' int 'nesnesinin özelliği yok' getItem 'Daha fazla ayrıntı için günlüğe bakın.
Katmanım

@ JAT86 Aracı GUI'den çalıştırmak herhangi bir sorun veriyor mu?
mgri

GUI ile tek bir katmanı kastediyorsanız, hayır problemi yoktu. FLAG sütunu, "Seçili alanı sil" i tıkladıktan sonra başarıyla silindi ve "Yeniden Düzenlendi" adlı yeni bir katmana kaydedildi.
JAT86

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.