版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
uc
ApplyingTheScienceofWhere
2017年第十五届Esri中国用户大会
欢迎您
使用Python进行空间数据处理和分析
Esri(中国)信息技术有限公司
张舵
Jesri9以他
TMfSCACMCfOfWHIM"
大纲
Python是什么
在ArcGIS中使用Python
案例演示
扩展内容
China
UUlFiG
1
Python
g?esri£fena
Python是什么?
•Python是一种面向对象、直译式计算机程序设计语言,也是一种
功能强大而完善的通用型语言,创始人为GuidovanRossum(吉
多・范罗苏姆)。
1989年圣诞节期间,在阿姆斯特丹,Guido
为了打发圣诞节的无趣,决心开发一个新的
脚本解释程序-Python
Ghsrichina
THESOENCEOFWHERF
为什么使用Python
・易于学习,非常适合初学者,也特别适合专家使用
・可伸缩程度高,适于大型项目或小型的一次性程序
•可移植,跨平台
・免费开源
•可嵌入(使ArcGIS可脚本化)
•与ArcGIS深度集成
・稳定成熟
・用户社区规模大
・胶水语言
•丰富的库
China
2
在ArcGIS中使用Python
Resri9顾a
-TMfSCIiMCffOfWHCltf
在ArcGIS使fflPython
•Python在ArcGIS9.0版本中被引入到ArcGIS产品
•Esri已将Python完全纳入ArcGIS中,与ArcGIS深度集成
・已成为ArcGIS推荐使用的脚本语言
WhatOptionsDoIHavefor
ScriptingArcGISwithPython?
TheArcGISplatformprovidestwotechnologiesforscripting
andautomation:
•ArcGISAPIforPython
,ArcPy
TheArcGISAPIforPythonandArcPycanbeusedindividually
ortogethertopoweryourGISneeds.
BEJING
THESCONCEOF
ArcGISPythonAPI的发展历程
基于dispatch自动化制图
arcgisscriptinarcgisscriptinPython2.7数据访问
geoprocessorArcPy站点
Python2.1g第三方包空间分析Python
Python2.4Python2.5
Python2.63.4
ArcGISArcGISArcGIS
9.0/9.19.29.3
ArcGIS中Python的用法
1.字段计算器2.制作gp工具
字段计算器InsertPointCD
解析程序
CKB叨木©Pythondatapath
I):pylbon制作工具并发布成GP服务\dala\point.shp
字段:功能(U)回
.oonjucjateOAjd
◎数字.denoninator)
.imagC
O字符串(D.numeotocO)
O日期ID;ffijSege<_r8toO)
38
厮,hexT°
m*mc
.isintegerQfirstPoint
math.acos()
math.acosh()
math.asin()V
。必示代码块.
/4♦•X
旗理班的本代码:
M90tVabe(a.b):
if(a-b):retum1
elsere(urn0
gelVabe(!al.tbf)
Ias11取消]I环境…]匚反示帮助>o
耻漂独得”
Chiha
、王开宜玄面THESCIENCEOFWHERE
ArcGIS中Python的用法
4.PythonAdd-in
3.模型构建器
ACMJIKOjxions
45by:Ewi
+端够*DMC
C.p-inade«r^cnkxth&Addiiv.-■1.0
吩3隧MUYNone
AEtepAddSe田T>pcinadcKfi|MkwifixMAdd-in.
+C«tedby.Esni
Or.pemacfe&cpwiftrthsAckinTyp®:
flCorTiTTrct
NC#vj:ofy:A*M-lnCcocnM%
AitfTme
+C-cuicdby:Ew
o\^AX^TITOMenEd>ngFeatureAiftxn©
O®♦隹二FGJB
1<IiiMtAllAdd-ln>andcann“iuctheu*crintcrfiK«
oHhAddIncomponenlMMCtbecuUomt/cdialog.
5.Pythonwindow3
»imparlarcpx.计
・fo^s=ajcpy.SearchCursor(test)
.r<>u=rouxnexm
uniqucLisl=[]参数②
''•'''Vfnrow.getyalue("namer)notinuniqueList:
uni.gueUst|jpnd(row.getValue(,'naniel*));
roweax)egeW\firri(arcc^randC1nteger14')
-f0r小JJ^ainq时犍叫"㈣):代码块
/沙namcM"।孤,।川5+T
cur-arcpy.UpdateCursorC'test".str)fwind==i:
return'north'
tnrrovKincur:fwind==2:
count+=l
row.id=countreturn'east'
cur.updatcRow(row)fwind==3:
return'south'
数据类型
Variant
L确定_I
ArcGIS中Python的用法
5.在ArcGISforServer中使用python
TogramFiles\ArcGIS\Server\tools\adnin>manageservice.py_
:e:manageservice.py[-h]-uUSERNAME-pPASSWORD-sSITE[-nNAME]
[-o{status,start5stop,delete}][-1]
6.在PortaVonline中使用python
>:\>pythonprepareEsriBaseniapsForOfflinelse.py/arcgismahw1022mahw1022
Esage:prepareEsriBasemapsForOfflinelse.py[-h]-uPORTAL-oPORTALADMIN-s
PORTALPASSWORD-aAGOADMIN-p
AGOPASSWORD[-fFOLDER
Chine
THESCIENCEOFWHERE''
ArcPy介绍
Arcpy——为用户提供了使用Python语言操作所有地理处理
工具(包括扩展模块)的入口,并提供了多种有用的函数
和类,以用于处理和访问GIS数据。使用Python和ArcPy,
可以开发出大量的用于处理地理数据的实用程序。
arcpy.daarcpy.mappiarcpy.saarcpy.na
ng
ArcPy的函数
环境和.
设置
描述数•字段
据,ArcGIS
数据存:
常规地理数Online
储/Portal
.列出数
/——M几何■据库管
据
获取设.
•栅格间
许可授\•消息和置参数
、-----7权和安・错误处
装■理.
.日志历•发布,
史
Shina
THESCIENCEOFWHERE
ArcPy函数
hiportarcpy
•CursorQli^)ows=arcpy.InsertCur$orKnc:/data.gdb/roads_lutn]
-SearchCursor(查询游标)row=rows.newRow()
row.setValue("rowid",x)
■Insertcursor(插入游标)row.setValue("distance”,100)
rows.insertRow(row)
HJpdateCursor(更新方钵示)lelrow
leirows
importarcpy
rows=arcpy.SearchCursor(
,'c:/data/counties.shp,\fields="NAME;STATE_NAME")
forrowinrows:
print("state:{0},County:{1},Population:{2}".foririat(
ix)w.getValue("STATE_NAME"),
row.getValueC'NAME"),
row.getValue("POP2000")))
h,匚SCONCEOFWHERE
ArcPy函数
arcpy.Describe)
返回数据要素的相关属性
Tables,FeatureClasses,Geodatabases,
Rasters,Coverage,LayerFiles,
RelationshipClasses,Workspaces,
Datasets,FeatureLayersJableViews
importarcpy
#Getthefeatureclasstodescribe(i.e.nC:/Data/airport.gdb/runwaysn)
featureClass=arcpy.GetParameterAsText(O)
desc=arcpy.Describe(featureClass)
#Printselectedfeatureclassproperties
printHshapeType",desc.shapeType
print''hasSpatiallndex^^esc.hasSpatiallndex
print"extentXMinn,desc.extent.XMm
printuextentYMax",desc.extent.YMax
print"thefirstfield'sname1',desc.fields[0].name
print"thefirstfield'stype1',desc.fields[0].type
ArcPy函数
arcpy.ListXXX函数
列出数据
ListDatasets
遍历要素类、表格、栅格等数据
ListFeatureClasses
-返回结果是一个集合
ListFields
ListFiles
ListIndexes
ListRasters
#Settheworkspaceenvironment
z
arcpy.env.workspace='c:/data/leGDB.gdb/fds'ListTables
^outputworkspacetowritetoListVersions
•out_workspace'c:/data/output.gdb'
ListWorkspaces
#Getalistofallfeatureclasses
•featureclasses=arcpy.ListFeatureclasses()
#CHpeachfeatureclasses
,forfcinfeatureclasses:
outputos.path.join(out_workspace,'{}clip.format(fc))
arcpy.Clip_analysis(fc,boundary,output)
richina
OFWHERW
ArcPy类
Cursor,游标
E____________________I
Exceptions|异常
IFeatureSets/r|要素和记录
IRecordSets」i____;___
ArcPy类Fields字段信息
什么情况下使用Python?
1.现有工具实现不了,可以用python
2.流程化需要时,可以使用python
3.需求灵活,需要快速试错
3
案例演示
@esri⑨惊
THfSCIfMCffOfWH£Rf
案例演示:
J矢量数据
♦栅格数据
Chine
THESCIENCEOFWHERE
矢量数据处理都做什么?
派生
演示1:统计
统计每个县不同地块类型的面积
无标题ArcWap□X
EileEditViewBookmarksInsertSelectionGecptocesstigCustomizeWindowsHelp
]修牯2皂xPC一:Editor*•
TabteOfContents1/
母图
Layers
日0「
1徜ottierva*ues>
DLLEI
■Dili
1次
■⑶
■0H1
■D171
■0210
■0220
■0230
□)25(i
■1631
・网
662428.3814161569.996Meters
importos,sys,arcpyresult.txt-记事本
f=open(r,D:\2017UC\Demo\Demol\result.txt\'w,)
rows=arcpy.SearchCursor(,testdata')文件(R)|购(E)格式(O)查看M帮助(H)
row=rousne\i()4032302301.69
unK]ueList=(L])403230210796.85
uniquel.istDIJECTI=[n]4032301114.91
whilc.„row:_../„_....4032301411942.68
ifrow.getValuelXZTIANKTHX)notinumqueTList:403230171501.66
H>4032302202823.98
uniqueListappend!ro\v.getValue("XIAN));03230131827.45
row=rowsnext()32316315.0
Fforiinran即“OJen(uniqueLisl)):
v03230250859.64
filter=uniqueList|],032301205.79
=(!03231633178.07
curarcpyearchCursor^^stda[a»xian)
forrow2incur:
whilegetValue(nDI_LEI")notinuniqueListDILEI:
uniqueListDILEI.appena(row2.getValue(,,DI_LEI"))
row2=cur.ncxt()
1需枷tDIL晒5"皿阶
dilei="'DI_LEr"+"=',+…+flt+,,"+"AND',+xian
print(dilei+"H)
searchcur=arcpy.SearchCursor("testdata".dilei)
value=0.0
.—wl^eSo哂暨2叫efMIANJI")
print(value)
.f.writelines([filter+",(,flt+",,,,as,&value+"\n"])
xt.close(A)
Shina
演示2:过滤
空间数据随机抽取
tarn
・m_■
・Eq
wlr.是
?■rar
・
・
、
・
?JP:»T«I・I
--------■・■・,・・R・・・一,C若:建管弑瞿装到2A■」K
・
以
万M・V・■■■”■“■三m・
・
・5
■・・丁・••・■・,■.W,U.IG—Y/■」£:,•1/
i«
i丁・NA^・S
ziW匕•■♦,乎■!?>■,■二£■:■余"当■岂,
■u
importarcpyndom
A=random^-sample(range(1673),50)
value=tn
Fforiinrange(0,50):
ifi==49:
value+='FID='+'Sd'。(A[i])
else:
Tvalue+='FID二'+'Sd'%(A[i])+〃0R"
arcpy.SelectLayerByAttribute_management(HRange,'/'ADD_TO_SELECTIONn,value)
演示3:转换
坐标串转面
BC口importxlrd,xlwt,arcpy
类型
名称x11spathA2017UC\imiAD.xo3\Lot.xls
112.655,36.252;113.335,35.609;112.536,34.维陌x坳歌媪嬴雕勰翱懒东获取
地块1耕地872:111.889,35.414:112.655,36.252
112.655,36.252:113.393,37.047;114.078,36.cols=table.colvalues(3)
林地300;113.335,35.609;112.655,36.252
地块2nrows=table.nrows
113.393,37.047:114.117,37.890;115.038,37.point=arcpy.Point()
荒地182J14.078,36.300:113,393,37.047
地块3array=arcpy.Array()
114,117,37.890;114.789,38.718:115.755,37.
耕地polygonGeometryList=[]
地块4999:115.038,37.182:114.117,37.890cur=arcpy.InsertCursor(
113.335,35.609:114.168,34.881;113.307,34.nn
地块5耕地168;112.536,34.872;113.335,35.609rD:\2017UC\Demo\Demo3\data\polygon.shp)
115.038,37.182:115.921,36.283;114.892,35.aforiinrange(l,nrows):
地块6荒地495;114.078,36.300;115.038,37.182str=table.cell(i,3).value
115.038,37.182:115.921,36.283;114.892,35.name=table.cell(i,2).value
地块7赧495;114.078,36.300:115.038,37.182points=str.spHl(';')
114.408,32.875:115.565,33.896;116.570,32.forjinpoints:
耕地
地块8936;115.215,31.642;114.408,32.875xy=j.split(';)
115.565,33.896;117.255,35.495;118.154,34.printxy[0
地块9耕地490;116.570,32.936;115.565,33.896
printxy[l
print'\n'
point.X=float(xy[0])
point.Y=tloat(xyllJ)
array.add(point).
row=cur.newRow()|
row.shapearray
row.namename
anay.removeAll()
cur.insertRow(row)
delCUr
演示4:变更
记录地块权属人变更的要素(字段计算器)
国▼髯▼届励口邮大、土地变更前权属人
地块Copy土地变更后权属人
FIDShape不yni.vi.xT承包人
上.Polygon0
Polygon水浇一李四0
水浇
£PolygonJI0
3±°》gon水浇李四
,IPolygon吴瑞史瑞
判断土地权属人是否变化,不变则Mark
5李四吴瑞
6Porjpfi水浇李四值为1,否则为0
7Polygon张三
-
8PoJigon水浇李四李四-------------------------0
9水浇舞李伟一0
10Eol;ygon水浇李四李四0
水浇
•>Polygon士九王五0
天瑞
12Polygon水浇吴瑞0
水浇
13Polygon天土而0
水流
HPolygon李小红李小红0
13Polygon水浇李小红李小红0
16Polygon7健李四李四0
李四
17Polygon______水浇______场0V
4八”小m
>
4►IH-(0outof225Selected)
地块Copy
演
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泪囊炎知识测试题及答案
- 中职模特大赛典型试题及答案
- 企业策划考试试题及答案呈现
- 音量和音调测试题目以及对应答案
- 业务专员测试题与参考答案
- 覆膜工艺考试题目及详细答案
- QC岗位晋升考试试题及答案
- 名著傅雷家书题目及答案解析
- 2026年寒假作业探索精神实践活动
- 政治人生测试题及全面答案解析
- 建筑工程管理专业中级职称理论考试题及答案(2026年)
- 2026湖北黄石市阳新县事业单位统一招聘107人笔试参考题库及答案详解
- 2025年消防工程师继续教育题库-含解析147题
- 8.口腔类医疗服务价格项目落地政策解读
- GA/T 1999.3-2025道路交通事故车辆速度鉴定方法第3部分:基于视频图像
- 退休人员返聘工作合同书二篇
- 商业航天行业研究系列7:垂直整合背后的隐形工业巨网SpaceX供应链与BOM全景拆解-卫星篇
- 云梯车安全专项施工方案
- 2026年全国职业院校技能大赛(电工赛项)理论考试核心题库(新版)
- 2026年国有企业新员工转正综合评估及企业文化认同与岗位技能达标测试
- (2026版)《临床静脉导管维护操作专家共识》解读
评论
0/150
提交评论