时至今日,笔者已经总结了三种用Python语言结合ArcGIS10.2提供的接口去批量处理地理数据的方法。即:

1. 用IDLE、Python Tools for Visual Studio等去编写独立的py脚本文件;

2. 用Python提供的tKinter模块去构建可视化窗体,并将其打包成exe可执行文件;

3. 用Python脚本工具自定义工具箱。

下面对三种方法分别做介绍。

一、用IDLE、Python Tools for Visual Studio或PyCharm等去编写py文件;

arcpy.env.workspace = "F:\\GIMMS 3g\\3Mask"

rasters = arcpy.ListRasters("*", "tif")

for raster in rasters:

out= "F:\\GIMMS 3g\\4Project\\"+"pro_"+raster[4:12]+".tif"

arcpy.ProjectRaster_management(raster,out, "PROJCS['MyAlbers',GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Albers'],PARAMETER['False_Easting',0.0],PARAMETER['False_Northing',0.0],PARAMETER['central_meridian',105.0],PARAMETER['Standard_Parallel_1',25.0],PARAMETER['Standard_Parallel_2',47.0],PARAMETER['latitude_of_origin',0.0],UNIT['Meter',1.0]]", "NEAREST", "9660.84811813477", "", "", "GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]]")

print("pro_"+raster[4:12]+" has done !!!")

print("All done")

二、用Python提供的tKinter模块去构建可视化窗体,并将其打包成exe可执行文件;

1、说明

(1)先用ArcGIS或者ENVI软件中获取投影参数,将其保存在Pro.txt中;

(2)确定输入路径、投影文件和输出路径即可。

(3)投影文件格式如下所示:

2、效果

3、代码

#coding=utf-8

from Tkinter import *

from tkFileDialog import *

import Tkinter,tkMessageBox,arcpy

arcpy.CheckOutExtension("spatial")

arcpy.gp.overwriteOutput=1

root=Tk()

root.title("Project Raster")

def OpenData():

global RasterFolder

RasterFolder=askdirectory()

text1.delete(0,END)

text1.insert(0,RasterFolder)

def OpenProFile():

global ProFile

ProFile=askopenfilename()

f=open(ProFile,'r')

global ProContent

ProContent=f.read()

f.close()

text2.delete(0,END)

text2.insert(0,ProFile)

OutPath=""

def SavePath():

global OutPath

OutPath=askdirectory()

text3.delete(0,END)

text3.insert(0,OutPath)

def Run():

if len(str(text1.get()))==0|len(str(text2.get()))==0|len(str(text3.get()))==0:

tkMessageBox.showinfo("Warning","Please choose the data source!")

return

arcpy.env.workspace=RasterFolder

Rasters=arcpy.ListRasters()

s=0

for Raster in Rasters:

s=s+1

if s==0:

tkMessageBox.showinfo("Error","No data!")

return

i=1

RunButton.config(text="Running,please wait!")

for Raster in Rasters:

root.title("Processing "+Raster+" ("+str(i)+"/"+str(s)+")")

arcpy.ProjectRaster_management(Raster,OutPath+"/"+Raster,ProContent)

i=i+1

tkMessageBox.showinfo("Congratulations","All done")

exit()

frame1=Frame(root)

frame1.pack(side=TOP)

label1= Label(frame1,text="Input Raster:",width=10)

label1.pack(side=LEFT)

text1 = Entry(frame1,bd=1,width=60)

text1.pack(side=LEFT)

OpenDataButton = Tkinter.Button(frame1, text ="Choose", command =OpenData)

OpenDataButton.pack(side=LEFT)

frame2=Frame(root)

frame2.pack(side=TOP)

label2= Label(frame2,text="ProFile:",width=10)

label2.pack(side=LEFT)

text2 = Entry(frame2,bd=1,width=60)

text2.pack(side=LEFT)

OpenMaskButton = Tkinter.Button(frame2, text ="Choose",command=OpenProFile)

OpenMaskButton.pack(side=LEFT)

frame3=Frame(root)

frame3.pack(side=TOP)

label3= Label(frame3,text="OutPath:",width=10)

label3.pack(side=LEFT)

text3 = Entry(frame3,bd=1,width=60)

text3.pack(side=LEFT)

OpenPathButton = Tkinter.Button(frame3, text ="Choose",command=SavePath)

OpenPathButton.pack(side=LEFT)

frame4=Frame(root,bd=3)

frame4.pack(side=TOP)

RunButton=Tkinter.Button(frame4,text="Run",command=Run,width=20,bd=2)

RunButton.pack(side=RIGHT)

root.mainloop()

三、用Python脚本工具自定义工具箱

(1)新建一个test.py文件,内容可以为空;

(2)Catalog中找到My ToolBoxes→右键→new→Tool Box,命名为GeoStorm,在GeoStorm上右击→Add→Script,如下图所示:

(3)如上图工具箱所示,在Project Raster上右击→Edit,打开代码窗口,这个文件就是(1)新建的test.py,并写入如下核心代码,可以看出,跟前面两种方法的代码区别不是很大。

