Google地球:觀看衛星圖像、地圖、地形圖、3D 建築物、外太空的星系以及海洋深處,一切盡收眼底。
Windows手机系统:全球第三大智能手机操作系统
Windows手机系统应用生态惨不忍睹,不过有这么一个程序:
很明显,是一个运动记录类的应用
有着简洁的界面和实用的功能
而比较特别的,是它的同步功能
由于Windows手机系统比较封闭,能正常使用的云盘只有微软自己的Onedrive(5G免费容量)
于是,这个应用在同步数据时会同步到Onedrive中
打开电脑上的Onedrive,可见这个应用会将记录的路线导出为kml格式
百度百科:KML 是一种文件格式,用于在地球浏览器(例如Google地球、Google 地图和谷歌手机地图)中显示地理数据。KML 是由开放地理空间联盟(Open Geospatial Consortium, Inc.,简称 OGC)维护的国际标准。
也就是说,这些kml文件可以双击用Google Earth打开
可见当时记录的数据都可以在Google Earth中显示
而另一个比较特别的地方,是它的地图没有偏移,在 Google的地图系统里没有偏移(2017.11.14后来想了一下,手机内置的是GPS模块,记录的数据叠加到google地球的卫星图上自然是不会偏移的)
下图与路网做个对比,那个椭圆就是华师西区田径场
由于某些原因,Google地图在国内大部分地区是不太好使的
参考Google自家的Google健身和大名鼎鼎的Runtastic
不知道这个应用底图是不是用的Google地图,网上有说是Here的,反正它对中国地区的偏移作了纠正(2017.11.14,它用的可能就是google的数据,反正不是国内的地图就对了,不会存在需要纠正的问题)
***********************************************************************************************************************************************
既然我的跑步轨迹可以导出为kml文件,那么很自然的就会想到用ArcGIS打开来看看了
一转换
wgs84,更可以确定这个应用用的不是国内的地图作为底图
***********************************************************************************************************
既然都用ArcGIS打开了,但是好像又没什么可以分析的,那就用别的方式打开这个kml文件看看吧
一直往下直到我在第77行看到了<coordinate>这个标签
很明显这就是一些经纬度坐标,所以可以知道,Google Earth是用这些坐标来记录轨迹的,那么可以推断出在跑步的时候它一定是隔一段时间获取一个坐标的,最后Google会将这些坐标连接成线
****************************************************************************************************************
几周前,室友vanyl遇到一个问题:
SHAPE字段下的每一个单元格都存储了组成一条线的所有坐标,现在要将这些坐标转变成线要素,这样的单元格有775个,也就是有775条线,775个坐标的集合
由点转线,这不就是下面的一个或多个工具可以完成的?
然而还有一个要求,要将设备编码和类型编码也存储到每条线的属性里面
试了下这里的工具,反正就是弄不出来
***************************************************************************************************************下面是怎么用Google Earth来解决这个问题
之所以想到Google Earth,是因为之前已经知道了它会将点连接成坐标
不过又有一个问题
每条跑步轨迹只是一条线,而这里要生成的是775条线
所以一个kml文件里面能不能存储多条线的坐标呢
只好再打开Google Earth看看
我画了一条很粗的黄色的线
再画一条红色的线
发现有一个“将位置另存为”
另存为后,自然要看下这两条线是不是作为两个线要素存储在同一个kml文件中
于是将它再转成shp格式
感觉是这么个道理了
这个时候自然想到那个另存为的kml文件里肯定存储了这两条线的坐标集合
于是再用另一种方式打开kml文件
显然,<coordinate>和<name>标签里的内容分别代表两条线的坐标集和各自的名称,而其他地方基本是不变的,而且还这么简洁
经过观察,两条线坐标和名称存储在<placemark>标签里面,也就是说只要重复编写<placemark>的内容,就能将多条线存储在同一个kml文件中
问题又来了,怎么重复写775个特定内容有所不同的<placemark>,还要将它们拼接在一起呢
最容易想到的思路应该就是编程,这也是我要继续学习的
下面是另一种方法
****************************************************************************************************************
计算机二级Office的Word考点里面有一个内容叫做“邮件合并”
它的作用,举个例子:
运行结果就是将表里面的设备编码和坐标按照上图的格式自动填好并且拼接到了一起
对于kml文件,要使用的格式就是下面这个<Placemark>*</Placemark>标签了
下图说明<Placemark>标签下的<name>标签也会存储在shp文件的属性表里,所以设备编码可以放在<name>标签里面
按这样填写:
结果如下
*************************************************************************************************************************************************
但是,最后这一步过程其实并没这么顺利......
原因是:
这个问题表现为当构成某条线的坐标太多时,在邮件合并后有部分字符会被截断,对于这份数据,本来结果是这样的:
看起来像一条线,其实这是由84条长度大于89.9的线造成的,而其余600几条线由于坐标字符没超过255得以正确生成,只是缩放到全局后显得太小了
室友vanyl最先发现了这个问题, 并使用将单元格格式改成文本的办法解决了这个问题
但是,我这里是怎么也解决不了
于是我就找了别的办法,将这个数据先放到access数据库中再做邮件合并就成功了
***********************************************************************************************************************************************
将Excel中的坐标数据放到access数据库中,导入时shape字段的数据类型要选超链接,如果选文本的话,超过255个字符的项同样会被截断
导入后再新建一个类型为备注的字段,将shape字段复制过去就行了(备注类型最大可以存储64000个字符,如果还是超过的话,当然也是会被截断的)
***********************************************************************************************************************************************
最后放到Google Earth上看看
2017.11.14回来看看,整个过程还挺曲折的。