当前位置:文档之家› arcgis与python

arcgis与python

arcgis与python
arcgis与python

arcgis与python(zz)

ESRI软件中的脚本语言一直使用两种模式。

第一种为AML宏语言,该模型显示了PrimOS系统特性。输出为文件格式,数据处理基于目录和文件系统,代码是线性的。

第二个模式是AVENUE语言,继承了Smalltalk的特性。对象响应是调用方法名称,处理事物不必是线性的,有时会引起I/O冲突,集成啦其他语言的混合包。两种语言都有各自的弊端。

随着ArcGIS 8的出现,基于地理视图的脚本语言开始引入,基于接口的编程要求用户使用“真正的”编程语言,如,C++,VB,访问ArcGIS 8的功能。没有脚本语言自动完成该系列任务。这用户必须写可执行程序,在复杂的接口树和对象里找到需要的工具,并汇编成DLLs动态库和类型库来使用自定义功能。

ArcGIS 9版本的面世,ESRI再次提供了访问该软件的新的脚本语言。ESRI意识到,许多用户并不想或不必是个开发者,但还想使用工具解决他们遇到的问题。这些工具包括,友好一致的界面,脚本对象,用于自定义功能所必须的细致入微的编程工具。

满足这些需要,ESRI提供了多种脚本语言-使用ArcObjects-开始空间处理框架。Python,ESRI支持的脚本语言之一,是一种开源的,编译性的,动态类型的,面相对象的脚本语言之一。Python包含在ArcGIS 9中,典型的安装与其他组件一起安装。本篇文章总体介绍如何利用P ython的资源帮助大家的GIS编程以及集成ESRI工具。

1 Python简介

Python第一次公开发行是1991年,作者是CWI(阿姆斯特丹国家数学和计算机科学研究所)的研究员Guido van Rossum。名字来源于Guido喜欢的喜剧连续剧“Monty Pytho n”,python继承了许多其他语言的特征,如ABC,Modula,LISP,以及Haskel,这些包括很高级的特征,如元类(metaclass),生成器,列表综合(list comprehension)。但更多的程序员需要的仅仅是python的基本类型,如,列表,字典,字符串。

虽然,已经有13年的发展,目前的版本是2.3。这反映了Guido慈善的独裁者设计哲学,以及开发组的精益求精。他们努力增加新的内容,并保持向后的兼容性,当必要时,重新设计在以前发现有问题的地方。

2 python设计

Python语言被设计成易于使用,易于学习的动态脚本语言,这意味着用户不需要编译,交互式的方式可以让用户学习到许多执行层次。

Python的设计哲学,Tim Peter在The Zen of Python描述的最清晰,python程序员遵照这些哲学指导他们学习这门语言,帮助他们编写代码,以保持python的一贯风格。

3 Python与GIS

Python提供了很多可能:与GIS系统集成、跨平台、容易与其他语言混合使用(C,C+ +,FORTRAN,Java)。这意味着,python在多语言开发的系统里是最容易成功的。因为各语言的设计,大规模应用的开发也是容易的。许多处理分析GIS数据的包和工具已经被开发出来。基本功能包括,操作shapefile,grid图像,以及更复杂的格式,如arcsde、web服务、数据库等。

矢量格式

一个调用开源库shapelib(https://www.doczj.com/doc/ab15463912.html,)的python包—pyshapelib--,可以处理shapefile文件。可以从https://www.doczj.com/doc/ab15463912.html,/software/pyshapelib上下载。该包提供了访问shape的单个坐标点,访问DBF文件,以及简单的shape索引,如何操作shapefile 原始的几何形状,或者通过DBF文件获取专门的记录。

另个调用开源库的包为OGR(https://www.doczj.com/doc/ab15463912.html,/ogr/),可以用来处理多种矢量格式,包括MapInfo,ArcInfo coverage,PostGIS,Oracle Spatial,TIGER,SDTS,OPeND AP,DGN(Microstation DGN)格式。OGR是空间数据提取库(GDAL)的一部分,可以下载GDAL整个包(https://www.doczj.com/doc/ab15463912.html,/gdal-1.2.0win32.exe)。

使用python处理GRID数据

GDAL可以处理arcinfo grid数据,还支持许多栅格数据,包括JPEG2000,BSP,US GS DEM,军事高程数据,ECW(经增强压缩小波处理的数据),GRASS(地理资源分析支持系统数据格式),TIFF/GeoTIFF,NetCDF(网络通用数据格式),ERDAS *.img,SDT S(空间数据转换标准数据)等。该包的window版本可以从https://www.doczj.com/doc/ab15463912.html,/gdal-1.

2.0win32.exe网址下载。许多其他格式这里就不一一列出。

GDAL合成了Numeric包,可以灵活的处理各种格式的图形代数操作来满足你的需要。例如,可以写个程序驻留在一个WEB服务器上,下载OGC的数据,使用一些代数处理数据,发布图像道WEB浏览器。一旦你有能力从数据显示脱离出来到数据处理时,处理能力会大大提高。

如,你想发现一个GRID的所有行,列单元的平均值,数据格式是arcinfo二进制格式的整数。使用python的交互界面,首先输入GDAL库,然后定位arcinfo GRID(.adf)数据文件位置,用引号引上。将GRID的内容传到Numeric矩阵,使用Numeric包的方法处理,下面为该过程的python代码:

>>> import gdal

>>> gd = gdal.gdal.Open(r?E:\gis\US_Elevation\usdem_2k\w001001.adf?)

>>> . = gd.ReadAsArray()

>>> avg = Numeric.average(Numeric.ravel(array))

>>> avg

-0.0071967281963325313

投影

开源代码库Proj.4的python封装包――py-projection――用于数据投影,可以从Ho bu GIS咨询网下载((https://www.doczj.com/doc/ab15463912.html,/index_html/software/pyprojection/)。虽然该代码使用欧洲石油调查组织的代码系统,但用户可以定义自己的投影,使用原始参数简单的定义当前的投影,x,y坐标,调用一个方法变换到需要的投影,见下面代码。

import Projection

albers = [“proj=aea”,

“ellps=GRS80”,

“datum=NAD83”,

“lat_1=29.5”,

“lat_2=45.5”,

“lat_0=23.0”,

“lon_0=-96.0”,

“x_0=0.0”,

“y_0=0.0”]

p2 = Projection.Projection(albers)

print …----------Albers--------------…

p rint …Location: -93.00W, 42.00N?

print “Forward: “, p2.Forward(-93.00, 42.00)

print “Inverse: “, p2.Inverse(0.0, 0.0)

访问ArcSDE的脚本

笔者开发了一个python包pySDE(https://www.doczj.com/doc/ab15463912.html,/pysde)用来调用ESRI SDE C API函数。几乎所有的SDE C API都能调用,pySDE是个开源代码,但需要一个S DE C API的许可,笔者开发pySDE的目的在于需要用脚本调用ARCSDE引擎,依赖脚本在UNIX平台上处理数据,而不需要ARCGIS。PySDE有个专门的几何代数引擎用于管理脚本(删除一个表,清除日志文件,复制数据),以及许多数据操作脚本。PySDE的另外一个优点在于python交互界面的直接性,可以实时看到命令的结果。当搜索复杂的层次时非常节省时间。

当操作复杂的结构时,该工具能节省大量时间,如调用SDE C API。

web GIS与python

Python非常适合web开发,比java,.NET更节省时间。有许多python资源可以用作web开发,如zope(https://www.doczj.com/doc/ab15463912.html,),一个应用web服务器;mapsever(mapserver. https://www.doczj.com/doc/ab15463912.html,),一个地图显示服务器,twisted(https://www.doczj.com/doc/ab15463912.html,/products/downloa

d),一个网络协议层,其他web开发的GIS通用开源工具描述如下:

web服务器

Web服务使用简单对象访问协议(SOAP),XML远端程序调用(RPC),以及REST客户端在现今都很盛行。WEB服务器容许你编码一个XML结构的请求到服务器,并将结果以X ML格式传回。该构架允许你更容易的在系统中分离数据存储和管理比例从应用端。Python提供许多web服务的工具,XML-RPC构建在语言中,许多SOAP,和REST代码库可以使用。

pyTerra

一个很有用的WEB服务器是TerraService SOAP API,笔者开发一个软件包pyTerra (https://www.doczj.com/doc/ab15463912.html,/pyTerra),可以容易的访问Microsoft TerraServer,例如,如果你想查询一个专门经纬度的数字正射四角照片的日期,一个方法是使用FGDC的元数据,使用ArcCatalog读取,当使用该方法时,比较呆板,不使用,如果你要查询1万到1万五个点的图像日期。使用程序是唯一可行的办法。

幸运的是,TerraServer存储图像的获取时期到图像数据中,可以使用pyTerra调用WE B API可以快速的访问这些信息。例如下面的例子,获取TerraServer.上DRG地图或DOQ 日期。

>>> from pyTS import TerraImage

>>> from pyTS import pyTerra

>>> apt = TerraImage.point(42.00, -93.00)

>>> drg = pyTerra.GetAreaFromPt(apt, …Topo?,?Scale64m?, 1,1)

>>> doq = pyTerra.GetAreaFromPt(apt, …Photo?,?Scale64m?,1, 1)

>>> drg.Center.TileMeta.Capture

…1976-07-01T00:00:00.0000000-07:00?

>>> doq.Center.TileMeta.Capture

…1994-04-18T00:00:00.0000000-07:00?

从python的交互式窗口,可以看到DRG以及DOQ数据的日期是在1976-1994,这些字符可以转换成日期格式并存入数据库中,日期信息可以被捕捉,并写到图像上,使用PIL 包,python可以容易的与web结合,pyTerra工具可以完成你大部分的工作。

结论

Python可以为你的GIS工具箱提供你一个完全工具集,在ArcGis中,新技术是无止境的,如web服务已经广泛的被Python支持。网上有许多python脚本资源,与该文件一起的资源可以在笔者的网站(https://www.doczj.com/doc/ab15463912.html,/software/python_guide_esri/.)上获取。

Python实例应用

Python实例应用 她——一种最初由Guido van Rossum开发的开源(Open Source)的脚本语言。 Python已经有10年的历史了,在国外十分盛行。 Google搜索引擎的脚本,现在流行的BT(Bite Torrnet),还有著名的应用服务器Zope都是用Python编写的。但在国内的使用还不是很多。她十分有自己的特色。语法简洁,但功能强大,可以跨平台使用,在Linux、Windows和Mac上都有很好支持。她的设计很出色。 这里有两个Python的使用例子,都是对磁盘文件的操作,以次来看看Python 的特色。以下的程序是在 Windows平台上完成的。在Windows上安装Python十分方便,到Python的官方站点(https://www.doczj.com/doc/ab15463912.html,)可以免费下载 Windows平台上的二进制安装包后直接安装就可以了,安装程序会完成所有的配置,不用象Java 一样要自己设置环境变量。 情景一: 在文件夹里有六十多个RM格式的视频文件,我现在需要把它们的文件名都提取出来,并去掉文件的扩展名,以便放到需要的网页里。 应该有什么软件可以完成这个简单的要求,可是一时间到哪里去找这样一个符合要求的软件呢?总不能手工完成把。在Linux上用强大的shell脚本应该也可以完成,可是使用Windows的朋友呢?其实象这样一个简单任务用Python这个强大脚本语言只要几条语句就可以搞定了。个大家知道,要完成这样一个任务根本不用动用C/C++或Java这样的大家伙。 好来看看Python的身手,用自己喜欢的文本编辑器或者直接使用安装包自带的IDE都可以: # --- picknames.py --- import os filenames=os.listdir(os.getcwd()) for name in filenames: filenames[filenames.index(name)]=name[:-3] out=open('names.txt','w') for name in filenames: out.write(name+'\n') out.close() 句字不多,一句句看。

ArcGIS中Python脚本学习

[初学入门]ArcGIS中Python脚本的使用 By:飞天小猪 目录 写在前面的话...................................................................................................... 错误!未定义书签。 前言..................................................................................................................... 错误!未定义书签。 一、PYTHON语言基础 ....................................................................................... 错误!未定义书签。 1数学运算符........................................................................................................ 错误!未定义书签。2字符串操作........................................................................................................ 错误!未定义书签。3模块的使用(M ODULES) .................................................................................. 错误!未定义书签。4使用DEF构建函数 ............................................................................................. 错误!未定义书签。5流程控制结构:I F,W HILE,F OR....................................................................... 错误!未定义书签。6简单输入和输出................................................................................................ 错误!未定义书签。 二、ARCGIS&PYTHON ......................................................................................... 错误!未定义书签。 1如何创建地理处理对象(GEOPROCESSOR OBJECT)............................................. 错误!未定义书签。2获取地理处理帮助............................................................................................ 错误!未定义书签。 2.1举例:如何使用Geoprocessor Programming Model中的Lists ............... 错误!未定义书签。3使用地理处理工具——T OOLBOXES和A LIASES.................................................... 错误!未定义书签。4在建模中使用脚本(S CRIPTS IN M ODEL B UILDER) ............................................... 错误!未定义书签。5在P YTHON W IN里调试地理处理脚本 ................................................................ 错误!未定义书签。 5.1 调试选择和消息........................................................................................ 错误!未定义书签。 5.2PythonWin的调试工具............................................................................... 错误!未定义书签。 5.3地理处理工具举例..................................................................................... 错误!未定义书签。6使用描述(D ESCRIBE)和存在(E XISTS)获取数据信息 .................................. 错误!未定义书签。 6.1描述............................................................................................................. 错误!未定义书签。 6.2存在(Exists)............................................................................................ 错误!未定义书签。 6.3在循环中使用描述和存在......................................................................... 错误!未定义书签。7在P YTHON脚本中使用地图代数(M AP A LGEBRA) ........................................... 错误!未定义书签。8数据管理和指针(D ATA M ANAGEMENT AND C URSORS)........................................ 错误!未定义书签。 8.1数据管理(Data Management) .............................................................. 错误!未定义书签。 8.2指针(Cursors)......................................................................................... 错误!未定义书签。 附录1:地理处理脚本中输入&输出方法指南 .................................................. 错误!未定义书签。附录2:其他....................................................................................................... 错误!未定义书签。

Python的应用领域有哪些

Python的应用领域有哪些? Python是一门简单、易学并且很有前途的编程语言,很多人都对Python感兴趣,但是当学完Python基础用法之后,又会产生迷茫,尤其是自学的人员,不知道接下来的Python学习方向,以及学完之后能干些什么?以下是Python十大应用领域! 1. WEB开发 Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。 2. 网络编程 网络编程是Python学习的另一方向,网络编程在生活和开发中无处不在,哪里有通讯就有网络,它可以称为是一切开发的“基石”。对于所有编程开发人员必须要知其然并知其所以然,所以网络部分将从协议、封包、解包等底层进行深入剖析。 3. 爬虫开发 在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。 4. 云计算开发 Python是从事云计算工作需要掌握的一门编程语言,目前很火的云计算框架OpenStack就是由Python开发的,如果想要深入学习并进行二次开发,就需要具备Python 的技能。

5. 人工智能 MASA和Google早期大量使用Python,为Python积累了丰富的科学运算库,当AI 时代来临后,Python从众多编程语言中脱颖而出,各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。 6. 自动化运维 Python是一门综合性的语言,能满足绝大部分自动化运维需求,前端和后端都可以做,从事该领域,应从设计层面、框架选择、灵活性、扩展性、故障处理、以及如何优化等层面进行学习。 7. 金融分析 金融分析包含金融知识和Python相关模块的学习,学习内容囊括Numpy\Pandas\Scipy数据分析模块等,以及常见金融分析策略如“双均线”、“周规则交易”、“羊驼策略”、“Dual Thrust 交易策略”等。 8. 科学运算 Python是一门很适合做科学计算的编程语言,97年开始,NASA就大量使用Python 进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。 9. 游戏开发 在网络游戏开发中,Python也有很多应用,相比于Lua or C++,Python比Lua有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,Python非常适合编写1万行以上的项目,而且能够很好的把网游项目的规模控制在10万行代码以内。 10. 桌面软件 Python在图形界面开发上很强大,可以用tkinter/PyQT框架开发各种桌面软件!

实验三 ARCGIS PYTHON脚本编程

实验三ArcGIS Python脚本编程 姓名:班级:学号: 实验目的 1、熟练掌握ArcGIS Python脚本编程,熟悉如何根据空间数据某个属性值选择数 据点,并用空间统计算法进行处理,保存并进行可视化; 2、熟悉空间核密度估计方法(Kernel Density Estimate) 数据准备 1.解压Experiment3.zip文件,打开ArcMap,将数据students_wgs84.shp添加到一个新地空地图文件中,如下图所示 数据为NUIM在校生学籍注册地址,坐标系为WGS84,即所使用地为经纬度,打开属性表:

主要属性名称含义如下: ●County:学生所在郡/县,如DUBLIN为爱尔兰首都都柏林; ●ED:Electrol District,爱尔兰最小地行政单元,直译为“选举区”,隶属于 County; ●ED_ID:ED地区分编号; ●INITIAL_AD:入学前家庭地址 ●TYPE:此处均为STUDENT ●COUNTY_ID:郡县编号 第一部分 在Sublime中新建task_Part1.py,并保存到与数据相同地文件夹下,输入以下代码:

这个代码就是将来自于DUBLIN、MEATH、LOUTH三个郡(County)的学生取出来,如用 counties=["DUBLIN","MEATH","LOUTH"] 定义的循环体。然后将取出的这些记录存储在一个临时地文件temp_lyr中:result=arcpy.MakeFeatureLayer_management(input_fc,temp_layer,"\"COUNTY\" ='"+unit+"'") 最后将这些抽取地点地坐标值分别按照所属地郡存储至“data_DUBLIN.csv”、“data_LOUTH.csv”、“data_MEATH.csv”三个CSV文件中,可以在当前文件夹下的子文件夹csvdata去查看这些文件地内容: Longitude,Latitude -6.68536404605,53.6525262979 -6.66472854007,53.6483054369 -6.24173854864,53.6820175854 ... 第一部分任务 1)编辑上面地代码,要求通过“ED”的值,选取来自于LEIXLIP、CELBRIDGE、KILCOCK三个区域的学生,并将学生地坐标值分别存储为名称为data_LEIXLIP、data_CELBRIDGE、data_KILCOCK的CSV文件,存储到csvdata子文件夹下; 2)任选上面一个CSV坐标文件,写一个python脚本,创建一个KML文件,要求将坐标文件中的每个坐标都存储为一个个地标,KML文件中地单个地标格式为: Simple placemark

第十三课人生苦短我用Python语法简单才会越来越被编程界欢迎

第十三课人生苦短我用Python语法简单才会越来越被编程界欢迎初始函数 1.1 函数的作用 ;1.2函数的组成 1.3定义和调用函数 函数的进阶使用 2.1函数类型 2.2返回多个值 多函数协作 3.1变量作用域 3.2函数嵌 /\e这两节课的主要内容是带大家探究“熟悉的陌生人”——函数。之所以这么说,是因 为我们之前已经接触过Python函数,但是对它没有系统地了解过。这节课,我们一起经营KFC,在我们KFC门店里通过运用函数解决我们的问题。首先在学习具体知识前,我向大家简 要的介绍下函数的作用,知道函数是做什么用的? 1 函数的作用 人生苦短,我用Python”,正因为Python语法简单,才会越来越被编程界欢迎。换言之,我们编程,更应该避免重复性代码。前面学习的循环是减少代码重复的一种手段,那么接下来要学习的函数也是减少重复性代码的另一种手段。它的定义是:

什么意思呢?我们之前写的代码只能执行一次,但是函数中的代码可以使用多次。通俗来讲,函数就如同一个包裹,每个包裹都有一个功能,无论你在哪儿,只要你需要包裹,就把它拿过去用;你需要什么样功能的包裹,就用什么样的包裹;你需要使用多少次包裹,就使用多少次。这就是函数,在之后的旅程中,你会越来越体会到函数的妙用。讲了这么多了,先看一下函数长什么样子? 1.2函数的组成 先不着急看Python的函数,先来个数学函数,那些年,我们错过的函数。数学函数y = 6*x +9 , x是自变量,6*x+9是执行过程,y是因变量,自变量x决定了因变量y得值。那么,你可以将y = 6*x +9看作成3部分 在Python中,我们遇到很多函数,有负责输入数据的函数,有负责数据处理的函数,有负责数据输出的函数。 以上就是我们见过的Python的函数,这些函数是Python自带的函数,我们不需要管这些函数怎么来的,就负责用就好了,这些函数也叫内置函数。你会发现,上面这些函数,都有括号(),里面存放我们需要传给函数的数据,在Python江湖中,这种数据称为【函数的参数】。【参数】指的是函数要接受、处理的数据,其实就是一个变量。

Python学习之Python应用领域介绍(一)

Python学习之Python应用领域介绍(一) 最近Python这个词可是在我们的生活里火了,无论是朋友圈还是身边的人,几乎所有人都知道Python,那Python到底有多大魅力呢,今天我们就从Python的一方面来分析,就是Python的应用领域有哪些。 下面就让我们一起来看看它的强大功能: Python(派森),它是一个简单的、解释型的、交互式的、可移植的、面向对象的超高级语言。这就是对Python语言的最简单的描述。 Python有一个交互式的开发环境,因为Python是解释运行,这大大节省了每次编译的时间。Python语法简单,且内置有几种高级数据结构,如字典、列表等,使得使用起来特别简单,程序员一个下午就可学会,一般人员一周内也可掌握。Python具有大部分面向对象语言的特征,可完全进行面向对象编程。它可以在MS-DOS、Windows、Windows NT、Linux、Soloris、Amiga、BeOS、OS/2、VMS、QNX等多种OS上运行。

编程语言 Python语言可以用来作为批处理语言,写一些简单工具,处理些数据,作为其他软件的接口调试等。Python语言可以用来作为函数语言,进行人工智能程序的开发,具有Lisp语言的大部分功能。Python语言可以用来作为过程语言,进行我们常见的应用程序开发,可以和VB等语言一样应用。Python 语言可以用来作为面向对象语言,具有大部分面向对象语言的特征,常作为大型应用软件的原型开发,再用C++改写,有些直接用Python来开发。 数据库 Python在数据库方面也很优秀,可以和多种数据库进行连接,进行数据处理,从商业型的数据库到开放源码的数据库都提供支持。例如:Oracle,Ms SQL Server等等。有多种接口可以与数据库进行连接,至少包括ODBC。有许多公司采用着Python+MySql的架构。因此,掌握了Python使你可以充分利用面向对象的特点,在数据库处理方面如虎添翼。

Python简单指导应用题

1.使用turtle 库绘制轮廓颜色为红色(red)、填充颜色为粉红色(pink)的心形图形,效果如下图所示。阅读程序框架,补充横线处代码。 from turtle import * color('red', ____①____) (____②____) left(135) fd(100) right(180) circle(50, –180) left(90) circle(50, –180) right(180) fd(100) end_fill() hideturtle() done() 输出 参考代码: from turtle import *

color('red','pink') begin_fill() left(135) fd(100) right(180) circle(50,-180) left(90) circle(50,-180) right(180) fd(100) end_fill() hideturtle() done() 2.使用turtle 库绘制红色五角星图形,效果如下图所示。阅读程序框架,补充横线处代码。(____①____) setup(400,400) penup() goto(–100,50) pendown() color("red") begin_fill() for i in range(5): forward(200) (____②____) end_fill()

hideturtle() done() 输出 参考代码: from turtle import * setup(400,400) penup() goto(-100,50) pendown() color("red") begin_fill() for i in range(5): forward(200) right(144) end_fill() hideturtle() done() 3. 使用turtle 库绘制正方形螺旋线,效果如下图所示。阅读程序框架,补充横线处代码。import turtle n = 10

在ArcGIS下基于Python的矢量数据处理方法

测绘技术装备 第18卷 2016年第4期 技术交流 63 在ArcGIS 下基于Python 的矢量数据处理方法 林璐 王爽 李海泉 侯兴泽 马鹏刚 (国家测绘地理信息局第二地形测量队 陕西西安 710054) 摘 要:在ArcGIS 中地理处理可以通过Python 脚本语言来具体实现。通过Python 串联Arcgis 的地理处理工具,实现工作流自动化完成,同时,实践批处理过程,解放人工的机械重复工作,提高效率,进而保证数据质量。现以地形图中示坡线的正确、严谨表达为实践案例,介绍了在ArcGIS 下利用Python 处理矢量数据,为矢量数据处理的高效、自动化提供解决方法。 关键词:Python ARCGIS 地理处理 示坡线 1 引言 地理处理是GIS 用户应用的重要组成部分,ArcGIS 的ArcToolbox 窗口为GIS 用户提供了数百个地理处理。对于数据处理人员在使用ArcGIS 地理处理工具时,就会遇到这样的难题,如何将几个简单的地理处理工具串联起来,自动化地完成一个简单工作流,使得人工操作转换为自动化的程序批处理 过程[1] 。 Python 是一种不受局限、跨平台的开源编程语言,它功能强大且简单易学。同时,它可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本), 并且可嵌入(使ArcGIS 可脚本化)。目前,Python 已延伸到ArcGIS 中,成为了一种用于进行数据分析、数据转换、数据管理和地图自动化的语言。运用 Python 语言可以实现对地理数据的批处理,从而有 助于提高工作效率[2] 。 2 开发案例说明 示坡线,是指示斜坡降落的方向线,它与等高线垂直相交。一般表示在谷地、山头、鞍部、图廓边及斜坡方向不易判读的地方。凹地的最高、最低 一条等高线上也应表示示坡线[3] 。在测绘4D 产品之一的数字线划图(DLG)中,示坡线一般以有向点或有向线(长度为定值的线段)的方式表达。其中,有向点应严格捕捉相应等高线,通过填写要素角度属性项表达所示方向;有向线为线段,起始节点应严格捕捉相应等高线,终止节点指向所示方向,线段长度为规范要求长度。 图1 山丘、山峰和盆地、洼地的示坡线示意图 一般在DLG 制作过程中,特别是中小比例尺地形图,通常利用立体测图系统,在恢复立体影像相对模型的情况下,人工判断地貌,并采集示坡线。采集时要求在对应等高线采集第一点,沿斜坡的方向采集第二点。为提高生产效率及生产工序技术要求,此时采集的示坡线,不符合前述DLG 拓扑规范要求。存在未严格捕捉等高线,造成悬挂和相交的拓扑问题;或示坡线要素长度不定,不符合技术要求;亦或示坡线采集图形上看正确,实际上刚好与要求相反,是由斜坡降落方向向等高线采集。这些情况致使下工序矢量数据编辑处理时,需要人工核对、修改,工作量大且繁琐(尤其是在沙漠、特殊丘陵地区,1幅1∶10000比例尺地形图可能需要上千个示坡线表示地貌形态),如果作业人员责任心不足还易造成质量隐患。 3 处理方案设计 3.1 方案设计思路 数据要素处理的关键是两点:一是解决拓扑问题,二是实现示坡线角度正确表达。因此解决思路是:首先,要满足拓扑要求,即相应要素之间严格

Python简单应用题

1.使用 turtle 库绘制轮廓颜色为红色(red)、填充颜色为粉红色(pink)的心形图形,效果如下图所示。阅读程序框架,补充横线处代码。 from turtle import * color('red', ____①____) (____②____) left(135) fd(100) right(180) circle(50, –180) left(90) circle(50, –180) right(180) fd(100) end_fill() hideturtle() done() 输出 参考代码: from turtle import * color('red','pink') begin_fill() left(135) fd(100) right(180) circle(50,-180) left(90) circle(50,-180) right(180) fd(100) end_fill() hideturtle() done() 2.使用 turtle 库绘制红色五角星图形,效果如下图所示。阅读程序框架,补充横线处代码。(____①____)

setup(400,400) penup() goto(–100,50) pendown() color("red") begin_fill() for i in range(5): forward(200) (____②____) end_fill() hideturtle() done() 输出 参考代码: from turtle import * setup(400,400) penup() goto(-100,50) pendown() color("red") begin_fill() for i in range(5): forward(200) right(144) end_fill() hideturtle() done() 3. 使用 turtle 库绘制正方形螺旋线,效果如下图所示。阅读程序框架,补充横线处代码。 import turtle n = 10 for i in range(1,10,1): for j in [90,180,–90,0]: (____①____) (____②____) n += 5

ArcGISPython实习指导

实习一Python基础学习 1.什么是python Python是一种不受局限、跨平台的开源编程语言,它功能强大且简单易学。因而得到了广泛应用和支持。 ArcGIS 9.0社区中引入了Python。此后,Python被视为可供地理处理用户选择的脚本语言并得以不断发展。每个版本都进一步增强了Python体验,从而为您提供更多的功能以及更丰富、更友好的Python体验。 ESRI已将Python完全纳入ArcGIS中,并将其视为可满足用户需求的语言。下面仅介绍Python的部分优势: ?易于学习,非常适合初学者,也特别适合专家使用 ?可伸缩程度高,适于大型项目或小型的一次性程序(称为脚本) ?可移植,跨平台 ?可嵌入(使ArcGIS可脚本化) ?稳定成熟 ?用户社区规模大 Python已延伸到ArcGIS中,成为了一种用于进行数据分析、数据转换、数据管理和地图自动化的语言,因而有助于提高工作效率。 2.在ArcGIS中使用Python (1)打开ArcMap,在工具栏中点击“”按钮,位置如图1-1所示,即可打开Python编辑窗口。

图1-1 (2)Python程序为解释运行,输入一行代码,按“回车”键后即可运行,如图1-2。 图1-2

3.行和缩进 学习Python与其他语言最大的区别就是,Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。(1)缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。在Python窗口中输入如图1-3所示的代码块并运行,该代码块是严格缩进的。 图1-3 (2)以下代码将会执行错误,如图1-4: 图1-4

用python写的简单病毒(无害)资料

计算机病毒 实验报告 姓名:郭莎莎学号: 201306043023 培养类型:技术类年级: 2013级 专业:信息安全所属学院:计算机学院 指导教员:龙军职称:教授 实验室:实验日期: 2016.7.3 国防科学技术大学训练部制

《本科实验报告》填写说明 1.学员完成人才培养方案和课程标准要所要求的每个实验后,均须提交实验报告。 2.实验报告封面必须打印,报告内容可以手写或打印。 3.实验报告内容编排及打印应符合以下要求: (1)采用A4(21cm×29.7cm)白色复印纸,单面黑字打印。上下左右各侧的页边距均为3cm;缺省文档网格:字号为小4号,中文为宋体,英文和阿拉伯数字为Times New Roman,每页30行,每行36字;页脚距边界为2.5cm,页码置于页脚、居中,采用小5号阿拉伯数字从1开始连续编排,封面不编页码。 (2)报告正文最多可设四级标题,字体均为黑体,第一级标题字号为3号,其余各级标题为4号;标题序号第一级用“一、”、“二、”……,第二级用“(一)”、“(二)” ……,第三级用“1.”、“2.”……,第四级用“(1)”、“(2)” ……,分别按序连续编排。 (3)正文插图、表格中的文字字号均为5号。

实验题目 Python病毒功能实现 目录 一、实验目的 (4) 二、实验内容 (4) 三、实验原理 (4) (一)Linux病毒 (4) 1.Linux病毒的发展史 (4) 2.Linux平台下的病毒分类 (5) (二)文件型病毒 (6) 1.感染COM文件: (6) 2.感染EXE文件: (6) (三)python文件 (7) 四、实验所需软硬件 (8) 五、实验步骤 (8) (一)程序框架 (8) 1.传播感染模块 (8) 2.备份模块 (9) 3.触发和破坏模块 (9) (二)具体实现 (9) (三)结果截屏 (11) 六、实验结果与分析 (12) 七、思考与总结 (12)

python基础语法

Python的特点 1. 简单 Python是一种代表简单思想的语言。 2. 易学 Python有极其简单的语法。 3. 免费、开源 Python是FLOSS(自由/开放源码软件)之一。 4. 高层语言 使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节。 5. 可移植性

Python已被移植到很多平台,这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、 BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、 Windows CE甚至还有PocketPC。 6. 解释性 可以直接从源代码运行。在计算机内部,python解释器把源代码转换为字节码的中间形式,然后再把它翻译成计算机使用的机器语言。 7. 面向对象 Python既支持面向过程编程也支持面向对象编程。 8. 可扩展性

部分程序可以使用其他语言编写,如c/c++。 9. 可嵌入型 可以把Python嵌入到c/c++程序中,从而提供脚本功能。 10. 丰富的库 Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、 电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk 和其他与系统有关的操作。 ---------------分割线------------------------以下是Python的基本语法--------------------------------------------------------- 一、基本概念

ARCGIS与PYTHON

arcgis与python(zz) ESRI软件中的脚本语言一直使用两种模式。 第一种为AML宏语言,该模型显示了PrimOS系统特性。输出为文件格式,数据处理基于目录和文件系统,代码是线性的。 第二个模式是AVENUE语言,继承了Smalltalk的特性。对象响应是调用方法名称,处理事物不必是线性的,有时会引起I/O冲突,集成啦其他语言的混合包。两种语言都有各自的弊端。 随着ArcGIS8的出现,基于地理视图的脚本语言开始引入,基于接口的编程要求用户使用“真正的”编程语言,如,C++,VB,访问ArcGIS8的功能。没有脚本语言自动完成该系列任务。这用户必须写可执行程序,在复杂的接口树和对象里找到需要的工具,并汇编成DLLs动态库和类型库来使用自定义功能。 ArcGIS9版本的面世,ESRI再次提供了访问该软件的新的脚本语言。ESRI意识到,许多用户并不想或不必是个开发者,但还想使用工具解决他们遇到的问题。这些工具包括,友好一致的界面,脚本对象,用于自定义功能所必须的细致入微的编程工具。 满足这些需要,ESRI提供了多种脚本语言-使用ArcObjects-开始空间处理框架。Python,ESRI支持的脚本语言之一,是一种开源的,编译性的,动态类型的,面相对象的脚本语言之一。Python包含在ArcGIS9中,典型的安装与其他组件一起安装。本篇文章总体介绍如何利用P ython的资源帮助大家的GIS编程以及集成ESRI工具。 1Python简介 Python第一次公开发行是1991年,作者是CWI(阿姆斯特丹国家数学和计算机科学研究所)的研究员Guido van Rossum。名字来源于Guido喜欢的喜剧连续剧“Monty Pytho n”,python继承了许多其他语言的特征,如ABC,Modula,LISP,以及Haskel,这些包括很高级的特征,如元类(metaclass),生成器,列表综合(list comprehension)。但更多的程序员需要的仅仅是python的基本类型,如,列表,字典,字符串。 虽然,已经有13年的发展,目前的版本是2.3。这反映了Guido慈善的独裁者设计哲学,以及开发组的精益求精。他们努力增加新的内容,并保持向后的兼容性,当必要时,重新设计在以前发现有问题的地方。 2python设计 Python语言被设计成易于使用,易于学习的动态脚本语言,这意味着用户不需要编译,交互式的方式可以让用户学习到许多执行层次。 Python的设计哲学,Tim Peter在The Zen of Python描述的最清晰,python程序员遵照这些哲学指导他们学习这门语言,帮助他们编写代码,以保持python的一贯风格。

从零开始:写一个简单的Python框架

你为什么想搭建一个Web框架?我想有下面几个原因: 有一个新奇的想法,将会取代其他框架。 获得一些疯狂的街头信誉。 你的问题比较独特,现有的框架不适合。 你想成为一位更好的Web开发者,你对Web框架是如何运行的感到好奇。 我将集中精力在最后一点上。这篇文章旨在描述我从写一个小型的服务框架中学到了什么,我将解释框架的设计,以及如何一步一步,一个函数一个函数的实现这个框架的。关于此项目完整的代码可以点击此链接。 我希望我的行为可以鼓励大家去尝试因为真的非常有趣,我们可以从中学到很多关于web 应用程序是如何工作的知识,而且比我想象的要容易的多。 范围 框架的功能有:请求-响应周期、身份验证、数据库访问、模板的生成等。Web开发者使用框架,因为大多数Web应用程序共享大量的相同功能,并且没必要为每个项目都重新实现这些功能。 像Rails或Django这些较大的框架做了高层次的抽象并且功能完备。这些框架经历了很长时间来完成所有这些特性,因此,我们重点完成一个微型框架。开始写代码前,我先列一下这个微型框架的功能及一些限制。 功能: 可以处理GET和POST的HTTP请求。从该WIKI中你可以了解获得关于HTTP简介。 异步的(我喜欢Python3 asyncio这个模块)。 包含简单的路由逻辑,以及参数捕获。 像其他酷的微框架一样,提供简单的用户级API。 可以处理身份验证,因为学会会非常的酷(在第2部分介绍)。 限制:

仅完成HTTP/1.1协议的一小部分:不实现transfer-encoding, http-auth, content-encoding (gzip), persistant connections(持久连接)这些功能。 响应信息中无MIME-guessing,用户将不得不手动设置。 无WSGI-只是简单的TCP连接处理。 不支持数据库。 我决定用一个小的用例来使上面的需求更具体,同样可以演示这个框架的API: 用户应该能够定义几个异步函数返回字符串或响应对象,然后用表示路由的字符串与这些函数配对,最后通过一个函数调用(start_server)开始处理请求。 有了这些设计后,我需要编码来实现这些抽象: 一个可以接受TCP连接和进度的异步函数。

Python简单应用题

1、使用turtle 库绘制轮廓颜色为红色(red)、填充颜色为粉红色(pink)的心形图形,效果如下图所示。阅读程序框架,补充横线处代码。 from turtle import * color('red', ____①____) (____②____) left(135) fd(100) right(180) circle(50, –180) left(90) circle(50, –180) right(180) fd(100) end_fill() hideturtle() done() 输出 参考代码: from turtle import * color('red','pink') begin_fill() left(135) fd(100) right(180) circle(50,-180) left(90) circle(50,-180) right(180) fd(100) end_fill() hideturtle() done() 2、使用turtle 库绘制红色五角星图形,效果如下图所示。阅读程序框架,补充横线处代码。(____①____)

setup(400,400) penup() goto(–100,50) pendown() color("red") begin_fill() for i in range(5): forward(200) (____②____) end_fill() hideturtle() done() 输出 参考代码: from turtle import * setup(400,400) penup() goto(-100,50) pendown() color("red") begin_fill() for i in range(5): forward(200) right(144) end_fill() hideturtle() done() 3、使用turtle 库绘制正方形螺旋线,效果如下图所示。阅读程序框架,补充横线处代码。import turtle n = 10 for i in range(1,10,1): for j in [90,180,–90,0]: turtle、seth (____①____) turtle、fd(____②____) n += 5 输出

Arcgis 10中的PYTHON

By diligentpig
$UF*,6
Geoprocessing GIS ×' Tools & '
3\WKRQ
GeoVisualization ArcGIS 5' > GeoData
Geoprocessing × 9.0 ,'
Modeling Python Python / üPython Python /
"ü 3
/
5'
/"
Python ü '
ArcGIS 10 / ü
ArcPy

By diligentpig
Python ArcGIS arcgisscripting module9.3 ,'
9.2 ,' Python List
ArcGIS 10 / ArcPy site-package Python > %# ArcPy 800+ / , ArcPy
arcgisscripting module > % > '/
/"
%#=#%# Geoprocessing Tools ! %
Python IDE
cursorsgeometry / classes NumPy
/NumPyArrayToRasterRasterToNumPyArray
DUFJLVVFULSWLQJ DUFS\
# 9.3 import arcgisscripting gp = arcgisscripting.create(9.3) array1 = gp.createobject("array") # 10.0 import arcpy array2 = arcpy.Array()
Python Window

arcgispython图形有关操作

arcgis python 图形有关操作 arcgis python 图形有关操作作者:gisoracle | 出处: 博客园| 2012/2/13 23:03:29 | 阅读49次计算字段(数据管理)ArcGIS 10汇总为要素类、要素图层或栅格目录计算字段的值。查看计算字段工具的使用示例用法Python 表达式可通过几何对象中的属性(type、extent、centroid、firstPoint、lastPoint、area、length、isMultipart 和partCount)进行 创建。!shape.area!Python 表达式可以使用具有面积或线性单位的几何area 和length 属性将值转换为不同的测量单 位(例如!shape.length@kilometers!)。如果数据存储在地理坐标系中且具有线性单位(例如英里),则使用测地线算 法计算长度。在地理数据中使用面积单位会产生不正确的结果,这是由于沿globe 的十进制度并不一致。面积测量单位关键字:英亩| 公亩| 公顷| 平方厘米| 平方分米| 平方英寸| 平方英尺| 平方千米| 平方米| 平方英里| 平方 毫米| 平方码| 平方地图单位| 未知线性测量单位关键字:厘米| 十进制度| 分米| 英尺| 英寸| 千米| 米| 英里| 毫米| 海里| 磅| 未知| 码在工具对话框中,可将表达式直接输入到表达式参数中,或者使用“字段计算器”以交互 方式构建表达式。使用所选要素集(如从创建要素图层或按属性选择图层内的查询中创建的要素集)时,此工具将只更

新所选的记录。每次操作仅能对一个字段应用计算。现有字段值将被覆盖。如果想要保留原始字段值,应创建输入表副本对于Python 计算,必须在字段名称两旁添加惊叹号(!字段名!)。对于VB 计算,字段名称必须用方括号括起([字段名])。计算文本或字符字段的字符串时,在对话框中,必须对字符串添加双引号("字符串"),而在脚本中,还必须对加双引号的字符串添加单引号('"字符串"')。此工具也可用于更新字符项。应对使用字符串的表达式添加单引号(例如[CHARITEM] = ‘新字符串')。但是,如果字符串已包含单引号,则要对该字符串添加双引号,例如[CHARITEM] = "类型'A'"。要计算数值字段,可在表达式参数中输入数值;值的两旁无需加引号。如果已指定Python 表达式,则此工具支持arcgis.rand() 函数。已为ArcGIS 工具创建 arcgis.rand() 函数,不应将此函数与Python Rand() 函数相混淆。arcgis.rand() 函数的可用分布的语法在随机值的分布语法中进行介绍。表达式与代码块会相互连接。代码块必须返回与表达式的关联;代码块的结果应传入到表达式中。代码块参数可用于创建复杂表达式。您可以在对话框中直接输入代码块,或在脚本中将代码块作为连续字符串输入。Python 数学模块及格式可供代码块参数使用。您可以导入附加模块。数学模块可提供数论函数与表达函数、幂函数与对数函数、三角函数、角度转换函数、双曲函数以及数学常

相关主题
文本预览
相关文档 最新文档