目的:txt点位数据转成shapefile格式线数据(自动绘线)
版本要求:arcgis9.2、arcgis9.3版本软件自带该工具。从10.0及以后,安装软件后不带该工具,其中10.0-10.2版本该工具实际上还在安装路径下,但是10.3以后版本就没有该工具箱,可以从旧版本拷贝到新版本中使用。
1.Create Features From Text File工具导入方法
①首先,在安装路径下找到Sample.tbx工具箱,一般默认路径在Toolboxes下,例如我的在“D:\arcgis10.2\Desktop10.2\ArcToolbox\Toolboxes”,(该工具默认隐藏,需要打开显示隐藏文件功能才能看到)
②在名称后面加一个空格,即“Sample .tbx”。右键点击该工具箱,,属性->常规 中的属性去掉隐藏勾选。
③然后,在arcmap界面中打开工具箱,在工具箱空白区域点击右键,导入该工具箱即可。导入后,如下图中sample工具。
2.Create Features From T ext File工具导入txt格式要求
工具可以对4种类型的要素进行操作,分别是"point", "multipoint", "polyline", "polygon",因要素类型不同,txt文本格式也不相同。(1.#部分的数据部分为可选,即有坐标数据即可)
1、point
Point (要素类型标志)
1 -93862868531.3 326049964372.0 1.#QNAN 1.#QNAN(OIDField字段值 X Y Z M)
2 154791397227.0 210779774948.0 1.#QNAN 1.#QNAN(同上)
3 -4940150975.33 83982566580.7 1.#QNAN 1.#QNAN(同上)
4 -163024982186.0 -113623472433.0 1.#QNAN 1.#QNAN(同上)
5 -223953510882.0 200899472997.0 1.#QNAN 1.#QNAN(同上)
END(结束标志)
2、mulitipoint
Multipoint(要素类型标志)
1 0(OIDField字段值 一直为0)
0 -327554372488.0 214032549252.0 1.#QNAN 1.#QNAN(part序号 X Y Z M)
1 -305923423361.0 339264359985.0 1.#QNAN 1.#QNAN(同上)
2 -226230452895.0 175324535026.0 1.#QNAN 1.#QNAN(同上)
3 -217122684842.0 265263744552.0 1.#QNAN 1.#QNAN(同上)
2 0(OIDField字段值 一直为0)
0 -201184090749.0 340402830992.0 1.#QNAN 1.#QNAN(part序号 X Y Z M)
1 -169306902562.0 388218613271.0 1.#QNAN 1.#QNAN(同上)
2 -98721700149.0 323325765892.0 1.#QNAN 1.#QNAN(同上)
END(结束标志)
3、Polyline
Polyline(要素类型标志)
1 0(OIDField字段值 part序号)
0 -255337489816.0 349625784731.0 1.#QNAN 1.#QNAN(part序号 X Y Z M)
1 -324078053841.0 261790619588.0 1.#QNAN 1.#QNAN(同上)
2 -283342904789.0 64479741368.9 1.#QNAN 1.#QNAN(同上)
3 -145861776740.0 123036518131.0 1.#QNAN 1.#QNAN(同上)
2 0
0 -210783420541.0 198141949195.0 1.#QNAN 1.#QNAN(part序号 X Y Z M)
1 -78394186122.8 247787912102.0 1.#QNAN 1.#QNAN(同上)
2 -50388771149.8 103941917013.0 1.#QNAN 1.#QNAN(同上)
3 -210783420541.0 -39904078076.1 1.#QNAN 1.#QNAN(同上)
END(结束标志)
4、Polygon
Polygon(要素类型标志)
2 0(OIDField字段值 part序号)
0 -72536866995.8 146862759859.0 0.0 1.#QNAN(part序号 X Y Z M)
1 41310233670.3 92216151539.6 0.0 1.#QNAN(同上)
2 -53182859882.6 21630949126.6 0.0 1.#QNAN(同上)
3 -107829468202.0 100185448586.0 0.0 1.#QNAN(同上)
4 -72536866995.8 146862759859.0 0.0 1.#QNAN(同上)
InteriorRing(内部环标志)
5 -63429098942.5 103600861606.0 0.0 1.#QNAN(part序号 X Y Z M)
6 -52044388875.9 71723673419.7 0.0 1.#QNAN(同上)
7 -13336374649.5 75139086439.6 0.0 1.#QNAN(同上)
8 -22444142702.7 105877803619.0 0.0 1.#QNAN(同上)
9 -44075091829.3 110431687646.0 0.0 1.#QNAN(同上)
10 -63429098942.5 103600861606.0 0.0 1.#QNAN(同上)
2 1(OIDField字段值 part序号)
0 -299092597321.0 245909737439.0 0.0 1.#QNAN(part序号 X Y Z M)
1 -171583844575.0 196955484152.0 0.0 1.#QNAN(同上)
2 -170445373569.0 69446731406.3 0.0 1.#QNAN(同上)
3 -294538713295.0 86523796506.2 0.0 1.#QNAN(同上)
4 -299092597321.0 245909737439.0 0.0 1.#QNAN(同上)
END(结束标志)
3.运行
添加数据;键入111111.11就可以;命名输出图层,运行即可。
4.格式详解
本人遇到工作中问题,需要把爬取的点位进行线生成工作,需要对已有数据进行编排(利用python完成)。
import re
#线数量统计
count=1
with open(r'C:\Users\admin\Desktop\test.txt','r',encoding='UTF-8') as f_r:
with open(r'C:\Users\admin\Desktop\DataForGis.txt', 'w') as f_gis:
f_gis.write("Polyline"+'\n')
for i in f_r:
#提取每条消息的id和点位串信息 数组
l_line=re.findall('"lnglat": "(.*?)", "dtype"',i)
l_line_i=l_line[0]
#点位串按照;分割
fs = l_line_i.split(';')
print(fs)
num=1
f_gis.write(str(count) +" 0"+ '\n')
for p in fs:
#去除空数据
if not p:
continue
kkk=re.split('[,]',p)
xi=kkk[0]
yi=kkk[1]
f_gis.write(str(num)+' '+xi+' '+yi+'\n')
num+=1
count+=1
f_gis.write("END" + '\n')
print(count)
得到如下符合格式数据:
最终生成线: