可参考链接: 用Arcpy编写点线面要素转ASCII文本(txt).
这里是将数据从ASCII文本转为shp,是以上实验的反例
点转shp
#coding:utf-8
import arcpy
txtPath = r"C:\Users\lenovo\Desktop\arcpy\test\points.txt"#不能识别汉字
Path = r"C:\Users\lenovo\Desktop\arcpy\test"
file = open(txtPath,"r")
next(file)
SP = arcpy.SpatialReference(4326) #WGS84坐标系
li = []
for line in file:
li.append(map(float,line.split(" "))) ##将坐标导入列表
#print li
fc = Path+"\\"+"point_trans.shp"
arcpy.CreateFeatureclass_management(Path,"point_trans.shp","POINT","","","",SP)
#arcpy.AddField_management(fc,"ID",float,10) #添加字段
cursor=arcpy.InsertCursor(fc)
for i in range(0, len(li)):
point=arcpy.Point(li[i][1],li[i][2])
row=cursor.newRow()
row.shape=point
#如果添加了字段,记得添加属性
cursor.insertRow(row)
del cursor
print "finish"
线转shp
# coding:utf-8
import arcpy
txtPath = r"C:\Users\lenovo\Desktop\arcpy\test\polylines.txt"#不能识别汉字
Path = r"C:\Users\lenovo\Desktop\arcpy\test"
file = open(txtPath) ## 读取text文件
next(file)
def CreatePolyline(coord_l):
point = arcpy.Point()
array = arcpy.Array()
featureList = []
for feature in coord_l:
for coord in feature:
point.X = coord[0]
point.Y = coord[1]
array.add(point)
#array.add(array.getObject(0))
polyline = arcpy.Polyline(array)
array.removeAll()#释放内存
featureList.append(polyline)
return featureList
SP = arcpy.SpatialReference(4326) #WGS84坐标系
li = []
for line in file:
li.append(map(float, line.split())) ##将坐标导入列表
coord_l = []
code_l = []
for i in range(len(li)):
if len(li[i]) == 2:
code_l.append(str(int(li[i][0])) + str(int(li[i][1])))
coord_l.append([])
else:
coord_l[len(coord_l) - 1].append([li[i][1], li[i][2]])
poly = CreatePolyline(coord_l)
arcpy.CreateFeatureclass_management(Path,"polyline_trans.shp","POLYLINE","","","",SP) ##设置生成的shp文件名
#arcpy.AddField_management('polygons.shp', 'code', 'TEXT')
cur = arcpy.InsertCursor(Path+"\\"+'polyline_trans.shp')
i = 0
for polyline in poly:
row=cur.newRow()
row.shape=polyline
cur.insertRow(row)
del cur
print "finith"
面txt转shp
# coding:utf-8
import arcpy
txtPath = r"C:\Users\lenovo\Desktop\arcpy\test\polygan.txt"#不能识别汉字
Path = r"C:\Users\lenovo\Desktop\arcpy\test"
file = open(txtPath) ## 读取text文件
next(file)
def create_polygon(coord_l):
point = arcpy.Point()
array = arcpy.Array()
featureList = []
for feature in coord_l:
for coord in feature:
point.X = coord[0]
point.Y = coord[1]
array.add(point)
array.add(array.getObject(0))
polygon = arcpy.Polygon(array)
array.removeAll()
featureList.append(polygon)
return featureList
SP = arcpy.SpatialReference(4326) #WGS84坐标系
li = []
for line in file:
li.append(map(float, line.split())) ##将坐标导入列表
coord_l = []
code_l = []
for i in range(len(li)):
if len(li[i]) == 2:
code_l.append(str(int(li[i][0])) + str(int(li[i][1])))
coord_l.append([])
else:
coord_l[len(coord_l) - 1].append([li[i][1], li[i][2]])
poly = create_polygon(coord_l)
#arcpy.CopyFeatures_management(poly, 'g:/python/polygons.shp') ##设置生成的shp文件名
arcpy.CreateFeatureclass_management(Path,"polygons_trans.shp","polygon","","","",SP) ##设置生成的shp文件名
cur = arcpy.InsertCursor(Path+"\\""polygons_trans.shp")
i = 0
for area in poly:
row = cur.newRow()
row.shape=area
cur.insertRow(row)
del cur
print "finished"