您当前的位置: 核心期刊论文发表咨询网电子论文》基于脚本语言和ArcGIS类库的空间矢量数据批处理

基于脚本语言和ArcGIS类库的空间矢量数据批处理

来源:核心期刊论文发表咨询网 所属分类:电子论文 点击:次 时间:2019-10-17 10:03

  摘 要:介绍了利用VB脚本、python脚本和ArcGIS的arcpy类库编写的批处理程序,实现对地理数据点转换成面的矢量图层的批量转换,并且对矢量图层进行图层属性的批量操作。极大提高了数据处理效率,降低了重复处理造成数据错误的可能性,并且为以后海洋数据管理中海量数据的批处理功能实现以及数据可视化和空间分析奠定技术基础。

  关键词:ArcGIS Python 批量转换 矢量图层

基于脚本语言和ArcGIS类库的空间矢量数据批处理

  地理数据处理是 G I S用户应用的重要处理部分, ArcGIS的ArcToolBox工具箱[1-2]为GIS用户提供了数百个地理处理功能,这些功能模块在操作界面上只能针对单个数据集处理,而处理数据人员往往需要处理海量的数据。这是就需要用到数据建模功能或者使用脚本语言进行批处理。

  数据建模功能,虽然也是批处理手段之一,但是比使用脚本语言来处理批量数据,对数据进行分析,数据转换,格式修改等处理手段来说,数据建模功能显得局限,不灵活。本文选择使用VB脚本处理EXCEL数据[3-4]和 Python语言[5-6]实现地理数据的批处理,可以显著提高工作效率。

  本文是将需要处理的海洋类型保护区和滨海湿地的坐标提取出来,整理成ArcGIS的点的格式化文本,并对这些点数据图层转换成为面数据图层[7-8]。

  1 VB和python数据处理流程图

  本文利用VB脚本和Python脚本语言来批处理数据,首先需要把Excel数据整理成有格式的数据工作表,用VB语言生成批量生成TXT文本,生产的TXT文本是按照ArcGIS 的ArcToolbox工具箱要求文本格式,由于VB生成的TXT文本,产生的空格符不符合格式要求,本文用Python脚本去处理空格符格式问题,处理完成后,生成格式化的TXT文本。最后用Python脚本语言去调用arcpy包的函数,去把一个个坐标点转换成面的数据图层,如果业务需要,还是调用其他arcpy的函数去对图层进行操作,如图1所示。

  2 关键代码

  2.1 vb处理经纬度坐标

  (1)需要将海洋类型保护区和滨海湿地的坐标换成度,按照程序设计,填入表格模板,安装Excel API 函数库,处理数据,将中文名称转为拼音,因为ArcGIS无法识别中文名称文件,导致程序出错。

  表格模板如表1,表2所示。

  (2)对填入数据的模板进行处理,需要将研究区域的坐标点生成arcgis点转面的文本格式,因此,使用EXCEL中的 VB脚本语言进行处理,脚本语言和生成文本格式,部分关键代码如下:

  x1 = Sheets(oldname).Cells(i,3) #获取工作表的经纬度值赋值给变量x1,x2,y1,y2

  x2 = Sheets(oldname).Cells(k,3)

  y1 = Sheets(oldname).Cells(i,4)

  y2 = Sheets(oldname).Cells(k,4)

  Worksheets.Add().Name = Sheets(oldname).Cells(i, 2) #获取字段的名字为工作表的名字

  shtname = Sheets(oldname).Cells(i, 2)

  Sheets(shtname).Cells(1, 1) = "Polygon" #按照 Arcpy要求的文本格式填写

  Sheets(shtname).Cells(2, 1) = 0

  Sheets(shtname).Cells(2, 2) = 0

  Sheets(shtname).Cells(3, 1) = 0

  Sheets(shtname).Cells(3, 2) = x1

  Sheets(shtname).Cells(3, 3) = y1

  Sheets(shtname).Cells(3, 4) = "1.#QNAN"

  Sheets(shtname).Cells(3, 5) = "1.#QNAN"

  (省略其他重复的代码)

  Sheets(shtname).Cells(7, 5) = "END "

  ActiveWorkbook.SaveAs Filename:="C:\txt\newdir\" + shtname + ".txt", _

  FileFormat:=xlText, CreateBackup:=False #导出TXT 到指定路径,文件名为工作表的名字

  (3)使用VB脚本语言生成的文本格式,依然无法直接用于arcpy要求的格式,需要处理文本中的中文空格,将中文空格换成英文空格。这里使用python语言进行数据处理。

  for file in files: #遍历文件列表

  lines = open(file).readlines() #打开文件,读入每一行

  newfile=file+".txt" fp = open(newfile, 'w') #打开处理的txt文件

  for s in lines: #读取文件每一行 fp.write(s.replace(' ', ' ')) #对文件中空格字符进行替换

  2.2 Python语言关键代码

  (1)建立一个fileList=[]数组,把文件夹下面的原始数据文件读入,保存。

  for f in files: # 把点文件遍历一次

  fileList.append(f) # 把文件添加进入数组fileList

  (2)设置输入目录和输出目录,不同调用arcpy中的函数 CreateFeaturesFromTextFile,实现点转化成面的功能。

  filename2 = ('龙头湾','练江口','莱芜中国龙虾','莱芜中华白海豚','南澳赤屿','南澳岛','南澳平屿','南澎列岛','江门台山中华白海豚','乌猪岛','镇海湾红树林','雷州湾中华白海豚');

  rm = r"C:\txt\newdir\outdir\/"

  sm = r"C:\txt\newdir\out2\/"

  gp1 = arcgisscripting.create()

  #创建地理处理对象

  for i in range(0, 12): #遍历点文件

  inTxt1 = rm.replace('/', '') + fileList[i]

  inSep1 = "."

  strms1 = sm.replace('/', '') + filename2[i]

  gp1.CreateFeaturesFromTextFile(inTxt1, inSep1, strms1, "#")

  #把点转成面的arcpy包函数

  (3)对生成的shp点文件,添加字段属性,调用AddField_ management函数,添加字段。

  a rc py.Add Field _ ma na gement(fileList[i],"名称 ","TEXT",80) (4)shp文件添加的字段,赋值。获取shp的行游标rows,对row赋值。

  for i in range(0,12):

  fileList [i] #把文件名赋值到名称字段的值里

  rows = arcpy.UpdateCursor("C:/海滨湿地-2017/temp/ test.gdb/"+ fileList [i])

  for row in rows:

  row.setValue("名称", fileList [i])

  rows.updateRow(row)

  推荐阅读:编程语言在计算机应用中如何选择

  3 结语

  地理处理是GIS工作者处理数据的重要部分,简单的地理数据,可以通过GIS工具进行处理,但是复杂的,海量的地理数据,就很难高效的实现,因此结合ArcGIS强大的平台处理能力,丰富的类库处理资源和脚本语言的可编程性,可以使工作通过ArcGIS的批量操作,大大提升制图工作者的工作效率,为制图工作提供更好的准确性。不仅如此,还能掌握并熟悉Python语言操作ArcGIS资源包,为以后制图批处理技术,提供了技术基础。

