PythonArcPy在地质信息处理中的基本应用_精品文档资料下载.pdf
- 文档编号:16088166
- 上传时间:2022-11-19
- 格式:PDF
- 页数:4
- 大小:217.19KB
PythonArcPy在地质信息处理中的基本应用_精品文档资料下载.pdf
《PythonArcPy在地质信息处理中的基本应用_精品文档资料下载.pdf》由会员分享,可在线阅读,更多相关《PythonArcPy在地质信息处理中的基本应用_精品文档资料下载.pdf(4页珍藏版)》请在冰豆网上搜索。
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:
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=5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonArcPy 地质 信息处理 中的 基本 应用 精品 文档