Lebih banyak lagi

Mengira panjang garisan menggunakan PyQGIS

Mengira panjang garisan menggunakan PyQGIS


Saya dapati artikel ini yang menerangkan "cara QGIS GUI" untuk mengira panjang garis http://www.qgistutorials.com/en/docs/calculating_line_lengths.html

Bagaimana saya boleh mengira panjang satu baris (ciri) dalam lapisan vektor dengan kod Python?

Sebagai contoh, saya ingin mengetahui panjang garis kuning.


Dari Dokumen QGIS: Pengendalian Geometri, anda boleh menggunakan kod berikut untuk mendapatkan panjang garis yang dipilih:

layer = qgis.utils.iface.activeLayer () features = layer.selectedFeatures () untuk f in features: geom = f.geometry () print "Length:", geom.length ()

Walau bagaimanapun, kod yang hebat hanya berfungsi untuk lapisan yang dipilih dan hanya mencetaknya. Dengan beberapa pertolongan dari catatan lain dan @Joseph saya mengubahnya menjadi kod yang menambahkan atribut ke semua lapisan dalam projek anda dengan panjangnya.

dari PyQt4.QtCore import QVariant untuk lapisan dalam QgsMapLayerRegistry.instance (). mapLayers (). values ​​(): features = layer.getFeatures () for f in features: geom = f.geometry () leng = geom.length () res = layer.dataProvider (). addAttributes ([QgsField ("Length", QVariant.Int)]) layer.updateFields () fieldIndex = layer.dataProvider (). fieldNameIndex ("Length") attrFeatMap = {} attrMap = {fieldIndex: leng} untuk ciri dalam layer.getFeatures (): attrFeatMap [feature.id ()] = attrMap layer.dataProvider (). changeAttributeValues ​​(attrFeatMap)

Tonton videonya: Introduction to PyQGIS, the Python environment in QGIS