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