转载请注明来自:http://www.lunwencheng.com/lunwen/dzi/15269.html

各行业核心期刊快速入口

医学类核心期刊汇总
口腔核心期刊
卫生核心期刊
药学核心期刊
眼科核心期刊
儿科核心期刊
医学核心期刊
兽医核心期刊
外科核心期刊
护理核心期刊
临床核心期刊
教育类核心期刊汇总
小学教育核心期刊
中学教育核心期刊
高等教育核心期刊
职业教育核心期刊
成人教育核心期刊
人文教育核心期刊
科学教育核心期刊
教育核心期刊
教学核心期刊
教育管理核心期刊
学科类核心期刊汇总
语文核心期刊
数学核心期刊
外语核心期刊
化学核心期刊
物理核心期刊
历史核心期刊
政治核心期刊
体育核心期刊
艺术核心期刊
法律核心期刊
经济类核心期刊汇总
市场经济核心期刊
经济核心期刊
金融核心期刊
财经核心期刊
审计核心期刊
旅游核心期刊
统计核心期刊
会计核心期刊
农业类核心期刊汇总
畜牧核心期刊
农业核心期刊
林业核心期刊
工业类核心期刊汇总
机械核心期刊
冶金核心期刊
电力核心期刊
铁路核心期刊
电气核心期刊
工业核心期刊
石油核心期刊
环境类核心期刊汇总
电力核心期刊
水利核心期刊
能源核心期刊
地质核心期刊
化工核心期刊
环境核心期刊
气象核心期刊
地理核心期刊
建筑类核心期刊汇总
测绘核心期刊
测量核心期刊
建筑核心期刊
交通类核心期刊汇总
铁路核心期刊
公路核心期刊
交通核心期刊
运输核心期刊
汽车核心期刊
轨道核心期刊
科技类核心期刊汇总
电子核心期刊
科技核心期刊
计算机核心期刊
其他类核心期刊汇总
管理核心期刊
档案核心期刊
心理核心期刊
政法核心期刊
文学核心期刊