推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于ArcGIS Python的地表覆盖栅格化技术

更新时间:2019-12-20 23:29:57 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:arcgispython 下载积分:1分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

为提高地表覆盖栅格化的生产效率,对地表覆盖数据栅格化处理技术进行了研究。介绍了一种基于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)数据准备。地表覆盖分类数据一般以分区的方  
式存储,需将待处理的分区文件数据库拷贝至同一文  
件夹下;再准备满足栅格化最大范围的 15 万标准分  
幅图框,并增加图号和投影带号字段信息。  
2)分区数据合并。遍历所有分区文件数据库,获  
取各分区文件数据库中地表覆盖图层的数据路径;并  
利用 ArcGIS 合并命令将所有地表覆盖图层合并为一个  
完整的图层。  
1 技术要求  
地表覆盖栅格化分为高斯投影 10 m 和地理坐标  
°
0.000 1 两种格网方式,分别与 10 m 格网 DEM 数据  
°
0.000 1 DEM 数据对应。栅格化地表覆盖数据按照  
15 万标准分幅方式,以 grid 格式存储,格网数据值  
为该格网内比例最大的地表覆盖类型 CC 码的数值。  
°
10 m0.000 1 格网栅格化数据的数学基础、分幅、  
格网间距、格网起止点、外扩像素、组织方式等技术  
参数做了详细规定 [ - ]  
1
2
3)获取栅格化区域范围。将 15 万标准分幅图框  
与地表覆盖图层进行空间叠置分析,获取地表覆盖栅  
格化区域所涉及的图幅;再利用缓冲分析功能扩大栅  
格化区域的范围。  
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 将经纬度  
坐标的 15 万标准分幅图框层创建为要素层;然后  
利用位置选择工具 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、  
sysos 等模块以及 ArcPy 的环境变量 env 模块;并设  
置程序运行输入参数,包括数据源输入文件夹路径、  
标准分幅图框数据路径和结果输出文件夹路径。  
2)利用 for root,dirs,files in os.walk(数据源输入  

全部评论(0)

暂无评论