更全的杂志信息网

基于ArcGIS的Python脚本批量提取图层要素拐点坐标的方法

更新时间:2009-03-28

0 引言

根据《矿产资源规划数据库标准(2015年修订)》要求,重点矿区、矿产资源重点勘查区、矿产资源禁止开采区等十几个图层需要提取图层要素拐点坐标到属性字段中。面对如此海量的数据,如何简便、快捷、有效地提取图层要素的拐点坐标成为当前矿产资源规划数据库建设的当务之急。

对于投资风险的防范主要通过事前的风险评估和事中的风险防控两部分组成,事前风险评估主要通过经营杠杠系数和投资收益率进行衡量,其中经营杠杠系数反映的是项目投资风险与项目收益之间的正比关系,投资收益率反映的是项目所带来的收益与其所投资的成本之间的关系。

在ArcGIS中,传统提取图层要素拐点坐标的方法是利用ArcGIS自带的“要素折点转点”和“添加XY坐标”两个工具箱来实现[1-2]。但该方法具有很大的局限性:只适用于单点或简单的图形,对多线、多部件多边形等复杂几何对象就显得过于繁琐。这是因为该方法需先将图层要素的拐点提取出来生成一个新的点图层文件,如果图层要素较多且复杂的话,后期数据整合到属性字段中的工作量十分巨大,且十分容易出错。此外,该方法还受ArcGIS自身隐含条件的限制,生成的坐标单位是固定不变的,如源文件坐标系统是地理坐标系的,生成的单位就是十进制度,但在实际数据库建设过程中,我们往往需要的是度分秒(DD.MMSS)格式的拐点坐标。为满足这一生产需求,本文利用ArcGIS字段计算器中的Python脚本的方法,能较快捷地实现批量提取图层要素拐点坐标。同时,针对实际工作中的不同需求,通过适当修改Python脚本函数,还可个性化定制所需的拐点坐标格式。

2.2 脑瘫儿童父母心理健康状况 调查组SCL-90总分、阳性项目数高于正常对照组,差异有统计学意义(P<0.05);各因子分中躯体化、强迫状态、人际关系、抑郁、焦虑、敌对、偏执七项因子分值高于正常对照组,差异有统计学意义(P<0.01);恐怖及精神病性因子的得分也高于对照组,但差异无统计学意义(P>0.05)。见表2。

1 Python脚本法

Python脚本法批量提取图层要素拐点坐标的流程见图1,是通过ArcGIS图层属性表中的字段计算器来完成的,ArcGIS字段计算器支持使用VB脚本或Python执行计算,本文只讨论Python作为脚本语言的计算。Python是一种不受局限的、跨平台的开源编程,由于其功能强大,且简单易学,在ArcGIS中得到了广泛应用和支持,常用于进行数据分析、数据转换、数据管理等,极大的提高了工作效率[3-7]

根据用户对提取的坐标格式是否有要求,Python脚本法又可细分两种方式:①简单字段计算;②复杂字段计算。

由表7可以看出,除了2001年和2003年的预测结果和真实值之间的误差比较大之外,其余各年份的误差都很小,表明这种拟合程度很好,所以根据多元线性回归模型(2)可以预测未来国家财政教育支出的预测值.同时还表明国内生产总值、年末人口数量和居民人均教育消费支出是影响国家财政教育支出的3个重要因素,国家在制定教育策略和确定教育投入时可以重点考察这3个因素.

  

图1 Python脚本法流程图Fig.1 Flowchart of Python script method

1.1 简单字段计算

ftempx=float("0."+dfmx[1])*60

dfmy=str(y).split('.')

dy=dfmy[0]

在步骤3中,如果标签符合标签选择条件,并且标签状态标志与清点状态标志不同,则标签被选中。在步骤4中,将被成功清点的标签状态标志改变为与清点状态标志相同的中间态。

(3)右键单击刚添加的wkt字段标题,然后单击“字段计算器”。

各Python函数可通过def关键字定义,关键字后为函数的名称以及函数的输入参数,函数名称可由自行选取,但不能使用空格,也不能以数字开头[11]。函数通过return语句返回值。下面展示十进制度转换成度分秒(DD.MMSS)格式坐标代码,该代码在ArcGIS 10.0以上平台通过测试。

