Beregning af længde af linjer, og gruppering ud fra en attribut

Funktioner og processering relateret til vectordata
Jeanne MHJ
Indlæg: 4
Tilmeldt: tirs 23. maj 2017 09:02
Geografisk sted: Allerød Kommune

Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf Jeanne MHJ » tirs 13. jun 2017 14:37

Hej

Jeg skal forsøge at beregne længden på nogle ruter. Det skal være den samlede længde for de forskellige ruter. Jeg ved hvordan jeg gør det med en simpel SQL i MapInfo, hvor jeg kan summere på objekternes længde og gruppere på en attribut (rutenavnet), men jeg kan ikke finde ud af at gøre det i QGIS.

Spatial Query kræver at man har et lag med polygoner som udgør afgræsningen for ruterne, og Feltberegneren beregner for hver enkelt linjestykke, det giver en del ekstra arbejde bagefter hvis jeg skal sidde og lægge tallene sammen for 360 objekter.

Der må være et eller andet smart værktøj jeg overser.

mvh Jeanne
0 x
miewinstrup
Indlæg: 15
Tilmeldt: ons 2. mar 2016 09:34

Re: Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf miewinstrup » tirs 13. jun 2017 14:51

Hej Jeanne,
Her er et eksempel hvor summen af ruterne summeres i feltet 'sum' for hver elev (f_id):
Sum_af_værdier_MieSeptima.png


Håber det kan bruges.
Mvh. Mie
Du har ikke de nødvendige tilladelser til at se vedhæftede filer i dette indlæg.
0 x
Jeanne MHJ
Indlæg: 4
Tilmeldt: tirs 23. maj 2017 09:02
Geografisk sted: Allerød Kommune

Re: Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf Jeanne MHJ » ons 14. jun 2017 08:51

Hej Mie

Ja, det er mulighed, bare ikke den meget simple med et tryk og videre. Jeg har ikke længden på hvert enkelt linjestykke som attribut, så jeg skal først regne længde ud, og derefter summere det. Men hvis det er den eneste måde at gøre det på, så er det jo sådan det er.

mvh Jeanne :)
0 x
Brugeravatar
Danny Morck
Site Admin
Indlæg: 67
Tilmeldt: man 29. feb 2016 22:35
Geografisk sted: Herlev
Kontakt:

Re: Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf Danny Morck » ons 14. jun 2017 21:28

Jeanne MHJ skrev:Hej Mie

Ja, det er mulighed, bare ikke den meget simple med et tryk og videre. Jeg har ikke længden på hvert enkelt linjestykke som attribut, så jeg skal først regne længde ud, og derefter summere det. Men hvis det er den eneste måde at gøre det på, så er det jo sådan det er.

mvh Jeanne :)


Men hvert liniestykke regner du vel bare ud igen vha "§length" funktionen?...og smider det ind i tabellen og så har du det.
0 x
Bestyrelsesmedlem
QGIS Brugergruppe Danmark
Natur, IT & GIS, Egedal Kommune
Jeanne MHJ
Indlæg: 4
Tilmeldt: tirs 23. maj 2017 09:02
Geografisk sted: Allerød Kommune

Re: Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf Jeanne MHJ » tors 15. jun 2017 08:51

Ja, lige præcis.

Det er bare to step, i stedet for MapInfos et step. Der mangler en god SQL query til QGIS

mvh Jeanne :)
0 x
daniel.arnason
Indlæg: 14
Tilmeldt: tirs 8. mar 2016 10:35
Geografisk sted: Egedal kommune

Re: Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf daniel.arnason » tors 15. jun 2017 10:03

Hvis dine data ligger i en database, så er der en sql-forespørgsel-opbygger, som ligner fuldstændig den fra MapInfo.......Det kræver selvfølgelig, at de data du arbejder på ligger i en database.

Man kan også bruge Python consollen i QGIS til den slags. Det er muligvis lidt avanceret, men det er rigtig sjovt at lege med :)

Ellers kan du bruge plugin'et Group Stats. Det er rigtig godt til den slags analyser.
0 x
Daníel Örn
Egedal kommune
daniel.arnason
Indlæg: 14
Tilmeldt: tirs 8. mar 2016 10:35
Geografisk sted: Egedal kommune

Re: Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf daniel.arnason » tors 15. jun 2017 10:37

Jeg kunne ikke lade være med at tjekke, om jeg ikke kunne finde ud af det i python consollen :)

Man kan køre det her i python consollen. Man skal bare huske at ændre kolonnenavnet og kolonnens index. Det virkede i hvert fald her hos mig :)

Kode: Vælg alt

# Line_lyr er det lag, som er valgt i lagvinduet
line_lyr = iface.activeLayer()

# Erstat 'vejstistatus' med navnet paa den kolonne, som skal grupperes
idx = line_lyr.fieldNameIndex('vejstistatus')
unique_values = line_lyr.uniqueValues(idx)

#laver en dictionary med unikke vaerdier fra den valgte kolonne og saetter vaerdien til 0
length_dict = {k: 0 for k in unique_values }

#finder alle objekter i det aktive lag
features = line_lyr.getFeatures()

# koerer igennem alle objekter og finder geometriens laengde og laegger den til det rigtige sted i length_dict
for f in features:
    type = f.attributes()[1] # Her skal man vaelge det rigtige index for kolonnen. Det starter med 0, saa kolonne nr to har index 1
    for k, v in length_dict.items():
        if k == type:
            length_dict[k] = v + f.geometry().length()

# Printer resultaterne ud i python consollen i qgis, saa man kan se reulstaterne
for k, v in length_dict.items():
    print k, ': ', v
0 x
Daníel Örn
Egedal kommune
Jeanne MHJ
Indlæg: 4
Tilmeldt: tirs 23. maj 2017 09:02
Geografisk sted: Allerød Kommune

Re: Beregning af længde af linjer, og gruppering ud fra en attribut

Indlægaf Jeanne MHJ » tors 15. jun 2017 13:11

Tak Daniel! :)
0 x

Social Media

       

Tilbage til "Vector"

Hvem er online

Brugere der læser dette forum: Ingen og 0 gæster