1.一种基于ArcPy的区域尺度栅格格网分割方法,其特征在于,包括以下步骤:步骤一:创建渔网数据;
步骤二:分割行政区矢量数据;
步骤三:按行政区提取渔网网格;
步骤四:按行政区分割渔网网格;
步骤五:按行政区渔网网格裁剪栅格。
2.根据权利要求1所述的一种基于ArcPy的区域尺度栅格格网分割方法,其特征在于,所述步骤一具体为,(1)收集待分割栅格数据和行政区矢量数据
收集带有地理坐标的区域尺度待分割栅格数据和相应的行政区矢量数据,将其分别导入到地理信息系统软件中,其中待分割栅格数据指地理信息系统中的栅格数据;
(2)创建渔网
利用地理信息系统软件的“数据管理工具”‑>“要素类”‑>“创建渔网”工具生成渔网多边形数据,其中模板范围设置为“与行政区矢量数据相同”,像元宽度设置为“W”,像元高度设置为“H”,几何类型设置为“多边形”;W和H分别为土地利用/土地覆被栅格数据空间分辨率的整数倍;
(3)去除渔网无效网格
利用地理信息系统软件的“选择”‑>“按位置选择”工具选中和行政区矢量数据相交的渔网数据网格;然后将选中的网格数据导出为相应的矢量数据,命名为net_pure.shp;
(4)为渔网数据添加字段
利用地理信息系统软件打开去除无效网格的渔网数据net_pure.shp的属性数据,为其添加字段名“pid”,字段类型为字符串;利用字段计算器工具为pid批量化赋值,约定pid的一般格式为:“p”+对应的要素编码,如“p10”。
3.根据权利要求1所述的一种基于ArcPy的区域尺度栅格格网分割方法,其特征在于,所述步骤二具体为:(1)为行政区数据添加字段
利用地理信息系统软件打开行政区矢量数据的属性数据,为其添加字段名“cid”,字段类型为字符串;利用字段计算器工具为cid批量化赋值,约定cid的一般格式为:“c”+对应的行政编码,如“c310000”;
(2)创建分割结果地理数据库
利用地理信息系统软件新建文件地理数据库,命名为city_split.gdb;
(3)分割行政区数据
利用地理信息系统软件的“分析工具”‑>“提取分析”‑>“分割”工具,将行政区矢量数据按分割字段“cid”进行分割;分割结果保存在文件地理数据库city_split.gdb中。
4.根据权利要求1所述的一种基于ArcPy的区域尺度栅格格网分割方法,其特征在于,所述步骤三具体为:(1)创建保存分块渔网的地理数据库
首先判断用于保存分块渔网的地理数据库net_city_split.gdb是否存在,如果存在,使用arcpy.Delete_management()函数删除该地理数据库;如果不存在,使用arcpy.CreateFileGDB_management()函数创建该地理数据库;
(2)读取行政区地理数据库
使用arcpy.da.Walk()函数读取行政区地理数据库city_split.gdb,遍历该数据库中的多边形要素集合,返回包含路径、目录名和文件名等数据集合的walk;
(3)按行政区位置提取渔网网格
首先使用for循环遍历行政区地理数据库中的路径、目录名和文件名等数据,然后使用arcpy.Exists()函数判断图层数据net_lyr是否存在,如果存在,使用arcpy.Delete_management()函数删除该图层数据;如果不存在,使用arcpy.MakeFeatureLayer_management()函数将渔网数据net_pure.shp转换为图层数据net_lyr;紧接着,使用arcpy.SelectLayerByLocation_management()函数根据当前行政区位置从图层数据net_lyr中选择网格数据;最后使用arcpy.CopyFeatures_management()函数将图层数据net_lyr中选择的网格数据保存到指定的地理数据库中。
5.根据权利要求1所述的一种基于ArcPy的区域尺度栅格格网分割方法,其特征在于,所述步骤四具体为:(1)读取行政区渔网地理数据库
使用arcpy.da.Walk()函数读取行政区渔网地理数据库net_city_split.gdb,遍历该数据库中的多边形要素集合,返回包含路径、目录名和文件名等数据集合的walk;
(2)分割行政区渔网网格
首先使用for循环遍历行政区渔网地理数据库中的路径、目录名和文件名等数据,然后设置存储渔网分割后的地理数据库文件名tmp_gdb_name及存储位置tmp_gdb_out。使用arcpy.Exists()函数判断该地理数据库是否存在,如果存在,使用arcpy.Delete_management()函数删除;如果不存在,使用arcpy.CreateFileGDB_management()函数创建新地理数据库;最后使用arcpy.Split_analysis()函数将当前行政区中的渔网网格按分割字段“pid”进行分割;分割结果保存在文件地理数据库tmp_gdb_name中。
6.根据权利要求1所述的一种基于ArcPy的区域尺度栅格格网分割方法,其特征在于,所述步骤五具体为:(1)定义渔网裁剪栅格函数
定义使用渔网网格裁剪栅格函数extract_raster_by_net(),输入参数包含待裁剪的栅格数据raster_file,用于裁剪的渔网数据net_gdb,裁剪后的栅格输出路径raster_out_path;函数的实现步骤包括:首先使用arcpy.da.Walk()函数遍历用于裁剪的渔网数据库net_gdb中的要素,返回包含数据库路径、目录名和文件名等集合的walk;然后设置裁剪后的栅格保存目录,并使用os.mkdir()函数创建该目录;紧接着,使用for外循环遍历walk,使用for内循环遍历文件名,最后使用arcpy.gp.ExtractByMask_sa()函数利用当前的渔网网格数据裁剪栅格影像,并进行保存;
(2)执行裁剪操作
分别设置待裁剪的栅格数据位置,用于裁剪栅格的渔网地理数据库位置和按渔网网格裁剪后的栅格数据输出路径;然后使用get_all_gdbs()函数获取指定位置的所有地理数据库;紧接着,使用for循环遍历数据库,最后使用extract_raster_by_net()函数利用渔网网格裁剪栅格数据并保存。