#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.0608789.6496412482****
道路ID 2.01147175.4567215282****
道路ID 3.0622630.3940779114****
道路ID 4.026352.757314209925****
道路ID 5.042486.91579770823****
道路ID 6.033104.52161207865****
道路ID 7.066314.51195246716****
道路ID 8.0111260.76559825189****
道路ID 9.025127.527251645937****
道路ID 10.010478.523501702788****
道路ID 11.050466.169491405264****
道路ID 12.012015.354109379707****
道路ID 13.0205269.40181146655****
道路ID 14.0102687.52976377412****
道路ID 15.034020.086316873116****
道路ID 16.0110007.59990998218****
道路ID 17.028043.924637852975****
道路ID 18.016072.255350293972****
道路ID 19.0812995.6527194163****
道路ID 20.0333038.849123787****
道路ID 21.0136835.55004590418****
道路ID 22.011683.531464582047****
道路ID 23.08942.558231631741****
道路ID 24.05415.394833873507****
道路ID 25.07735.175336535882****
道路ID 26.010807.321745517604****
道路ID 27.091840.06049354322****
道路ID 28.07155.873369241077****
道路ID 29.07917.900686527179****
道路ID 30.030676.65425733745****
道路ID 31.026404.325561182268****
道路ID 32.06806.740036146522****
道路ID 33.0899.0796787910455****
道路ID 34.016554.28177831368****
道路ID 35.063694.176867538634****
道路ID 36.04222.897927181215****
道路ID 37.028495.660776716046****
道路ID 38.071217.32212356049
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