(4)双击Project Raster,就看到了我们熟悉的窗口了!!!,其中RasterPath文件中的是要进行投影转换的数据,格式可以使Grid,tif或者img;Projection是目标投影,可以选择,也可以自定义;OutPath是输出路径,输出文件的命名跟源文件一样,当然也可以打开edit test.py进行自定义输出文件命名格式。

(5)右击GeoStorm→Save As→10.0 ToolBox,保存,在别的地方使用。

(6)在菜单栏上打开ArcToolBox,右击→Add ToolBox,即可对(5)步保存的工具箱进行使用。

python批处理栅格转点_三种利用Python批量处理地理数据的方法——以栅格数据投影转换为例...相关推荐

  1. 【ArcGIS遇上Python】三种利用Python批量处理地理数据的方法——以栅格数据投影转换为例

    时至今日,笔者已经总结了三种用Python语言结合ArcGIS10.x提供的接口去批量处理地理空间数据的方法.即: 1. 用IDLE.Python Tools for Visual Studio等去编 ...

  2. 麦克风声源定位原理_一种利用麦克风阵列进行声源定位的方法与流程

    本发明涉及计算机信号处理领域,具体涉及一种用麦克风阵列时延估计定位声源的方法. 背景技术: 20世纪80年代以来,麦克风阵列信号处理技术得到迅猛的发展,并在雷达.声纳及通信中得到广泛的应用.这种阵列信 ...

  3. python控制示波器获取波形_三种方法教你用示波器快速捕获异常

    万事开头难!当你想用示波器来分析问题时,你一定有想过,我要如何才能把问题抓下来?当然,只有抓下来之后,才能进行后面种种的分析,否则一切都是空谈.本文将带你用三种最好用的方法将异常抓下来. 一.滚动模式 ...

  4. python爬虫优势和缺点_三种分布式爬虫策略的优缺点

    三种分布式爬虫策略: (1)Slaver端从Master端拿任务(Request/url/ID)进行数据抓取,在抓取数据的同时也生成新任务,并将任务分配给Master端.Master端只有一个Redi ...

  5. python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  6. python能开发什么产品_三周学 Python ?不,三周做个产品

    我的同事在看到毫无开发经验的我用三周时间,不但从零基础用上了 Python,还做出了一个客户关系管理系统,强烈邀请我分享经验.惶恐,因为我并没有出色的智商,也没有觉得三周学 Python 是一个体现自 ...

  7. python词云改颜色_一种用Python生成词云

    一种用Python生成词云 我们在阅读一篇很长的文章时,总先看看文章的关键词来获知文章的大概内容.今天我们就来制作一个词云程序,将文章中出现次数较多的词语提取出来,生成一张词云图. 词云图的生成原理: ...

  8. python小波分析法检测火焰_一种基于小波分析的网络流量异常检测方法

    一种基于小波分析的网络流量异常检测方法 杜臻 ; 马立鹏 ; 孙国梓 [期刊名称] <计算机科学> [年 ( 卷 ), 期] 2019(046)008 [摘要] 对大量网络流量数据进行高质 ...

  9. python登录系统账号检测_一种基于python的惠普打印机默认用户名密码检测方法与流程...

    本发明涉及打印机检测技术领域,特别是一种基于python的惠普打印机默认用户名密码检测方法. 背景技术: 网络打印机是当前各大中小型企业正常办公比不可少的办公网络设备,但对于大中型企业而言,不同部门或 ...

最新文章

  1. UIScrollView点击StatusBar返回顶部失效的解决
  2. linux运行c程序a. out,bash:./a.out:在由ld生成的运行可执行文件上没有这样的文件或目录。...
  3. 动态生成的DOM做点击事件无效
  4. 电脑技巧:C盘爆满该如何清理,实用的清理方案,小白必备
  5. cpu 抖动_微抖动,繁忙的等待和绑定CPU
  6. matlab频响优化,MATLAB中关于频响图函数最优化的程序问题
  7. [Diary]6.12
  8. 自定义View以及事件分发总结
  9. Java基础 --存储数据
  10. 论文笔记 | 使用GCN建模关系数据
  11. vc2008调试技巧之输出重定向
  12. 行为树BT设计与实现
  13. linux下安装飞信机器人教程
  14. 数字图像处理——灰度级、动态范围、对比度
  15. 【Writeup】BUUCTF_Web_高明的黑客
  16. Linux驱动开发中的中间件:设备树
  17. Symmetric and anti-symmetric BCs in FDTD and MODE
  18. java map 参数传递_Java参数传递分析
  19. 浅谈百度闪电算法以及网站HTTPS(图文)
  20. 三种免费的拍照翻译识别文字方法,总有一种适合你!

热门文章

  1. 【微服务】在window下安装nacos以及可能遇到的问题
  2. 英语流利说20190117
  3. zabbix监控MySQL遇到的EB单位BUG
  4. C# Quartz+Topshelf 生成windows定时服务
  5. 【ja3 指纹算法】JS逆向之ja3指纹算法
  6. IntelliJ IDEA2022.1.3版本配置ja-netfilter插件(含插件直接下载地址)
  7. GO语言基础之error
  8. 试题 算法训练 奇异的虫群
  9. 2022最新CKA认证指南看这里
  10. php有序列表加图片,Python——List和Tuple(有序集合)