利用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.右键线矢量 -> 打开属性表 -> 右键任一列的首行 -> 计算几何 -> 属性选择“长度” -> 确定,再统计该列的值即可得到长度(这里还要注意该转换后的线矢量的组成,如果面矢量转线矢量的过程中将图中的线算了两次,且算入了边界,则在转换后需要删除)
原文地址:https://www.cnblogs.com/zmbreathing/p/arcgis_shp_length.html