PythonArcPy在地质信息处理中的基本应用.pdf
- 文档编号:3432232
- 上传时间:2023-05-05
- 格式:PDF
- 页数:4
- 大小:217.19KB
PythonArcPy在地质信息处理中的基本应用.pdf
《PythonArcPy在地质信息处理中的基本应用.pdf》由会员分享,可在线阅读,更多相关《PythonArcPy在地质信息处理中的基本应用.pdf(4页珍藏版)》请在冰点文库上搜索。
地矿测绘2017,33
(1):
1517CN531124/TDISSN10079394SurveyingandMappingofGeologyandMineralesourcesPythonArcPy在地质信息处理中的基本应用*?
叶宝莹(中国地质大学地质调查研究院,北京100083)摘要:
Python语言作为一种开源语言,在GIS软件中,常作为辅助工具使用,其为ArcGIS提供了大量的处理模块,能更高效地完成地质信息处理工作。
利用Python语言,调用集成ArcGIS中ArcPy软件包,能实现地质数据的输入、投影变换以及标准图幅查询等功能,同时其代码简单易读,便于使用,可为地质数据处理人员提供更方便的工具。
关键词:
Python;ArcGIS;ArcPy;地质信息处理中图分类号:
P209;TP311文献标识码:
A文章编号:
10079394(2017)01001503BasicApplicationofPythonArcPyinGeologicalInformationProcessingYEBao-ying(InstituteofGeologicalSurvey,ChinaUniversityofGeosciences,Beijing100083,China)Abstract:
Pythonasanopensourcelanguage,intheGISsoftware,oftenhasbeenusedasanauxiliarytoolEspecial-lyinArcGIS,itprovidesalargenumberofprocessingmodules,moreefficientcompletionofgeologicalinformationpro-cessingTheuseofPythonlanguageandArcPysoftwarepackageintegratedinArcGISissoeasytorealizeinput,mappro-jectiontransformationandqueryworkofgeologicaldataThecodeissimple,readableandeasytouse,whichprovidesamoreconvenienttoolforgeologicaldataprocessingpersonnelKeywords:
Python;ArcGIS;ArcPy;geologicalinformationprocessing0引言Python是基于C语言的高级动态解释性语言1。
Python具有以下特点:
简单易学、免费开源;跨平台的解释性高级语言,具有很强的健壮性的面向对象编程语言;可扩性。
ArcPy是一套ArcGIS处理脚本的软件包。
其目的是利用Python建立实用而且高效的地理数据分析、转换、数据管理以及自动制图的处理工具。
在Python中使用ArcPy的另一个主要原因是,Python是一种通用的编程语言。
Python是一种支持动态输入的解释型语言,适用于交互式操作以及为称为脚本的一次性程序快速制作原型,同时其具有编写大型应用程序的强大功能。
利用ArcPy编写的ArcGIS应用程序的优势在于,可以使用来自多个不同领域的GIS专业人员和程序员组成的众多Python小群体开发的附加模块2。
在进行地质信息管理与计算分析时,对于各种复杂的地质数据,进行程序化处理,可以大大减少冗余工作,并保障数据的处理质量。
ESI公司提供的ArcPy软件包正是针对该类问题应运而生的。
本文通过几个简单的Python程序,实现地质数据的输入、投影变换以及图幅查询工作。
1数据输入在实际地质应用中,主要涉及矿点、矿权、地质路线的生成。
野外采集的数据多为坐标对,转入GIS时,需要生成相应的点线面文件。
点文件,ArcGIS10xdesktop软件中有现成的工具ad-dxydata工具可用。
点文件可以为Excel,dbf等格式。
Excel文件无法设置属性字段的长度,类型,会引起错误。
dbf文件则需要在Access中进行字段设置,然后导出才可以使用,过程有些繁琐。
ArcGIS早期产品ArcInfoWorkstaion版本,提供了point、line、polygon等文本文件导入命令,generate命令。
Work-station为数据批量处理的绝佳工具,只是其是基于DOS命令的,需要使用者熟记数百个命令,并熟悉操作流程,而且过程不可逆,若出现操作错误,会引起无法挽回的损失。
其是专业数据处理人员才使用的工具,但ESI公司在Workstaion10版本并不提供更新版本。
基于此,若有大量文本数据需要转入ArcGIS中时,工作比较繁琐。
ESI公司提供的ArcPy模块,可利用Python语言可以完成这类工作。
51*收稿日期:
20170105DOI:
10.16864/ki.dkch.2017.000511点文件生成首先确定点数据文本文件格式,最好是txt格式,也可以是Excelcsv格式。
生成新的文件格式为shapefile格式。
111点文本文件格式点文件可以带有坐标及相应的属性。
属性可以添加逗号分开,如图1所示。
图1点文件格式Fig1Pointfileformat如果不是该格式,可以利用Python语言处理成该格式,处理方法简单有效。
要求:
利用坐标生成点文件;并将序号、名称作为属性写入到属性字段中,如图2所示。
图2点文件生成属性表Fig2Generatingattributetablefrompointfile112关键代码#读取点文件f=file(D:
softyePythontestpointstxt)#确定新shapefile文件的名称及位置fc=D:
softyePythontestnewpointshp#定义投影,有三种方法可以选择,投影代码、投影名称以及投影文件名称prj#spatiref=ArcPySpatialeference(4214)#attention,spatialreferencenameMUSTbeshowinarcMapspatiref=ArcPySpatialeference(Beijing1954)#创建新的shapefile点文件ArcPyCreateFeatureclass_management(D:
softyePythontest,newpointshp,POINT,spatiref)#添加需要的属性字段名称,类型,长度,别名ArcPyAddField_management(fc,num,SHOT,序号)ArcPyAddField_management(fc,name,TEXT,名称)#插入一条记录cursor=ArcPydaInsertCursor(fc,(num,name,SHAPE)pnt=ArcPyPoint()forlineinfreadlines():
j=linesplit(,)pntnum,pntname,pntX,pntY=j0,j1,float(j2),float(j3)points=ArcPyPoint(pntX,pntY)row=pntnum,pntname,pointscursorinsertow(row)fclose()delcursor12线、面文件生成处理地质路线以及矿区,工作区等信息时,需要生成线、面等图形文件。
线和面文件生成方法几乎相同,文本数据格式也相同,线和面的区别在于面文件要求首尾坐标重合。
121线面文本文件格式线由一组有序坐标对组成,并且具有属性,为txt格式,具体如图3所示。
图3线文件格式Fig3Linefileformat面由一组有序坐标对组成,且首尾坐标相同(若不同,首尾自动连线形成封闭),并且具有属性,为txt格式,具体如图4所示。
图4面文件格式Fig4Polygonfileformat要求生成矢量ESIshapefile面文件,并且属性写入属性字段中。
122关键代码生成面文件的程序代码,线文件只需将参数polygon替换为polyline。
f=file(D:
softyePythontestpolystxt)fc=D:
softyePythontestnewpolyshp#defineprojection,3methods,code,nameor*prjfilespatiref=ArcPySpatialeference(Beijing1954)#createanewshapefilesArcPyCreateFeatureclass_management(D:
softyePythontest,newpolyshp,Polygon,spatiref)#createfields,num,nameArcPyAddField_management(fc,name,TEXT)#insertdatarecordscursor=ArcPydaInsertCursor(fc,(num,name,SHAPE)arrays=ArcPyArray()pnt=ArcPyPoint()forlineinfreadlines():
j=linesplit(,)forpxinrange(2,len(j)1,2):
pntnum,pntname,pntX,pntY=j0,j1,jpx,jpx+1printpntnum,pntX,pntYarraysappend(pnt)polys=ArcPyPolygon(arrays)row=pntnum,pntname,polyscursorinsertow(row)61地矿测绘2017年3月arrays=ArcPyArray()fclose()delcursor2投影变换在地质调查中,往往会碰到某些资料的坐标信息为大地投影的情况,主要原因是在地质调查中高斯投影的地形图用得较多,在使用过程中调查人员经常是直接读取地图上的大地坐标,这样往往会丢掉分带信息,看到的仅是一串坐标数值。
由于本文所述的数据基本上是高斯投影数据,因此3带或6带、偏移量等参数信息需要确定。
对于非测绘专业人员来说,确定这些信息比较困难。
因此,可以通过Python程序,完成坐标逆变换,将大地坐标转为地理坐标。
21高斯投影反算公式在高斯投影坐标反算时,原面是高斯平面,投影面是椭球面,已知的是平面坐标(x,y),投影后需要求解的是大地坐标(B,L),相应的投影方程为:
B=1(x,y)L=2(x,y)
(1)具体公式见文献3中“高斯投影坐标变换”。
22关键代码#函数:
Geodetic_coord(k0,L,B,zone,ellipsoid),地理投影转换为高斯投影defGeodetic_coord(k0,L,B,zone,ellipsoid):
ifellipsoid=beijing54:
a,b=6378245,63568630188e=mathsqrt(1(b/a)2)e1=mathsqrt(a/b)21)else:
print输入正确椭球参数e=mathsqrt(1(b/a)2)e1=mathsqrt(a/b)21)ifzone=3:
zonen=int(L/3)L0=zonen*3FE=zonen*1000000+500000else:
FE=500000B=2*mathpi/360*BL=2*mathpi/360*L#L0中央经线#FE东偏L0=2*mathpi/360*L0N=(a2/b)/mathsqrt(1+e12*mathcos(B)*mathcos(B)M1=(1e2/403*e4/6405*e6/2560)*BM2=(3*e2/80+3*e4/320+45*e6/10240)*mathsin(2*B)M3=(15*e4/2560+45*e6/10240)*mathsin(4*B)35*e6/30720*mathsin(6*B)M=a*(M1M2+M3)A=(LL0)*mathcos(B)C=e1*e1*mathcos(B)*mathcos(B)T=(mathtan(B)2YE=FE+k0*N*(A+(1T+C)*A3/6+(518*T+T*T+14*C58*T*C)*A5/1200)XN=k0*(M+N*mathtan(B)*(A2/20+(5T+9*C+4*C2)*A4/240)+(6158*T+T*T+270*C330*T*C)*A*6/7200)returnYE,XN3标准图幅计算31标准地形图分幅系统在中国存在两套标准地形图编号系统:
旧地形图编号系统和新地形图编号系统。
旧地形图编号系统以1100万地形图编号为基础4,150万110万是在1100万地形图编号的基础上再加上各比例尺地形图的代码序号而构成,15万是在110万的基础上加上代码序号,125万在15万基础上加上代码序号,而11万是在110万基础上加上代码序号(见表1)。
表1旧地形图编号系统Tab1Oldcodingsystemoftopographicmap比例尺列号行号代码序号序号示例1100万A,B,C,V1,2,3,60J50150万A,B,C,DJ50A120万1,2,16J501110万1,2,3,144J502115万A,B,C,DJ5021A125万1,2,3,4J5021A111万
(1),
(2),(3),(64)J5021
(1)1991年国家制定了国家基本比例尺地形图分幅编号4的国家标准,并规定自1991年起新测制和更新的地形图均照此标准进行分幅编号,即1100万地形图编号的基础上再分别加上各比例尺代码、行代码和列代码而构成(见表2)。
表2新地形图编号系统Tab2Newcodingsystemoftopographicmap基础比例尺比例尺比例尺代码各比例尺下的图幅数量编号(J50为例)1100万150万B22J50B001001J50B002002125万C44J50C001001J50C004004110万D1212J50D001001J50D01201215万E2424J50E001001J50E024024125万F4848J50F001001J50F04804811万G9696J50G001001J50G09609615千H192192J50H001001J50H192192(下转第45页)71第33卷第1期叶宝莹:
PythonArcPy在地质信息处理中的基本应用7)界址线类别是否与实地吻合;8)审核公示过程、形式、时间等是否符合规定;9)数据库字段是否符合国家规范要求;10)地块分布图是否接边处理过;11)拓扑关系是否正确。
233存在问题的处理对确权过程中存在问题的处理如下:
1)数学基础与规范要求不符的,后续检查工作不开展;2)资料不齐全的应补齐;3)地块四至说明不正确的,应纠正并保证图表一致,纸质资料重新打印;4)接边不正确的,应完善接边并填写接边精度记录,整改过的地块其相关图表资料应重新处理;5)数据库字段不全的应完善;6)图表资料不满足规范要求的应整改。
3结束语检查方法与技术手段对农村土地承包经营权调查成果质量控制起到实时监督作用,检查过程中发现的质量问题应出具书面报告告知业主和作业方,检查过程中发现的各类质量问题,作业单位均应修改或返工,遗漏、差错等质量问题整改至正确为止,并编写整改报告。
在下次检查工作开展前,应随机抽查前一次检查过程中发现的质量问题并核实是否整改完毕。
参考文献1中华人民共和国农业部农办经20155号农业部办公厅关于印发农村土地承包经营权确权登记颁证成果检查验收办法(试行)的通知Z北京:
中华人民共和国农业部,20152中华人民共和国国家测绘地理信息局GB/T243562009测绘成果质量检查与验收S北京:
中华人民共和国国家测绘地理信息局,20093蒋毅影响农村土地承包经营权图解法精度的因素及对策J地矿测绘,2016,32(3):
32344中华人民共和国农业部农办经201513号农业部办公厅关于印发农村土地承包经营权确权登记数据库建设指南(试行)农村土地承包经营权确权登记数据库成果汇交办法(试行)的通知Z北京:
中华人民共和国农业部,2015作者简介:
卢加华(1988),男(彝族),云南文山人,学士,助理工程师,现主要从事测绘技术应用方面的工作。
(上接第17页)32根据坐标查询标准图幅程序本文只列举了新的地形图分幅系统的程序,利用Python定义一个函数来完成图幅查询,返回新的图幅编号。
具体程序代码为:
defcalnewmap(scale,longtt,latt,longtt,latt):
n100=int(latt/40)+65m100=int(longtt/60)+31longtt1=int(longtt/60)+31latt1=int(latt/40)+1row=latt1*4col=(longtt131)*6rowx=int(rowlatt)/latt)+1colx=int(longttcol)/longtt)+1ifrowx10:
srowx=00+str(rowx)elifrowx10androwx100:
srowx=0+str(rowx)else:
srowx=str(rowx)ifcolx10:
scolx=00+str(colx)elifcolx10andcolx100:
scolx=0+str(colx)else:
scolx=str(scolx)ifscale=500000:
strs=Bifscale=5000:
strs=Gnewcode=chr(n100)+str(m100)+strs+str(srowx)+str(scolx)returnnewcode4结束语利用Python及其函数库进行开源GIS程序开发效率尤其明显,可以大大减轻工作量,高效的完成数据处理、数据分析以及数据库建设等工作。
这些工作往往占了整个GIS数据管理系统70%的工作量。
Python函数在ArcGIS数据处理与分析中正逐步取代AML语言的批处理功能,能完成更复杂的工作。
参考文献1PythonSoftwareFoundationEB/OLAbouthttps:
/wwwPythonorg/about/,201701042ESIArcGISCodeSharingEB/OLhttp:
/resourcesarcgiscom/?
bdid=15638,201701043高伟,吴文凯,袁超高斯投影坐标变换J钢铁技术,2008
(1),484余旭地形图新旧图幅号自动转换的实现J焦作工学院学报:
自然科学版,2004,23(3):
190192作者简介:
叶宝莹(1972),男,天津人,博士,主要研究方向:
遥感地质与GIS应用。
54第33卷第1期卢加华,刘亚非,王立志,等:
浅谈农村土地承包经营权确权登记颁证项目的技术检查方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonArcPy 地质 信息处理 中的 基本 应用
![提示](https://static.bingdoc.com/images/bang_tan.gif)