推荐星级:
- 1
- 2
- 3
- 4
- 5
Python ArcPy在地质信息处理中的基本应用
资料介绍
Python语言作为一种开源语言,在GIS软件中,常作为辅助工具使用,其为Arc GIS提供了大量的处理模块,能更高效地完成地质信息处理工作。利用Python语言,调用集成Arc GIS中Arc Py软件包,能实现地质数据的输入、投影变换以及标准图幅查询等功能,同时其代码简单易读,便于使用,可为地质数据处理人员提供更方便的工具。
部分文件列表
文件名 | 大小 |
Python_ArcPy在地质信息处理中的基本应用.pdf | 1M |
部分页面预览
(完整内容请下载后查看)·15·
2017,33( 1) : 15 ~ 17
CN 53 - 1124 /TD ISSN 1007 - 9394
地矿测绘
Surveying and Mapping of Geology and Mineral Resources
*
Python ArcPy
在地质信息处理中的基本应用
叶宝莹
(
,
中国地质大学 地质调查研究院 北京
100083)
: Python
,
语言作为一种开源语言 在
GIS
,
,
ArcGIS ,
提供了大量的处理模块 能更高效地完
摘要
软件中 常作为辅助工具使用 其为
ArcGIS ArcPy , 、
软件包 能实现地质数据的输入 投影变换以及标准图幅查询等
。
成地质信息处理工作 利用
Python
,
语言 调用集成
中
, , ,
功能 同时其代码简单易读 便于使用 可为地质数据处理人员提供更方便的工具
。
: Python; ArcGIS; ArcPy;
关键词
中图分类号
地质信息处理
: P 209; TP 311
: A
: 1007 - 9394( 2017) 01 - 0015 - 03
文章编号
文献标识码
Basic Application of Python ArcPy in Geological Information Processing
YE Bao-ying
( Institute of Geological Survey,China University of Geosciences,Beijing 100083,China)
Abstract: Python as an open source language,in the GIS software,often has been used as an auxiliary tool. Especial-
ly in ArcGIS,it provides a large number of processing modules,more efficient completion of geological information pro-
cessing. The use of Python language and ArcPy software package integrated in ArcGIS is so easy to realize input,map pro-
jection transformation and query work of geological data. The code is simple,readable and easy to use,which provides a
more convenient tool for geological data processing personnel.
Key words: Python; ArcGIS; ArcPy; geological information processing
0
1
引言
数据输入
[1]
, 、 、
在实际地质应用中 主要涉及矿点 矿权 地质路线的生成
。
Python
C
是基于 语言的高级动态解释性语言
。Python
具
,
野外采集的数据多为坐标对 转入
GIS
,
时 需要生成相应的点线
: 、 ; ,
有以下特点 简单易学 免费开源 跨平台的解释性高级语言 具
。
面文件 点文件
,ArcGIS 10. x desktop
ad-
软件中有现成的工具
Excel,dbf 。Excel
;
有很强的健壮性的面向对象编程语言 可扩性
。
dxydata
。
工具可用 点文件可以为
等格式
文件
ArcPy ArcGIS
。
处理脚本的软件包 其目的是利用
是一套
建立实用而且高效的地理数据分析 转换 数据管理以及
Python ArcPy
, ,
无法设置属性字段的长度 类型 会引起错误
。dbf
文件则需要
Python
自动制图的处理工具
,Python
、
、
Access
, ,
中进行字段设置 然后导出才可以使用 过程有些
在
。
在
中使用
。Python
是一种通用的编程语言
的另一个主要原
是一种支持动态
输入的解释型语言 适用于交互式操作以及为称为脚本的一次
。
繁琐
因是
ArcGIS
———ArcInfo Workstaion
,
版 本 提 供 了
早 期 产 品
,
point、line、polygon
,generate 。Work-
命令
DOS
等文本文件导入命令
,
性程序快速制作原型 同时其具有编写大型应用程序的强大功
station
,
为数据批量处理的绝佳工具 只是其是基于
命令
。
ArcPy ArcGIS
,
能
利用
来自多个不同领域的
小群体开发的附加模块
在进行地质信息管理与计算分析时 对于各种复杂的地质
编写的
应用程序的优势在于 可以使用
, , ,
的 需要使用者熟记数百个命令 并熟悉操作流程 而且过程不
GIS
Python
专业人员和程序员组成的众多
[2]
, , 。
可逆 若出现操作错误 会引起无法挽回的损失 其是专业数据
。
,
处理人员才使用的工具 但
ESRI
Workstaion 10
公司在 版本并
,
。
, , ,
数据 进行程序化处理 可以大大减少冗余工作 并保障数据的
不提供更新版本
,
基于此 若有大量文本数据需要转入
ArcGIS
,
中时 工作比
。ESRI ArcPy
公司提供的
处理质量
软件包正是针对该类问题
Python ,
程序 实现地质数据
。
应运而生的 本文通过几个简单的
。ESRI
ArcPy
, Python
模块 可利用 语言可以
较繁琐
。
完成这类工作
公司提供的
、
的输入 投影变换以及图幅查询工作
。
*
: 2017 - 01 - 05
收稿日期
·16·
2017
3
年 月
地矿测绘
1. 1
row =[pnt. num,pnt. name,points]
cursor. insertRow( row)
f. close( )
del cursor
点文件生成
首先确定点数据文本文件格式 最好是
Excel csv shapefile
,
txt
,
格式 也可以是
。
。
格式
格式 生成新的文件格式为
点文本文件格式
点文件可以带有坐标及相应的属性 属性可以添加逗号分
1. 1. 1
。
1. 2
、
线 面文件生成
, 1
开 如图 所示
。
, , 、
处理地质路线以及矿区 工作区等信息时 需要生成线 面
。
等图形文件
, ,
线和面文件生成方法几乎相同 文本数据格式也相同 线和
。
面的区别在于面文件要求首尾坐标重合
1. 2. 1
线由一组有序坐标对组成 并且具有属性 为
1
图
点文件格式
Fig. 1 Point file format
Python
线面文本文件格式
,
,
txt
,
格式 具体
3
如图 所示
。
,
,
语言处理成该格式 处
如果不是该格式 可以利用
。 : ; 、
理方法简单有效 要求 利用坐标生成点文件 并将序号 名称
, 2
作为属性写入到属性字段中 如图 所示
。
3
图
线文件格式
Fig. 3 Line file format
, ( ,
面由一组有序坐标对组成 且首尾坐标相同 若不同 首尾
) , ,
自动连线形成封闭 并且具有属性 为
txt
,
格式 具体如图
4
。
所示
4
图
面文件格式
Fig. 4 Polygon file format
ESRI shapefile
,
面文件 并且属性写入属性字
要求生成矢量
2
图
点文件生成属性表
。
段中
Fig. 2 Generating attribute table from point file
1. 2. 2
关键代码
1. 1. 2
关键代码
, ‘polygon’
生成面文件的程序代码 线文件只需将参数 替换
#
读取点文件
‘polyline’。
为
f = file( " D: \\soft \\yePython \\test \\points. txt" )
f = file( " D: \\soft \\yePython \\test \\polys. txt" )
fc = " D: \\soft \\yePython \\test \\newpoly. shp"
#
shapefile
确定新
文件的名称及位置
fc = " D: \\soft \\yePython \\test \\newpoint. shp"
# define projection ,3 methods ,code ,name or * . prj file
spatiref = ArcPy. SpatialReference( " Beijing 1954" )
# create a new shapefiles
#
, , 、
定义投影 有三种方法可以选择 投影代码 投影名称以
. prj
及投影文件名称
# spatiref = ArcPy. SpatialReference( 4214)
ArcPy. CreateFeatureclass_management( " D: \\ soft \\ yePython
\\test" ," newpoly. shp" ," Polygon" ," " ," " ," " ,spatiref)
# create fields,num,name
# attention,spatial reference name MUST be 'show in arcMap'.
spatiref = ArcPy. SpatialReference( " Beijing 1954" )
#
shapefile
点文件
创建新的
ArcPy. CreateFeatureclass_management( " D: \\ soft \\ yePython
\\test" ," newpoint. shp" ," POINT" ," " ," " ," " ,spatiref)
ArcPy. AddField_management ( fc," name" ," TEXT" )
# insert data records
cursor = ArcPy. da. InsertCursor ( fc,( " num" ," name" ,"
SHAPE@ " ) )
#
, , ,
添加需要的属性字段名称 类型 长度 别名
ArcPy. AddField_management ( fc," num"," SHORT","","","
arrays = ArcPy. Array( )
")
序号
pnt = ArcPy. Point( )
ArcPy. AddField_management ( fc," name"," TEXT","","","
for line in f. readlines( ) :
")
名称
j = line. split( ',')
#
插入一条记录
cursor = ArcPy. da. InsertCursor ( fc,( " num" ," name" ,"
SHAPE@ " ) )
pnt = ArcPy. Point( )
for px in range( 2,len( j) - 1,2) :
pnt. num,pnt. name,pnt. X,pnt. Y = j[0],j[1],
j[px],j[px + 1]
printpnt. num,pnt. X,pnt. Y
for line in f. readlines( ) :
arrays. append( pnt)
j = line. split( ',')
polys = ArcPy. Polygon( arrays)
pnt. num,pnt. name,pnt. X,pnt. Y = j[0],j[1],float( j
[2]) ,float( j[3])
row =[pnt. num,pnt. name,polys]
cursor. insertRow( row)
points = ArcPy. Point( pnt. X,pnt. Y)
全部评论(0)