从读取kml到建立shapefile文件

24 篇文章 0 订阅
23 篇文章 0 订阅
#kml到TXT
import os,sys,re,arcpy
from arcpy import env
def cur_file_dir():
    path=sys.path[0]#返回目录列表字符串,0是文件所在目录
    if os.path.isdir(path):#判断是否为目录
        return path
    elif os.path.isfile(path):#判断是否为文件
        return os.path.dirname(path)
dirname=cur_file_dir()#工作空间
print(dirname)
li=os.listdir(dirname)#返回列表,目录下文件名称
for filename in li:
    newname=filename
    newname=newname.split('.')
    if newname[-1]=='kml':
        newname[-1]='txt'
        newname=newname[-2]+'.'+newname[-1]
        filename=dirname+'\\'+filename
        newname=dirname+'\\'+newname
        os.rename(filename,newname)#再工作空间下参数可以是文件名
        print(newname,'updated successfully')


env.overwriteOutput=True
path=''
env.workspace=path
TXTlst=arcpy.ListFiles('*.txt')
coordidic={}
#把坐标值读入字典中
for txt in TXTlst:
    n=txt.split('.')[0]#文件名到点名
    reader=open(path+'\\'+txt)
    pat=re.compile('<coordinates>.*</coordinates>')
    while True:#while true --break跳出循环
        line=reader.readline()
        if len(line)==0:
            break
        line=line.strip()
        m=pat.match(line)
        if m:
            corstr=line
            corstr=corstr.strip()
    reader.close()
    corstr=re.sub('<coordinates>(.*?)</coordinates>',r'\1',corstr)
    coordilst=corstr.split(',')
    coordilst=[float(a) for a in coordilst]
    coordidic.setdefault(n,coordilst)
fc='TrainStation'
arcpy.CreateFeatureclass_management(path,fc,'Point')
arcpy.AddField_management(fc,'Name','TEXT',9,'','','Name','NULLABLE'.'REQUIRED')
curor=arcpy.da.InsertCursor(fc,['Shape','Name'])
prjFile='WGS 1984.prj'
SpatialRef=arcpy.SpatialReference(prjFile)
nlst=coordidic.keys()
for n in nlst:
    point=arcpy.Point()
    point.X,point.Y=coordidic[n][0],coordidic[n][1]
    curor.insertRow([point,n])
del curor

在这里插入代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值