Daugiau

QGIS atitikimas kintamajam kintamajam ArcGIS?

QGIS atitikimas kintamajam kintamajam ArcGIS?


Atlieku tam tikrą QGIS analizę ir turiu kartoti taškų sluoksnį, kiekvieną tašką buferizuoti ir eksportuoti į naują sluoksnį. Noriu, kad naujuose sluoksnių pavadinimuose būtų reikšmės iš lauko mano atributų lentelėje.

Sukūriau GIS patogų teksto lauką be tarpų:„GISNAME“. Aš naudoju fiksuoto atstumo buferio įrankį ir spusteliu mygtuką pakartoti sluoksnį. Ar yra būdas priversti kiekvieną eksportuojamą pavadinimą būtiBuferis_ [vertė iš lauko GISNAME] .shp?

„ArcGIS“ norėčiau tai pasiekti naudodamas „modelbuilder“ ir sukūręs kintamąjį pakeitimą. Aš naudoju QGIS ir norėjau sužinoti, ar galiu tai padaryti čia?


Tikriausiai tai galėtumėte padaryti naudodami „QGIS“ modeliuotoją, tačiau šis kodas, tikėkimės, turėtų padaryti tai, ko ieškote (išbandyta „QGIS 2.8.2-Wien“).

Tai galite paleisti iš „Python“ konsolė arba pridėkite jį kaip scenarijų Apdorojimo įrankių dėžutė.

Vienintelis dalykas yra pridėti darbalaukyje aplanką „Rezultatai“ (arba pakeisti scenarijaus kelią) į vietą, kurioje norite išsaugoti formos failus. Be to, parametrai, kuriuos tikrai reikia pakeisti, yra Atstumas (100) ir Segmentai (10) paskutinėje eilutėje, ko jums reikia:

importuoti apdorojimą, OS iš os.path importuoti expanduser home = expanduser ("~") path_res = home + "/ Desktop / Results //" # Nustato katalogą išvesties sluoksniui = qgis.utils.iface.activeLayer () dėl feat sluoksnyje .getFeatures (): idx = layer.fieldNameIndex ('GISNAME') # Randa lauką 'GISNAME' value = feat.attributes () [idx] # Gauna lauko reikšmę output_name = "Buffer_" + str (value) # Konvertuoja reikšmę į eilutę norint įterpti jį kaip failo pavadinimą # Ištraukite kiekvieną tašką naudodami atsitiktinio ištraukimo įrankį output_0 = processing.runalg ("qgis: randomextract", sluoksnis, 0, 1, Nėra) # Buferina ištrauktą tašką ir išsaugo išvestį kaip shapefile output_1 = apdorojimas. runalg ("qgis: fixeddistancebuffer", output_0 ['OUTPUT'], 100, 10, False, path_res + output_name + ".shp")

Yra tam tikras „įsilaužimo“ būdas pasiekti panašų.

Yra funkcija „Padalinti vektorių“ ir tai, ką iš tikrųjų norite pasiekti, ar ne?

Taigi, sukurkite buferius naudodami įrankių dėžę, paprastai jūsų laikinasis sluoksnio pavadinimas turėtų būti „Buferis“. Kitu atveju tiesiog pervardykite jį sluoksnio savybėse / Bendra.

Tada pervardykite savo lauką „GISNAME“ į „_“ naudodami „Table Manager“ papildinį.

Kai dabar naudojate funkciją „Padalyti vektorių“, pasirinkite sluoksnį „Buferis“ ir lauką „_“ ir pasirinkite tikslą.

Rezultatas bus failai pavadinti: "Buferis__A", "Buferis__B" ... du kartus "_".

Taip yra todėl, kad funkcija paima sluoksnio pavadinimą, lauko pavadinimą ir atributą ir tarp jų sukuria pabraukimus, kad sugeneruotų rezultato pavadinimą. Jei galite gyventi su dviem „_“, tai yra kelias.