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,不定期更新博客。