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.