使用Arcpy进行数据批处理-批量裁剪
时空大数据使我们面临前所未有的机遇和挑战,尤其在地学、遥感或空间技术等专业领域,无疑是一个全新的时代。
伴随着时空大数据的到来,海量数据的处理是一个所有科研工作者都无法忽视的重要问题。传统的数据(主要指空间数据)处理工具已无法满足大数据处理的要求,而且笨拙的传统工具数据处理方式无疑是科研道路上的绊脚石,使我们面对大数据处理需求时手忙脚乱。因此,数据批处理的方式很大程度上解决了这一问题,解放大量劳动力。
对于空间数据来说,常用的传统数据处理工具或软件包括ArcGIS、ENVI等,而且现已拥有对应的批处理平台或工具,如Arcpy、ENVI_IDL。此外许多第三方工具包如GDAL,也很好的支持多种开发语言和环境,以便于编程使用。在此,以Arcpy为例,在Python语言开发环境下,通过实际的编程应用,简单介绍空间数据批处理的实现方法。
1 Python基础
" Life is short, you need Python——Bruce Eckel",人生苦短,我用Python。
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。
Python的设计哲学:
- 优雅
- 简单
- 明确
对于大多数程序语言,第一个入门编程代码便是"Hello World!",以下代码为使用Python输出"Hello World!":
实例(Python 2.0+)
print "Hello World!"
实例(Python 3.0+)
print("Hello World!")
OK,YOU GOT IT!
2 Arcpy介绍
什么是Arcpy?
在这里简单介绍一下Arcpy,详细说明参见ArcGIS相关帮助文档。ArcGIS采用ArcPy为用户提供了使用Python语言操作所有地理处理工具(包括ArcGIS扩展模块)的方法,并提供了多种有用的函数和类。目的是为以实用高效的方式通过Python执行数据处理分析、数据转换、数据管理和地图自动化创建基础。因此,使用Python和ArcPy,可以实现地理或遥感大数据的批量处理。
Arcpy的安装和使用
Arcpy无法单独安装使用,其底层实现是完全依托在Arcgiscripting上的,并且由于历史的原因,所有的Arcpy模块都会依赖Geoprocessing模块中的部分函数来实现对Arcgisscripting的访问。
ArcGIS Desktop安装后,在安装目录下会出现Arcpy文件夹,其中包含有Python函数、类和模块。用户可以使用Python语言调用ArcObject的相关类。
Arcpy提供的功能:
- 访问所有地理处理工具
- 数据转换和数据处理
- 数据分析
- 自动化制图等
使用Python和Arcpy,可以开发出大量用于空间数据批处理的实用程序。
3 数据批处理实现案例
当我们下载了大量遥感影像数据(如风云卫星数据产品,为国产数据打call),一般不可能直接就可以使用,需要进行一定的预数据处理,才能达到我们的使用标准。在这个过程中,一般情况下可能涉及到的数据处理有“定义投影”、“投影变换”、“地图配置”、“数据裁剪”、“重采样”等等。下面具体介绍程序编写实现方法。
以栅格数据裁剪为例。
首先,引入Arcpy包,
import arcpy
调用Arcpy的栅格裁剪函数,
# function: RasterClip
def RasterClip(datadir, in_raster, extent_feature, out_raster):
'''
:param datadir: data direction
:param in_raster: raster data to be clip
:param extent_feature: cutting boundary
:param file_name: output
'''
try:
arcpy.Clip_management(in_raster, "#", out_raster, extent_feature, "#", "ClippingGeometry")
print(arcpy.GetMessages(0))
print "Clip completed!\nSave as '%s'\n" % (clipForld + os.sep + tifNameList[j] + "_clip.tif")
except:
print arcpy.GetMessages()
print "Process failed."
以上函数可以进行一幅影像的裁剪,接下来便可以实现批处理功能,获取待裁剪栅格数据文件路径及文件名函数如下,
# function: getFileList
def getFileList(datadir, ftype):
'''
:param dataDir: forld path
:param ftype: file suffix(.*)
:return: full path, file name(without suffix)
'''
fileFullPathList = []
fileNameList = []
filenameList = os.listdir(datadir)
for fn in filenameList:
file_name, file_ext = os.path.splitext(fn)
if file_ext == ftype:
fileFullPathList.append(datadir + os.sep + fn)
fileNameList.append(file_name)
return fileFullPathList, fileNameList
最后,遍历所有要裁剪的数据,实现数据批量裁剪,
# Define data direction and vector data of boundary
datadir = r'D:\data...'
extentFeature = r'D:\...\*.shp'
# Get data
fType = '.tif'
print "Get %s file......" % fType
fileList = getFileList(datadir, fType)
# Create forld
clipForld = datadir + os.sep + "clip"
if not os.path.isdir(clipForld):
os.makedirs(clipForld)
for i in range(len(fileList[0])):
out_raster = datadir + os.sep + file_name +"_clip.tif"
RasterClip(clipForld, fileList[0][i], extentFeature, out_raster)
完成数据批处理!
使用Arcpy进行数据批处理-批量裁剪相关推荐
- arcgis怎么运行python_在arcgis上用python脚本(arcpy)做数据批处理
arcgis软件是测绘地理信息行业空间数据处理与数据分析比较普及的一套软件系统,具有良好的扩展功能,其提供的基于python的开发包arcpy为数据的批处理提供了很好的基础.本文就是介绍在arcgis ...
- (一)arcpy开发利用arcpy在arcgis中批量裁剪影像
首先小伙伴们,可以看一下我们的学习视频 https://edu.csdn.net/course/detail/25535 最近有这么一个需求:我有一个面文件数据,该面文件shapefile有多条记录, ...
- 使用SHP数据批量裁剪TIF图像并转为JPG格式
问题描述 已有数据:1张大范围的遥感影像和1张裁剪为同一大小的shp数据 使用工具:ArcPy 实现目标: 1.shp数据按照属性分块输出 2.使用shp数据批量裁剪遥感影像,将影像裁剪为小块的tif ...
- 使用shp数据批量裁剪栅格数据并统计均值
批量实现利用shp文件,裁剪相应的多个栅格数据,并统计裁剪后栅格的均值至TXT文件,亲测可用. #使用shp数据批量裁剪栅格数据并统计均值 # -*- coding: cp936 -*- #使用shp ...
- php批量裁剪图片,怎么批量裁剪图片 按照一定的比例快速裁剪多张照片的方法,自定义裁剪图片大小...
在日常工作学习或休闲娱乐中,都会遇到要处理图片的时候,比方说对拍摄的照片进行裁剪操作,将拍摄进去的不需要的部分裁剪掉.对于一两张或几张图片裁剪的话逐个操作也不会太耗时,然而如果有一系列的十几张甚至几十 ...
- ArcGIS Python 影像批量裁剪
该工具在:"14综合\工具箱.tbx\影像裁剪\按记录批量裁剪影像",影像数据按矢量面要素批量裁剪,界面如图14-5所示. 图14-5 影像批量裁剪 按一个矢量面数据,按字段值相同 ...
- 分享一个ArcGIS批量裁剪、批量投影、批量提取值至点的工具
[Warming up]在学习和工作的过程中,作者曾写过很多采用ArcGIS模型构建器(Model Builder).Python代码等批处理方法,大大的减轻了操作压力,提高了工作效率.今天给大家展示 ...
- GIS技巧100例05-ArcGIS分割栅格(批量裁剪)
GIS思维于这一次要介绍的是<GIS技巧100例05-ArcGIS分割栅格(批量裁剪)>,我们之前介绍ArcGIS批量批量裁剪影像建议大家用的是模型构建器.今天我会介绍ArcGIS分割工具 ...
- python arcgis批量绘图_ARCGIS中Python实现批量裁剪
<ARCGIS中Python实现批量裁剪>由会员分享,可在线阅读,更多相关<ARCGIS中Python实现批量裁剪(1页珍藏版)>请在人人文库网上搜索. 1.程序代码:pyth ...
- 【ArcGIS教程】批量裁剪
ArcGIS教程:批量裁剪 1 裁剪 1.1 准备:创建shp文件/选定区域.自由选区 1.1 单一裁剪 1.2 批量裁剪(Batch) 2 批量裁剪 参考 1 裁剪 1.1 准备:创建shp文件/选 ...
最新文章
- JQuery新浪1630个表情插件
- android表视图,android – 列表视图与表格布局
- 学习python需要什么基础-要学Python编程,需要什么样的基础呢?想找这方面工作...
- c++实现平面上的形状编辑
- Application ProvidedAar 完结篇
- 三大linux系统对比
- 运维工程师打怪升级进阶之路 V2.0
- 【C语言及程序设计】项目1-24-4:个人所得税计算器if语句版
- gpio mysql_GPIO控制LED
- 春节7天新增病毒54万 钓鱼欺诈成最大威胁
- CSDN下载频道【2月热门资源TOP100】汇总
- android wps mac 下载地址,wps for mac下载
- 创业维艰,且行且珍惜
- 云计算是什么,阿里云提供哪些云服务
- 小世界网络——利用Networkx分析武汉公交网络
- C语言应用(1)——Unix时间戳和北京时间的相互转换
- Python爬虫实践:优志愿 院校列表
- onenet平台使用教程
- 开发小程序以及后台管理系统攥淘宝佣金
- 大数据即席查询工具——秒级响应
热门文章
- JavaScript数据结构和算法(转载)
- SqlServer2008 R2 自动备份和自动清除过期备份
- Enterprise Library 4.0 - May 2008 发布了
- 《Asp.Net 2.0 揭秘记(十四)
- Docker-registry + GlusterFS
- 愚人节的礼物 栈
- 【Android UI设计与开发】第04期:引导界面(四)仿人人网V5.9.2最新版引导界面...
- mctop: 监视 Memcache 流量 — LinuxTOY
- dos命令集--江南技术联盟
- 当调用wcf, 小心返回值包含enum越界的错误。