当前位置: 首页 > news >正文

使用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)

完成数据批处理!

原文链接:https://bbs.csdn.net/forums/gisrs?spm=1001.2014.3001.6682

相关文章:

使用Arcpy进行数据批处理-批量裁剪

时空大数据使我们面临前所未有的机遇和挑战,尤其在地学、遥感或空间技术等专业领域,无疑是一个全新的时代。 伴随着时空大数据的到来,海量数据的处理是一个所有科研工作者都无法忽视的重要问题。传统的数据(主要指空间数据&#x…...

【攻防世界】ics-05

php://filter 伪协议查看源码 preg_replace 函数漏洞 1.获取网页源代码。多点点界面,发现点云平台设备维护中心时,页面发生变化。 /?pageindex 输入什么显示什么,有回显。 用php://filter读取网页源代码 ?pagephp://filter/readconvert.…...

VTK的交互器

VTK中鼠标消息是在交互类型对象(interactorstyle)中响应,因此通过为交互类型对象(interactorstyle)添加观察者(observer)来监听相应的消息,当消息触发时,由命令模式执行相…...

ChatGPT(3.5版本)开放无需注册:算力背后的数据之战悄然打响

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

python项目练习——14.学生管理系统

这个项目可以让用户管理学生的信息,包括学生的姓名、年龄、成绩等,并提供添加、编辑、删除、查询等功能。这个项目涉及到数据库操作、用户界面设计、数据验证等方面的技术。 代码示例: import tkinter as tk # 导入 Tkinter 库 import sqli…...

基于SpringBoot的公益慈善平台

一、项目背景介绍: 基于SpringBoot的公益慈善平台是一款致力于为社会所有人带来便利服务的B/S架构的应用程序。随着网络技术的发展,公益慈善网站已经逐渐成为公益行动的主要信息载体。在这个平台上,主要有管理员、捐赠者和志愿者三种角色&…...

Python网络爬虫(一):HTML/CSS/JavaScript介绍

1 HTML语言 1.1 HTML简介 HTML指的是超文本标记语言:HyperText Markup Language,它不是一门编程语言,而是一种标记语言,即一套标记标签。HTML是纯文本类型的语言,使用HTML编写的网页文件也是标准的文本文件,可以使用任意的文本编辑器例如记事本打开HTML文件,查看并修改H…...

机器学习每周挑战——旅游景点数据分析

数据的截图,数据的说明: # 字段 数据类型 # 城市 string # 名称 string # 星级 string # 评分 float # 价格 float # 销量 int # 省/市/区 string # 坐标 string # 简介 string # 是否免费 bool # 具体地址 string拿到数据…...

开发语言漫谈-C语言

个人认为C语言是最伟大的开发语言(没有之一)。C语言开创了高级语言的新时代。比C更低级的是汇编语言,这个东西就是反人类的玩意。之后的语言或多或少都受C语言的影响。更神奇的是直到现在,C语言还有生命力。C语言的发明人丹尼斯里…...

vue3导入excel并解析excel数据渲染到表格中,纯前端实现。

需求 用户将已有的excel上传到系统,并将excel数据同步到页面的表格中进行二次编辑,由于excel数据不是最终数据,只是批量的一个初始模板,后端不需要存储,所以该功能由前端独立完成。 吐槽 系统中文件上传下载预览三部…...

Java常用API之Encoders类解读

写在开头:本文用于作者学习Java常用API 我将官方文档中Encoders类中所有API全测了一遍并打印了结果,日拱一卒,常看常新 在Spark中,Encoders类提供了一些静态方法用于创建不同数据类型的编码器。 首先,我遇到这样一个…...

java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码

java中大型医院HIS系统源码 AngularNginxSpringBoot云HIS运维平台源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工…...

windows部署Jenkins并远程部署tomcat

目录 1、Jenkins官网下载Jenkins 2、安装Jenkins 3、修改Home directory 4、插件安装及系统配置 5、Tomcat安装及配置 5.1、修改配置文件,屏蔽以下代码 5.2、新增登录用户 5.3、编码格式修改 5.4、启动tomcat 6、Jenkins远程部署war包 6.1、General配置 6.2、Sourc…...

设计模式|责任链模式(Chain of Responsibility Pattern)

文章目录 结构优点缺点使用责任链的步骤示例有哪些知名框架采用了责任链模式责任链模式和链表有什么关联常见面试题 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许你创建一个对象链。请求将沿着这个链传递&#xff…...

文件服务器之二:SAMBA服务器

文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA 下图来自百度百科 SAMBA的发展历史与名称的由来 Samba是一款开源的文件共享软件,它基于SMB(Server Messa…...

20.安全性测试与评估

每年都会涉及;可能会考大题;多记!!! 典型考点:sql注入、xss; 从2个方面记: 1、测试对象的功能、性能; 2、相关设备的工作原理; 如防火墙,要了解防…...

阿里巴巴实习面经

本人bg:浙江大学,计算机研二,本科也是浙大计算机专业的。 在阿里巴巴达摩院实习,算法岗,我是去年拿到的阿里巴巴达摩院的实习offer,这个过程还是比较惊心动魄,所以我称之为惊心动魄版本&#xf…...

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范,就是接口 监听器的作用是,监听某种变化(一般就是对…...

教你快速认识Java中的抽象类和接口

目录 引言 抽象类(Abstract Class) 抽象类的概念 抽象类的图标 抽象类的语法 抽象类的特点 接口(Interface) 接口的概念 接口的图标 接口的语法 接口的特点 接口的使用 接口的意义 抽象类与接口的区别 Object类 结…...

Linux第5课 Linux目录介绍

文章目录 Linux第5课 Linux目录介绍一、打开系统目录二、查看系统目录 Linux第5课 Linux目录介绍 系统目录就是指操作系统的主要文件存放的目录,目录中的文件直接影响到系统是否正常工作,了解这些目录的功能,对使用系统会有很大的帮助。 一…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...