#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
在这里插入代码片
从读取kml到建立shapefile文件
最新推荐文章于 2023-10-31 19:42:53 发布