ArcGIS读取txt文本坐标数据,创建面shapefile
通常我们在解决实际问题时候,可能会遇到将坐标数据转为shp点数据,在数据量很小,或者经纬度坐标直接给出的excel表中可以通过直接导入arcgis进行转化成点或者面shp数据。而在实际问题中,我们也会遇到下面这种情况:
给出批量的txt形式的气象站点数据,如何将其直接转化为arcgis中的点或者面数据,就是今天我们要解决的问题。如下如,我自己先建立一个txt文本数据
然后利用代码直接构建出利用txt数据直接转shp数据。代码贴出:
#coding:utf-8
import os
import arcpy
txt_filename = 'C:/Users/Administrator/Desktop/data1.txt'
path='C:/Users/Administrator/Desktop/'
outputname="polygontest.shp"
dir=path+outputname;
in_file = open(txt_filename,'r');
spatRef = arcpy.SpatialReference(4326)
createFC = arcpy.CreateFeatureclass_management(os.path.dirname(dir), os.path.basename(dir), "POLYGON", "", "", "",spatRef)
#创建字段
arcpy.AddField_management(createFC, "index", "TEXT", 50)
# 左下角
arcpy.AddField_management(createFC, "minX", "TEXT", 50)
arcpy.AddField_management(createFC, "minY", "TEXT", 50)
# 右上角
arcpy.AddField_management(createFC, "maxX", "TEXT", 50)
arcpy.AddField_management(createFC, "maxY", "TEXT", 50)
cur = arcpy.InsertCursor(createFC)
for line in in_file:
p = line.split(',');
array = arcpy.Array()
index=p[0]
minX=p[1]
minY=p[2]
maxX=p[3]
maxY=p[4]
pointLB = arcpy.Point()
pointLB.X=minX
pointLB.Y=minY
pointRB = arcpy.Point()
pointRB.X=maxX
pointRB.Y=minY
pointRU = arcpy.Point()
pointRU.X=maxX
pointRU.Y=maxY
pointLU = arcpy.Point()
pointLU.X=minX
pointLU.Y=maxY
array.append(pointLB)
array.append(pointRB)
array.append(pointRU)
array.append(pointLU)
row = cur.newRow()
row.shape = array
row.index = index
row.minX=minX
row.minY=minY
row.maxX=maxX
row.maxY=maxY
cur.insertRow(row)
print 'finished'
生成结果如下:
这里我们需要注意的是,txt文本中的数据一定是英文状态下的逗号,不然机会报错,说list index out of range,即列表越界,如果觉得对你有帮助,就点个关注呗。8年giser,不定期更新博客。