Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Wyciąganie części tekstu z kolumny atrybutów w kalkulatorze pól
23-04-2017, 03:51 PM (Ten post był ostatnio modyfikowany: 23-04-2017 04:39 PM przez tomalos.)
Post: #1
Wyciąganie części tekstu z kolumny atrybutów w kalkulatorze pól
Jest sobie warstwa wektorowa z budynkami baśniowej krainy, każdy budynek to oddzielny punkt ale niektóre z nich są pojedynczymi a inne należą do osad. Powiedzmy, że tabela wygląda tak:

Kod:
ID      TYP          LICZBA BUD.  RODZAJ                                                                                WYSOKOSC BUD.
1329_0  pojedynczy   1            karczma                                                                               6
1330_1  osada1       4            1330_1:budynek mieszkalny; 1330_2:kuźnia; 1330_3:budynek mieszkalny; 1330_4:stajnia   1330_1:3; 1330_2:4; 1330_3:3; 1330_4:4
1330_2  osada1       4            1330_1:budynek mieszkalny; 1330_2:kuźnia; 1330_3:budynek mieszkalny; 1330_4:stajnia   1330_1:3; 1330_2:4; 1330_3:3; 1330_4:4
1330_3  osada1       4            1330_1:budynek mieszkalny; 1330_2:kuźnia; 1330_3:budynek mieszkalny; 1330_4:stajnia   1330_1:3; 1330_2:4; 1330_3:3; 1330_4:4
1330_4  osada1       4            1330_1:budynek mieszkalny; 1330_2:kuźnia; 1330_3:budynek mieszkalny; 1330_4:stajnia   1330_1:3; 1330_2:4; 1330_3:3; 1330_4:4
1332_0  pojedynczy   1            młyn-wodny                                                                            7
1343_1  osada2       2            1343_1:inna pracownia; 1343_2:budynek mieszkalny                                      1343_1:5; 1343_2:4
1343_2  osada2       2            1343_1:inna pracownia; 1343_2:budynek mieszkalny                                      1343_1:5; 1343_2:4
1355_0  pojedynczy   1            młyn-wiatrak                                                                          17
1356_0  pojedynczy   1            szałas wiedźmy                                                                        2

A potrzebuję takiej:

Kod:
ID        TYP         LICZBA BUD.  RODZAJ                WYSOKOSC BUD.
1329_0    pojedynczy  1            karczma               6
1330_1    osada       4            budynek mieszkalny    3
1330_2    osada       4            kuźnia                4
1330_3    osada       4            budynek mieszkalny    3
1330_4    osada       4            stajnia               4
1332_0    pojedynczy  1            młyn-wodny            7
1343_1    osada       2            inna pracownia        5
1343_2    osada       2            budynek mieszkalny    4
1355_0    pojedynczy  1            młyn-wiatrak          17
1356_0    pojedynczy  1            szałas wiedźmy        2

Domyślam się, że da się to zrobić dla kolumn RODZAJ i WYSOKOSC BUD. za pomocą funkcji regexp_substr i kolumny ID. Problem polega na tym, że na wyrażeniach regularnych się nie znam niestety. Ktoś podpowie?
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
09-09-2017, 11:35 PM
Post: #2
RE: Wyciąganie części tekstu z kolumny atrybutów w kalkulatorze pól
Pomocna może być własna funkcja. (Wyrażeniami też pewnie można by to sprytnie zrobić)

Kod:
from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def fairytale_buildings(k, p, feature, parent):
    try:
        d = {z:y for z,y in [x.split(':') for x in p.split('; ')]}
        if k in d: return d[k]
        else: return p
    except: return p

Przykładowe użycie:
fairytale_buildings( "ID_1" , "WYSOKOSC B" )
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
Odpowiedz 


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Analizy grupowe w kalkulatorze pól tomalos 3 1 982 14-10-2016 10:10 AM
Ostatni post: Binko
  dodawanie id w kalkulatorze Mazur 3 2 159 03-10-2016 09:31 PM
Ostatni post: Binko
  problem w kalkulatorze pól hotlos 2 2 914 20-01-2016 03:55 PM
Ostatni post: hotlos
  wycięcie fragmentu tekstu z kolumny w tabeli atrybutów kabanoska 1 4 276 03-10-2014 01:31 PM
Ostatni post: kabanoska
  Zamiana części tekstu w tabeli andrutt 2 3 964 12-02-2014 09:23 PM
Ostatni post: andrutt
  Kalkulator- wyciąganie atrybutów z innych warstw. randyX 1 4 558 26-01-2013 09:26 PM
Ostatni post: p0cisk
  zamiana atrybutów po usunięciu kolumny w tabeli atrubutów Jotek 4 9 762 22-11-2012 02:21 PM
Ostatni post: Jotek
  Kalkulator rastra - wyciąganie maksymalnych wartości Grzehoow 1 5 751 31-07-2012 05:02 PM
Ostatni post: borys
  Wyciąganie współrzędnych z warstwy zebro 2 6 525 20-06-2012 12:59 PM
Ostatni post: zebro
  Jak zmienić nazwy pól w tabeli atrybutów? koberek 3 9 518 04-12-2011 05:10 PM
Ostatni post: maciek

Skocz do: