Daugiau

QGIS užstringa / nepavyksta, kai Python kilpoje ištirpinami keli formos failai

QGIS užstringa / nepavyksta, kai Python kilpoje ištirpinami keli formos failai


Aš naudoju QGIS 2.10 (bet aš taip pat bandžiau 2.8), norėdamas peržvelgti visus aplanko formos failus (tuos, kurie baigiasi .shp) ir atlikti kiekvieno iš jų ištirpimo funkciją. Tačiau kai paleidžiu šį kodą QGIS, jis užstringa programai. Jei paleidžiu kodą už QGIS ribų, funkcija QgsGeometryAnalyzer (). Ištirpinti grąžina „False“.

Keista, bet tie patys procesai veikia ne cikle. Pvz., Jei įkeliu formos failą naudodamas „QgsVectorLayer“ funkciją ir atlikdamas ištirpimą naudodamas „QgsGeometryAnalyzer“ (). Ištirpimo funkciją, viskas veikia tinkamai.

Ar čia ko man trūksta?

importuoti os iš qgis.core importuoti * iš qgis.analysis importuoti * failus = os.listdir ('C: / Temp') failams failuose: jei failas [-3:] == 'shp': layer = QgsVectorLayer (failas , failas [: - 4], 'ogr') QgsGeometryAnalyzer (). ištirpsta (sluoksnis, 'C: / Temp / Dissolved /' + failas [: - 4] + "_ ištirpęs")

* Be to, turėčiau pažymėti, kad bandžiau tą patį procesą atlikti su GRASS naudodamas komandą v.dissolve. Deja, tai nesuderina / neištirpdo daugiakampių, kurie nepersidengia. Man reikia, kad visi formos failo daugiakampiai taptų vienu daugiasluoksniu daugiakampiu.


Niekada nenaudojauQgsGeometryAnalyzer ()metodas anksčiau (turėčiau pažvelgti į tai), bet galėtumėte naudoti šį kodą, kuris, manau, turėtų daryti tai, ką daro jūsų kodas (išbandė tai „Python Console“, QGIS 2.8.2):

importo apdorojimas, os, glob result_path = "C: Temp  Dissolved " os.chdir ("C: Temp ") fname in glob.glob ("*. shp"): name = list (os .path.splitext (fname)) vardas [0] = vardas [0] + "_dissolved" newName = "" .join (vardas) processing.runalg ('qgis: ištirpinti', fname, 'True', ", result_path + newName)

Tikiuosi tai padės!


Žiūrėti video įrašą: 5 - Create Shapefile From Coordinates using QGIS Python and OGR - Garmin API