使用类别名称将grc文件转换为shp文件

2024-09-27 00:19:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我面临的问题是一组.grc文件只有一个波段。但是,这个文件包含了几个类别,它们最终属于图像的不同部分(我猜)。在

当我用这个(或直接用PostGIS几何图形)生成图形文件时,所有这些类别都被合并到一个单独的文件中,这些文件中除了dn1、dn2、dn3之外,还有其他区域。。作为他们的名字。我想保留形状文件中的类别名称。在

此命令当前生成形状文件:

gdal_polygonize.py coverage.grc -f "ESRI Shapefile" output.shp

我的假设正确吗?我怎么能做到呢?在


Tags: 文件图像命令名称区域波段名字类别
1条回答
网友
1楼 · 发布于 2024-09-27 00:19:22

我通过在Python中创建一个自定义脚本来解决这个问题:

catnames = rasterband.GetCategoryNames()
memdriver = ogr.GetDriverByName( 'Memory' )
dst_ds = memdriver.CreateDataSource( "out" )

# create a layer with a DN field that will contain the index of 
# each category automatically
dst_layer = dst_ds.CreateLayer("out", srs = None )
fd = ogr.FieldDefn( 'DN', ogr.OFTInteger )
dst_layer.CreateField(fd)

gdal.Polygonize( rasterband, None, dst_layer, 0)

# extract features map
featmap = {}
for feature in dst_layer:
    # use the field defined above, create a mapping between
    # index -> feature name
    featname = feature.GetField("DN")
    if featname not in featmap.keys():
        featmap[featname] = [feature]
    else:
        featmap[featname].append(feature)

从现在起,dst_layer包含向量形状,可以使用以下方法轻松保存到形状:

^{pr2}$

这将为每个要素名称(类别)创建一个.shp文件。当然,这可以调整为创建一个单独的文件,但这超出了我的问题范围。在

相关问题 更多 >

    热门问题