计算图层中所有线要素的长度

#QGIS内置的python console可以不用导入以下两库
from qgis.core import *
import os
import qgis.utils
"""
#获取指定名称图层(当QGIS项目打开时,可以使用下面语句读取图层)
layer = QgsProject.instance().mapLayersByName("topo_centerroad")[0]
"""
qgs = QgsApplication([], False)
QgsApplication.setPrefixPath("D:\\QGIS 3.10\\apps\\qgis-ltr", True)
QgsApplication.initQgis()
TEST_DATA_DIR = 'E:\QGISlearning\ch02\qgis_sample_data\shapefiles'
#读取shp文件获取图层
lines_shp = os.path.join(TEST_DATA_DIR, 'pipelines.shp')
layer = QgsVectorLayer(lines_shp, 'Lines', 'ogr')

#定义坐标转换
transf = QgsCoordinateTransform(QgsCoordinateReferenceSystem("EPSG:4326"),QgsCoordinateReferenceSystem("EPSG:2964"), QgsProject.instance())
 
#计算图层要素长度
for feature in layer.getFeatures():
    #获取图层要素属性
    id=str(feature.attribute('cat'))
    #获取图层要素几何
    geom=feature.geometry()
    #图层几何坐标转换
    # geom.transform(transf)
    # print(geom)
    #要素长度计算
    length=geom.length()
    print('**'*2)
    print("道路ID "+id+":"+str(length)+'米')

结果:


****
道路ID 1.0:608789.6496412482米
****
道路ID 2.0:1147175.4567215282米
****
道路ID 3.0:622630.3940779114米
****
道路ID 4.0:26352.757314209925米
****
道路ID 5.0:42486.91579770823米
****
道路ID 6.0:33104.52161207865米
****
道路ID 7.0:66314.51195246716米
****
道路ID 8.0:111260.76559825189米
****
道路ID 9.0:25127.527251645937米
****
道路ID 10.0:10478.523501702788米
****
道路ID 11.0:50466.169491405264米
****
道路ID 12.0:12015.354109379707米
****
道路ID 13.0:205269.40181146655米
****
道路ID 14.0:102687.52976377412米
****
道路ID 15.0:34020.086316873116米
****
道路ID 16.0:110007.59990998218米
****
道路ID 17.0:28043.924637852975米
****
道路ID 18.0:16072.255350293972米
****
道路ID 19.0:812995.6527194163米
****
道路ID 20.0:333038.849123787米
****
道路ID 21.0:136835.55004590418米
****
道路ID 22.0:11683.531464582047米
****
道路ID 23.0:8942.558231631741米
****
道路ID 24.0:5415.394833873507米
****
道路ID 25.0:7735.175336535882米
****
道路ID 26.0:10807.321745517604米
****
道路ID 27.0:91840.06049354322米
****
道路ID 28.0:7155.873369241077米
****
道路ID 29.0:7917.900686527179米
****
道路ID 30.0:30676.65425733745米
****
道路ID 31.0:26404.325561182268米
****
道路ID 32.0:6806.740036146522米
****
道路ID 33.0:899.0796787910455米
****
道路ID 34.0:16554.28177831368米
****
道路ID 35.0:63694.176867538634米
****
道路ID 36.0:4222.897927181215米
****
道路ID 37.0:28495.660776716046米
****
道路ID 38.0:71217.32212356049米
上一篇:开源风险专题研究


下一篇:用手机玩转GIS!这些你常用的GIS软件竟然都有手机版