推荐星级:
- 1
- 2
- 3
- 4
- 5
基于ArcGIS Python的地表覆盖栅格化技术
资料介绍
为提高地表覆盖栅格化的生产效率,对地表覆盖数据栅格化处理技术进行了研究。介绍了一种基于ArcGIS Python脚本编程的地表覆盖栅格化技术;并以福建省2016年基础性地理国情监测数据为例,验证了该技术实现地表覆盖数据批量自动栅格化的可行性
部分文件列表
文件名 | 大小 |
基于ArcGIS_Python的地表覆盖栅格化技术.pdf | 2M |
部分页面预览
(完整内容请下载后查看)Sep., 2019
Vol.17, No.9
2019 年 9 月
第 17 卷第 9 期
地 理 空 间 信 息
GEOSPATIAL INFORMATION
-
doi:10.3969/j.issn.1672 4623.2019.09.015
基于 ArcGIS Python 的地表覆盖栅格化技术
张 磊1
(1. 福建省基础地理信息中心,福建 福州 350003)
摘
要:为提高地表覆盖栅格化的生产效率,对地表覆盖数据栅格化处理技术进行了研究。介绍了一种基于 ArcGIS Python
脚本编程的地表覆盖栅格化技术;并以福建省 2016 年基础性地理国情监测数据为例,验证了该技术实现地表覆盖数据批量
自动栅格化的可行性。
关键词:ArcGIS Python;地理国情;地表覆盖;栅格化
-
-
-
中图分类号:P208
文献标志码:B
文章编号:1672 4623(2019)09 0050 03
2016 年开始,地理国情监测转入常态化,每年都
会获取大量地理国情监测数据。为支撑地理国情普查
和监测成果数据统计分析与应用,需依据统一的规范
大范围、大数据量的数据进行栅格化处理时,生产效
率极低。
ArcGIS 还提供了开发 Python 脚本程序的方式 [
,
]
5
可快速调用 ArcPy 站点包中各种数据处理工具 [6 ,还
可将系列数据处理任务串接起来,从而实现数据的批
量快速处理 [7]。因此,本文利用 ArcGIS Python 脚本编
写程序实现了地表覆盖栅格化从数据输入到数据处理
再到结果输出的批量自动化处理。
-
]
]
和标准建立数据库 [ 2 。“所见即所得”的地表覆盖数
1
]
据具有数据量大的特点 [3 ,对其进行地理空间分析时,
对计算机或服务器的硬件性能要求非常高,且运行效
率较低,不便于大范围区域的快速统计和监测应用分
析。因此,在地理国情普查和监测成果数据库建设过
2.2 技术流程
程中,需对地表覆盖数据进行栅格化预处理,以提高
数据的访问、查询速度等 [ ]
。
4
基于 ArcGIS Python 的地表覆盖栅格化技术流程主
要包括数据准备、分区数据合并、获取栅格化区域范
围、无数据区域赋值、分幅栅格化和格式转换等步骤。
1)数据准备。地表覆盖分类数据一般以分区的方
式存储,需将待处理的分区文件数据库拷贝至同一文
件夹下;再准备满足栅格化最大范围的 1∶5 万标准分
幅图框,并增加图号和投影带号字段信息。
2)分区数据合并。遍历所有分区文件数据库,获
取各分区文件数据库中地表覆盖图层的数据路径;并
利用 ArcGIS 合并命令将所有地表覆盖图层合并为一个
完整的图层。
1 技术要求
地表覆盖栅格化分为高斯投影 10 m 和地理坐标
°
0.000 1 两种格网方式,分别与 10 m 格网 DEM 数据
°
和 0.000 1 DEM 数据对应。栅格化地表覆盖数据按照
1∶5 万标准分幅方式,以 grid 格式存储,格网数据值
为该格网内比例最大的地表覆盖类型 CC 码的数值。
°
对 10 m、0.000 1 格网栅格化数据的数学基础、分幅、
格网间距、格网起止点、外扩像素、组织方式等技术
参数做了详细规定 [ - ]
1
2
。
3)获取栅格化区域范围。将 1∶5 万标准分幅图框
与地表覆盖图层进行空间叠置分析,获取地表覆盖栅
格化区域所涉及的图幅;再利用缓冲分析功能扩大栅
格化区域的范围。
2 技术方法
2.1 技术路线
ArcGIS 中的面转栅格(PolygonToRaster)工具能
快速实现矢量面数据的栅格化处理,可通过值字段、
像元分配类型、像元大小等工具参数控制栅格化数据
的属性值、属性值计算方式和格网间距。栅格化数据
的数学基础、分幅、格网起止点、外扩像素等参数则
通过环境变量中的输出坐标系、处理范围等进行控制。
单幅图栅格化处理可直接采用手工方式,但对多图幅、
4)无数据区域赋值。将栅格化区域范围与地表覆
盖图层进行擦除分析,得到无数据区域的范围;并对
其属性赋值后,与地表覆盖图层合并,得到栅格化区
域内完整的地表覆盖数据。
5)分幅栅格化。将完整的地表覆盖数据通过经纬
度投影转换为高斯平面投影;再利用栅格化函数按照
-
-
收稿日期:2019 03 28。
:
第 17 卷第 9 期
ArcGISꢀPython
张 磊 基于
的地表覆盖栅格化技术
51
· ·
对应图幅的数据范围分别对经纬度和高斯平面投影下
的地表覆盖数据逐一进行栅格化处理。
文件夹路径)循环语句,遍历待处理的文件夹,判断
获取的文件夹名称是否以 .gdb 为后缀,若是则遍历要
素层或先遍历数据集再遍历每个数据集中的要素层,
检查是否存在“V_LCRA”地表覆盖层,并记录地表
覆盖图层的数据路径。
6)格式转换。按照技术要求的数据目录组织和文
件命名方式,输出转换后的 grid 格式栅格化地表覆盖
数据。
2.3 技术关键点
3)利用文件数据库创建工具 CreateFileGDB_
magagement 创建新的文件数据库;再利用数据合并工
具 Merge_management 将所有记录的地表覆盖图层合并
到新的图层。
1)技术要求中规定了分幅栅格数据起止格网中心
点的坐标,实际操作中需向四周外扩 0.5 个像素,得到
分幅栅格数据起止格网角点的坐标。
2)在地表覆盖分幅栅格化过程中,最直接的方法
是将地表覆盖图层一次性栅格化,再对栅格化数据进
行分幅裁切处理。该方法虽然运行效率特别高,但会
导致栅格化数据分幅裁切后的覆盖范围不符合技术要
求。因此,本文采用按照指定数据范围的栅格化方式,
逐一图幅栅格化地表覆盖数据。
4)利用增加字段工具 AddField_management 为
地表覆盖图层增加长整型的“栅格化”字段,并利用字
段计算工具 CalculateField_management 把 CC 码赋值
到该字段;再利用数据融合工具 Dissolve_management
将地表覆盖图层融合为一个数据范围面,并利用创建
要素层工具 MakeFeatureLayer_management 将经纬度
坐标的 1∶5 万标准分幅图框层创建为要素层;然后
利用位置选择工具 SelectLayerBylocation_management
获取地表覆盖数据所涉及的图幅范围,并利用要素
拷贝工具 CopyFeatures_management 将待栅格化的
图框导出到新的图层,以便后期遍历待栅格化图框时
使用。利用缓冲区分析 Buffer_analysis 将图框覆盖范
围扩大 2 km;再利用裁切工具 Clip_management 将有
数据的区域裁掉,得到无数据区域范围,并对该范围
添加“栅格化”字段和赋默认值“-9 999”;最后合并
无数据区域与地表覆盖数据栅格化区域内完整的地表
覆盖数据。
3)地表覆盖栅格化需考虑无数据区域的处理方
法,否则无数据区域栅格化后的属性值不易控制。可
先获取栅格化无数据区域的范围,再对其进行无效值
属性赋默认值处理。实际数据处理过程中,可先将地
表覆盖数据融合,得到有效数据的覆盖范围,再与外
扩后的栅格化最大覆盖范围进行擦除、合并等处理,
高效获取无数据区域。
4)地表覆盖栅格化时,若直接选用文本类型 CC
码属性项进行栅格化,得到的栅格化数据将自动拉伸为
无符号 8 位模式,从而改变了栅格的属性值。因此,需
对地表覆盖数据增加一个长整型的栅格化字段并赋 CC
码值,以确保处理后栅格的属性值与 CC 码保持一致。
5)遍历待栅格化的图框,获取其数据范围,并按
照公式计算得到每幅图的角点坐标;再利用环境变量
env 模块控制栅格化范围和投影信息,以控制栅格化数
据范围和解决栅格化数据无投影信息的问题。
6)ArcGIS10.1 软件本身的缺陷导致部分经纬度栅
格化后的数据范围比规定要求的范围大一个像素,需
在处理流程中增加一个数据检查步骤,以判断栅格化
结果的数据范围是否正确,并按照规定将出现错误的
数据范围重新裁切一遍。
5)栅格化数据。首先创建新的文件数据库存储栅
格化后的数据,以环境变量 env.outputCoordinateSystem
投 影 信 息 为 目 标 坐 标 系 统 投 影 信 息 ; 再 利 用 f o r
row in arcpy.da.SearchCursor(分幅图框数据路径,
[
“SHAPE@”,”图号”)语句遍历待栅格化图幅,通
[ ]
过 ext= row 0 .extent 语句获取每个图框范围的坐标
值,并按照公式计算得到栅格化数据起止格网点的角
点坐标;最后根据“栅格化”字段和“MAXIMUM_
COMBINED_AREA”参数,利用矢量转栅格工具
PolygonToRaster_conversion,按照分幅数据范围进行
逐一图幅的栅格化处理。高斯平面坐标栅格化时,需
先利用投影转换工具 Project_management 将地表覆盖
数据和待栅格化图框转换为目标投影高斯平面坐标,
再根据投影带号分别进行不同度带的栅格化处理。
6)栅格化结果的格式转换。需先重置环境变量
env.outputCoordinateSystem 投影信息和 env.extent 数据
范围;再利用ꢀ制影像工具 CopyRaster_management
按指定文件存储路径、文件命名、数据格式等要求批
3 Python脚本的编写
1)新建记事本文件,更改后缀名为 .py。利用文
本编辑工具打开、导入程序功能实现所引用的 ArcPy、
sys、os 等模块以及 ArcPy 的环境变量 env 模块;并设
置程序运行输入参数,包括数据源输入文件夹路径、
标准分幅图框数据路径和结果输出文件夹路径。
2)利用 for root,dirs,files in os.walk(数据源输入
全部评论(0)