Python(arcpy) 根据站点经纬度(坐标)批量提取对应格点值

任务描述:我有站点的点shp文件,想从遥感降水产品中批量提取出站点所在栅格的值→ 多个站点+多幅图像的批量提取

#-*- coding: UTF-8 -*-
'''
这篇代码是用于根据站点的shp文件批量提取降雨图中该点所在像元的值并存为新的点元素文件
'''

import arcpy
from arcpy import env
from arcpy.sa import *
import os

arcpy.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日

  • 17
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值