ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

命令行记录-矢量向栅格转换

2019-10-03 19:55:03  阅读:305  来源: 互联网

标签:target lyr 矢量 options 栅格 命令行 ogr ds gdal


1、

(1)重点学习如何应用 gdal.RasterizeLayer 函数

 

  • gdal.RasterizeLayer( target_ds, [3, 2, 1],source_lyr, burn_values = [10,10, 55], options = ["ALL_TOUCHED=TRUE"])注意:栅格化时,将波段 1,2,3 上,分别赋值 55,10,10,source_lyr为打开的文件,burn_values和options这两个属性是非必须的。

 

(2)关键是选项的选择问题,有4种赋值方式,如:

 

  • options=["ATTRIBUTE=LUCODE"],表示字段" LUCODE "的属性值将为栅格值,如果没有设定字段名,则赋值为0;
  • options=["BURN_VALUE_FROM=Z"],表示 3D 图形的栅格值为其 Z 值(高程值) ;
  • options=["ALL_TOUCHED=TRUE"],表示图形接触到的像素均将输出;
  • options=["MERGE_ALG=ADD","MERGE_ALG=REPLACE"], 表示多图形覆盖同一像素的取值方式

2、
from osgeo import gdal, ogr, osr

#定义投影
sr = osr.SpatialReference('LOCAL_CS["arbitrary"]')
#在内存中,没有真正放到图层里去,创建一个 Shape 文件的图层,栅格值来自于CELSIUS字段
source_ds = ogr.GetDriverByName('Memory').CreateDataSource( 'wrk' )
mem_lyr = source_ds.CreateLayer('poly', srs=sr,geom_type=ogr.wkbPolygon )
mem_lyr.CreateField(ogr.FieldDefn('CELSIUS',ogr.OFTReal))

wkt_geom = ['POLYGON((1020 1030 40,1020 1045 30,1050 1045 20,1050 1030 35,1020 1030 40))',
            'POLYGON((1010 1046 85,1015 1055 35,1055 1060 26,1054 1048 35,1010 1046 85))']
celsius_field_values = [50, 200]

for i in range(len(wkt_geom)):
    # 创建了一个空的feature
    feat = ogr.Feature(mem_lyr.GetLayerDefn())
    # 首先设置几何部分
    feat.SetGeometryDirectly(ogr.Geometry(wkt=wkt_geom[i]))#首先设置几何部分
    feat.SetField('CELSIUS', celsius_field_values[i])
    mem_lyr.CreateFeature(feat)

#在内存中,创建一个 100*100 大小的 3 波段的空白图像
target_ds = gdal.GetDriverByName('MEM').Create('', 100, 100, 1, gdal.GDT_Byte )
target_ds.SetGeoTransform( (1010,1,0,1060,0,-1) )
target_ds.SetProjection( sr.ExportToWkt())

#调用栅格化函数
err = gdal.RasterizeLayer( target_ds, [1], mem_lyr, options= ["ATTRIBUTE=CELSIUS"])

#将内存中的图像,存储到硬盘文件上
poly01_ts=gdal.GetDriverByName('GTiff').CreateCopy('./raster_poly01.tif',target_ds)
del target_ds
del source_ds

3、这段代码运行过程中需要注意的点是,在将内存中的栅格数据copy到硬盘后,需要及时退出解释器,使生成的句柄释放(执行了copy命令,同时内存数据还需要刷新到硬盘上)。解决方法是:

(1)演示完后,执行exit()退出解释器;

(2)在copy语句左侧加变量接收反馈的句柄,然后删除句柄。

4、运行结果

 

标签:target,lyr,矢量,options,栅格,命令行,ogr,ds,gdal
来源: https://www.cnblogs.com/vividautumn/p/11557300.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有