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, 15:51, (Ten post był ostatnio modyfikowany: 23-04-2017, 16:39 {2} przez tomalos.)
#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?
09-09-2017, 23:35,
#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" )
20-09-2017, 19:45,
#3
RE: Wyciąganie części tekstu z kolumny atrybutów w kalkulatorze pól
Ta metoda działa przepięknie! A robiłem to w Calcu formułą na kilka linijek Wink


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  dodawanie kolumny atrybutów z innej warstwy lukasz0830 2 494 02-08-2018, 08:09
Ostatni post: lukasz0830
  Wyodrębnienie konkretnej części mapy KarolinaDko 2 484 30-07-2018, 20:01
Ostatni post: jerresso
Question Złączenie dwóch przylegających części poligonu w jeden Michau 2 700 03-06-2018, 13:01
Ostatni post: [wiki]
  Zawijanie tekstu w tabeli atrybutów wycinka 3 1 835 12-01-2018, 14:04
Ostatni post: Italiano
  Analizy grupowe w kalkulatorze pól tomalos 3 4 789 14-10-2016, 10:10
Ostatni post: Binko
  dodawanie id w kalkulatorze Mazur 3 4 752 03-10-2016, 21:31
Ostatni post: Binko
  problem w kalkulatorze pól hotlos 2 4 827 20-01-2016, 15:55
Ostatni post: hotlos
  wycięcie fragmentu tekstu z kolumny w tabeli atrybutów kabanoska 1 6 047 03-10-2014, 13:31
Ostatni post: kabanoska
  Zamiana części tekstu w tabeli andrutt 2 6 108 12-02-2014, 21:23
Ostatni post: andrutt
  Usuwanie /rozdzielanie części pojedyńczej lini norek_norek 1 4 708 05-11-2013, 21:49
Ostatni post: milena

Skocz do: