任务描述:我有站点的点shp文件,想从遥感降水产品中批量提取出站点所在栅格的值→ 多个站点+多幅图像的批量提取
#-*- coding: UTF-8 -*-
''' 这篇代码是用于根据站点的shp文件批量提取降雨图中该点所在像元的值并存为新的点元素文件 '''import arcpy
from arcpy import env
from arcpy.sa import *
import osarcpy.CheckOutExtension("Spatial") #仅在使用浮动板许可情况下需要 CheckOutExtension获取许可#先遍历点元素文件,再遍历栅格文件,做提取
cFileNumber = 0
dir = 'F:\\station_point_shp\\' #指定点元素所在文件夹的路径
for root, dirs, files in os.walk(dir): #遍历该文件夹for point_file in files: #遍历刚获得的文件名files(filename, extension) = os.path.splitext(point_file) #将文件名拆分为文件名与后缀if (extension == '.shp'): #判断该后缀是否为.shp文件cFileNumber= cFileNumber+1 #记录.shp文件的个数为对应文件号in_point_features = dir+point_file #点元素位置#指定路径和工作区间path_file = 'F:\\MSWEP_V2.6_Monthly_tif\\'arcpy.env.workspace='F:\\MSWEP_V2.6_Monthly_tif\\'#读取路径中所有文件ls = os.listdir(path_file)print(len(ls)) #输出文件总数#遍历路径中所有的tif文件,根据坐标输出新的带有属性值的点元素for i in ls:if os.path.splitext(i)[1] == ".tif": #os.path.splitext函数用于分离文件名与扩展名in_raster = i #i作为输入栅格in_raster_name = i[0:6]#判断文件夹是否存在if os.path.exists(r'F:\\MSWEP_station_point_pre\\'+point_file[0:13]):out_point_features='F:\\MSWEP_station_point_pre\\'+point_file[0:13]+'\\'+in_raster_name+'.shp' #输出位置else:os.makedirs(r'F:\\MSWEP_station_point_pre\\'+point_file[0:13])out_point_features='F:\\MSWEP_station_point_pre\\'+point_file[0:13]+'\\'+in_raster_name+'.shp' #输出位置ExtractValuesToPoints(in_point_features, in_raster, out_point_features) #调用函数print(i)
后记:
写博客的初衷是分享经验,同时是算是自己对思路和代码的整理,方便日后处理数据,应该可以帮到很多人。
我已免费分享我的心得,如果看官还有其他问题的,那么:知识付费,我的时间和经验正好可以解决你的问题。
咨询问题请添加QQ:819369354
2022年4月20日