不同于传统方法,这种方法适用于各类几何对象,而且操作简单易懂,无需大量的数据处理就能直接、快速地完成批量提取图层要素坐标到属性字段中。把坐标数据以WKT存储在属性字段中还有一个好处,就是数据编辑后发现编辑的几何图形有问题,还可以使用WKT把要素还原成编辑前的图形[10]。但这种方法与传统方法一样,受ArcGIS自身隐含条件的限制,生成的坐标单位和坐标长度是固定的,如果用户对坐标格式有要求的话,用这种方法就不太合适。为达到矿产资源规划数据库中要求的度分秒(DD.MMSS)格式的坐标,就需用到下面介绍的另一种方法。

  

图2 简单字段计算界面Fig.2 Calculation interface of simple fields

  

图3 简单字段计算结果Fig.3 Calculation results of simple fields

1.2 复杂字段计算

复杂字段计算,是在简单字段计算界面上多勾选中间的“显示代码块”,然后通过编写多行脚本、循环和分支等比较复杂的脚本代码来达到我们想要的拐点坐标格式。

下面以生成度分秒(DD.MMSS)格式的拐点坐标为例,介绍复杂字段计算的步骤,前3个步骤与简单字段计算类似,创建名称为“test”的文本字段,长度设为1000。步骤4:在字段计算器界面中选择“Python”,勾选“显示代码块”,在“预逻辑脚本代码”框中粘贴预先写好的代码,表达式文本框中输入定义的函数“MySub(!SHAPE!)”(图4),最后单击“确定”即可完成批量提取图层要素坐标到属性字段中(图5)。如果首次操作,可先将脚本代码保存为*.cal文件,下次使用时,直接加载之前保存好的文件即可。

这种方法与简单字段计算一样,适用于各类几何对象,能较快速地完成批量提取图层要素坐标到属性字段中。此外,这种方法还有一个明显优势,不受ArcGIS自身隐含条件的限制,可根据实际需求调整代码达到个性化定制坐标格式的功能,但需要用户具备一定的Python基础,不过好在Python语言简单易学,模块众多,网上的资料也多。

  

图4 复杂字段计算界面Fig.4 Calculation interface of complex fields

  

图5 复杂字段计算结果Fig.5 Calculation results of complex fields

2 部分示例代码

(4)在字段计算器界面中,解析程序选择“Python”作为脚本语言,表达式文本框中输入“!shape.wkt!”(图2),单击“确定”后,即可看到新建字段里面已经存储了图层要素转换后的WKT串文本信息(图3)。

def TranCoorform(x,y):

dfmx=str(x).split('.')

dx=dfmx[0]

所谓简单字段计算,就是通过内置固定的函数(!shape.wkt!)转换成WKT的计算方法。WKT(Well-knowntext)是一种文本标记语言,主要用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换,WKT可以表示的几何对象包括点、线、多边形、TIN(不规则三角网)及多面体[8]。常见几何WKT表达,如多线(具有2个线值的多线)的WKT表达为:MULTILINESTRING ((10 10,20 20),(15 15,30 15))。

3.线栓的制备:采用2号尼龙钓鱼线(直径0.234 mm),剪成12 cm长的线段,参照何芳雁等[4]介绍的石蜡线栓的选择与制作方法进行改进。取熔点为56 ℃固体石蜡一块,放入20 ml小烧杯中,烧灼烧杯底部使石蜡融化,待石蜡将要凝固时,将线栓一端长约5 mm的一段浸入石蜡液中并迅速提起,在空气中瞬间冷却凝固的石蜡可牢牢粘附在尼龙线一端的表面,可反复多次浸蘸。千分尺测量线栓头端直径0.50~0.55 mm,并在距线栓头端6 cm处做标记,线栓的制备在实验前1 d进行。

fx=str("%02d" %(ftempx))

mx=str("%02d" %(round(float("0."+str(ftempx).split('.')[1])*60)))

(2)添加一个新文本字段,以存储新字符串值。单击“表选项”,然后单击“添加字段”。为此字段命名,将类型设置为“文本”,然后指定长度。需要注意的是如果字段长度不够,生成的WKT串文本信息就会被截取[9]。Shapefile文件字段长度最大为254字节,文件地理数据库和个人地理数据库字段长度最大为2,147,483,647,用户可根据图层要素复杂程度合理填写字段长度。本文创建的文本字段名为“wkt”,字段长度为1000。

px=dx+"."+fx+mx

