Daha çox

Niyə QgsFeatureIterator mənim tək skriptimdə çökür?

Niyə QgsFeatureIterator mənim tək skriptimdə çökür?


Ubuntu -da qgis 2.10 -da müstəqil bir skript yazmağa çalışıram, bashdan qaçanda çökən, lakin qgis masaüstü mühitinin içərisində yaxşı işləyən bir skript yazmışam. Ssenari belədir:

qgis.core saytından #!/usr/bin/python2.7 platformadan idxal * python_versiondan çap python_version () # qgis -in harada qurulduğunu təmin etmək üçün QgsApplication.setPrefixPath ("/usr", True) # yük təminatçıları QgsApplication.initQgis () input_file = "/path/to/shape/file.shp" input_layer = QgsVectorLayer (input_file, "input layer", "ogr") QgsMapLayerRegistry.instance (). addMapLayer (input_layer) print str (input_layer.featureCount ()) input_layer.dataProvider (). crs (). input_layer.getFeatures () funksiyası üçün authid (): çap "salam" keçmək QgsApplication.exitQgis ()

Qgis DE -dən qaçdığımda alıram:

2.7.6 105777 EPSG: 2193 salam

Başdan qaçanda alıram:

2.7.6 105777 EPSG: 2193 Segmentasiya xətası (nüvəsi boşaldılmışdır)

Güman edə biləcəyim tək şey, shebang -də tərcüməçi seçimimdir, amma tapa biləcəyim python icraedicilərindən heç biri heç bir fərq yaratmır? və mümkün görünməyən versiya funksiyasına cavab verildi. Shebang üçün də cəhd etdim

#!/usr/bin/env python

eyni nəticə ilə.

Sənədləri burada müstəqil skriptlərdə gördüm və buradan quraşdırmanın doğru (?) Yolunu anladım, amma bu qəzanın səbəbini bilmədim.


Joseph -in vəd etməsi sayəsində tətbiq sinifləri üçün arayış üçün sənədlərə baxdım. Skriptinizdə qgis funksiyalarından istifadə etmək üçün qgis proqram sinif istinad obyekti əlavə etməlisiniz.

app = QgsApplication ([], False, None)

sonra

QgsApplication.initQgis ()

xətt və

app.exit ()

Sonda.

Sənədlər parametrləri təsvir edir, lakin skriptin python shell skripti kimi işlədilməsi üçün onları göstərildiyi kimi doldura bildim.

Yazdığınız skript üçün arqumentlərin burada təsvir edildiyi kimi qabıqdan skriptə verilə biləcəyini unutmayın. Wewa cavabını istifadə etdim.

Ayrıca, bu SE sualındakı Ole -nin bir təklifi sayəsində indi *hər hansı bir xüsusi pyQGIS prosesini/skriptini/funksiyasını paralel olaraq işlədə bilərəm (yalnız yuxarıda göstərilən SE sualına cavabımda təsvir edildiyi kimi qabıqda mövcud olan funksiyalar deyil) skript üstəgəl buradakı cavab.

Bəlkə də eyni və ya bənzər şeyi edən hər kəs bunu faydalı hesab edə bilər. Növbəti addımım bu paralel prosesləri bir serverə (təsərrüfata) ötürmək və xüsusi skriptlərimi daha da sürətləndirməkdir.


Videoya baxın: PyQGIS - Add a vector layer