用arcpy编写ASCII码(txt文本)转点线面要素

可参考链接: 用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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值