• 利用python+arcgis将模型生成的二值预测结果图转化为线矢量并计算长度


    1.模型生成的二值预测图如图所示(已将原始数据的坐标系通过gdal转到预测图中)

    2.采用如下代码将其转化为面矢量

     1 def polygonize(inImgPath, outImgPath):
     2     inImg = CXImage()
     3     inImg.Open(inImgPath)
     4     srcband = inImg.proDataset.GetRasterBand(1)
     5     prj = osr.SpatialReference()
     6     prj.ImportFromWkt(inImg.proDataset.GetProjection())
     7     maskband = srcband.GetMaskBand()
     8 
     9     driver = ogr.GetDriverByName("ESRI Shapefile")
    10     out_datasource = driver.CreateDataSource(outImgPath)
    11     out_layername = inImgPath[:-4]
    12     out_layer = out_datasource.CreateLayer(out_layername, srs=prj)
    13     out_fieldname = 'DN'
    14     field_defn = ogr.FieldDefn(out_fieldname, ogr.OFTInteger)
    15     out_layer.CreateField(field_defn)
    16     out_field = 0
    17     prog_func = test()
    18     options = []
    19 
    20     gdal.Polygonize(srcband, maskband, out_layer, out_field, options, callback=prog_func)
    21 
    22     return
    23 
    24 if __name__ == '__main__':
    25     # 单张图片
    26     # input_image_path = r"C:UsersAdminDesktop6623_re.tif"
    27     # output_image_path = r"C:UsersAdminDesktop6623_re.shp"
    28     # polygonize(input_image_path, output_image_path)

    3.利用Arcgis -> ArcToolbox -> 投影和变换 -> 投影/批量投影 ,将矢量从地理坐标系转化为投影坐标系(注意选择角度)

    ①右键空白处选择“数据框属性”,查看坐标系
    这里可以看到原始地理坐标系的Central_Meridian为0.0,Standard_Parrallel为-71.0等参数,因此选择的投影坐标系也要对应
    ②这里选择Arcgis中 投影坐标系 -> Polar -> WGS 1984 Antarctic Polar Stereographic (参数和原始数据坐标系一样)
    4.选择ArcToolbox 中的 要素 -> 要素转线 将面矢量转为线矢量 (也可以先转线矢量再投影)
    5.右键线矢量 -> 打开属性表 -> 右键任一列的首行 -> 计算几何 -> 属性选择“长度” -> 确定,再统计该列的值即可得到长度(这里还要注意该转换后的线矢量的组成,如果面矢量转线矢量的过程中将图中的线算了两次,且算入了边界,则在转换后需要删除)
  • 相关阅读:
    RF用户关键字
    RF循环分支
    RF使用
    RF变量
    RF介绍
    元件作用域
    元件介绍
    工作总结之测试
    港股通Level2介绍
    linux中配置yum源
  • 原文地址:https://www.cnblogs.com/zmbreathing/p/arcgis_shp_length.html
Copyright © 2020-2023  润新知