贾荣林[27]等对比分析了空气源热泵热水器中R417A和R22的性能。结果表明,分别以R22和R417A为制冷工质的空气源热泵热水器的COP接近,但后者的排气温度和冷凝压力均低于前者,说明R417A比R22更适合作为空气源热泵热水器的制冷工质。

下面介绍在ArcGIS下如何利用简单字段计算提取拐点坐标,具体步骤如下:

(1)右键单击要提取坐标的图层,然后打开属性表。

ftempy=float("0."+dfmy[1])*60

最后注重宣传,发挥榜样的作用。外生推动型学霸寝室并非在顺境中成长而来,其原初状态与很多寝室的现实相似,很接地气。这种榜样在一般寝室中更具近因效应,因此也会有更多至今表现平平的同学争相效仿,对学风的改善面会更广。对这类寝室的宣传要凸显只要愿意努力,现在为时不晚,激发学生奋斗之志。

fy=str("%02d" %( ftempy))

my=str("%02d" % (round(float("0."+str(ftempy).split('.')[1])*60)))

实践中,深圳作为中国改革开放最引人瞩目的区域,依凭有利的海湾资源条件、优美的环境、开放的文化氛围和便捷的交通系统,实现集聚快速发展并崛起为世界名城,深圳也曾一度陷入发展困境,但依靠创新孕育出新的发展思路、新的经济模式、新的用工机制、新的行政管理,吸引了大批信息和人才,实现支柱产业向信息技术、生物技术以及银行金融业和高端服务业的转型升级,成为粤港澳大湾区建设新引擎。

py=dy+"."+fy+my

return px,py

3 结论

相对传统方法,Python脚本法在提取图层要素拐点坐标方面有着明显的优势,不仅适用范围广、操作简单易懂,而且无需大量的数据处理就能直接、快速地完成批量提取图层要素坐标到属性字段中。虽然Python脚本法也有一定的局限,如简单字段计算生成的坐标格式固定不变,复杂字段计算需要一定的Python基础,但这方法的应用,极大地减少数据库建设过程中的工作量,提高工作效率。针对矿产资源规划数据库对拐点坐标的要求,利用复杂字段计算还能实现个性化定制拐点坐标格式的功能。此外,Python脚本法还可推广应用于其他功能的实现,如面积计算、拐点个数统计等,这将为下一轮矿产资源规划数据库积累经验。

参考文献

[1] 刘耀龙,张书娟,胡蓓蓓,等.ArcGIS已知经纬度绘制点图层和已知空间点计算经纬度的方法[J].资源环境与发展,2011(1):11-14.

[2] 谢小凯,吕小斌.利用ArcGIS输出图斑边界拐点坐标的操作方法[J].中国水土保持,2015(6):60-61.

[3] 石晶,郭子珍,李小勇.ArcGIS中应用Python脚本进行空间数据批量处理的研究与实现[J].河南科技,2012(21):60-61.

[4] 邵保华,田学志.谈Python在ArcGIS地理处理中的应用[J].林业勘查设计,2012(2):99-100.

[5] 张静,管莉莉,周赟.基于Python的空间数据批处理在编制土地利用现状图中的应用[J].江苏水利,2014(11):32-33+35.

[6] 邱世平,刘建敏,苏全.一种基于Python与ArcGIS模型构造器的小班四至坐标提取及编号方法探讨[J].林业科技通讯,2016(12):58-60.

[7] 邱世平.一种基于ArcGIS Python根据特定条件批量提取小班拐点坐标方法的研究[J].林业科技通讯,2017(8):75-78.

[8] 互动百科. WKT[EB/OL].(2014-06-24)[2017-02-06]. http://www.baike.com/wiki/WKT.

[9] Esri成都.字段计算器通过python脚本完成要素节点坐标信息提取到属性字段[EB/OL].(2016-01-05)[2017-02-06]. http://blog.csdn.net/esrichinacd/article/details/50462610.

[10] 积思园.ArcMap中使用ArcPy实现Geometry与WKT的相互转换[EB/OL].(2014-06-11)[2017-02-06]. http://blog.csdn.net/ linghe301/article/details/29554257.

[11] Esri. ArcGIS帮助(10.2、10.2.1和10.2.2)[EB/OL].(2014)[2017-02-06]. http://resources.arcgis.com/zh-CN/help/main /10.2/.

 
江金进,陈晓甫
《矿产与地质》 2018年第01期
《矿产与地质》2018年第01期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息