GPS数据采集与OpenStreetMap编辑

简单介绍一下通过GPS采集道路数据并上传到OpenStreetMap的流程。

采集

首先你需要一个GPS数据记录器,或者叫做GPS Logger。这类产品在淘宝上可以找到很多,台湾的长天(HOLUX)是相对价廉物美的品牌。我的设备是HOLUX m1000c,下文以此为例。

m1000c的使用非常简单。开机之后,指示GPS的黄灯点亮,设备开始搜索GPS卫星。根据你所出的位置、遮挡情况以及天气情况,搜星的时间略有不同。当GPS黄灯开始闪烁时Logger即开始记录数据,默认情况下m1000c每隔5秒记录一次数据。每次重启后,Logger都会新开一条记录。

导入

对Windows用户,将Logger通过USB线与电脑连接后,可以利用随机附带的软件将数据导入为GPX格式。对Linux用户,可以利用gpsbabel导入数据:
gpsbabel -t -i m241 -f /dev/ttyACM0 -o gpx -F myfile.gpx

其中:

  • -t 表示数据为track类型
  • -i m241 输入格式为HOLUX m241,m1000c使用的是这种格式
  • -f /dev/ttyACM0 输入设备是/dev/ttyACM0
  • -o gpx 输出格式是gpx
  • -F 输出文件myfile.gpx

在一些发行版上,需要root权限访问/dev/ttyACM0,所以不要忘记将输出的文件chown给普通用户。

导入完成后可以利用下面的命令清空Logger
gpsbabel -i m241,erase_only=1 -f /dev/ttyACM0

在Windows和Linux上都可以使用Viking查看导入的数据:

  • 启动viking
  • 添加一个OSM地图图层: Layers->New Map Layer
  • 导入GPX数据: File->Append File…
  • 下载OSM地图,右键点击左侧的Map图层,Download Missing Onscreen Maps

Screenshot at 2011-10-05 09:45:20

编辑

Windows和Linux用户都可以通过Merkaartor编辑OSM数据。

启动Merkaartor,导入GPS数据: File->Import。
选择左侧的GPS图层,对需要导入的数据,右键点击Extract Drawing Layer将GPS转换为可编辑数据。
Screenshot at 2011-10-05 10:57:17

根据实际情况编辑道路数据的属性。对GPS转换的数据,选择菜单Feature->Force Upload,将其加入dirty set准备上传。点击Upload即可将数据上传到OpenStreetMap。

游浙江古镇

这居然是我第一次踏上浙江的土地。

浙江西塘,是个人很多车也很多的地方,油炸臭豆腐烤肉串更多的地方。
resized-DSC_0005

resized-DSC_0009

resized-DSC_0016

resized-DSC_0023

resized-DSC_0026

resized-DSC_0029

resized-DSC_0038

DSC_0047

resized-DSC_0039

resized-DSC_0063

resized-DSC_0066

resized-DSC_0071

浙江乌镇是一个人更多车更多,但是没有油炸臭豆腐烤肉串而只有红烧羊肉的地方。
DSC_0148

resized-DSC_0075

resized-DSC_0097

resized-DSC_0088

resized-DSC_0102

resized-DSC_0119

resized-DSC_0128

resized-DSC_0135

resized-DSC_0140

resized-DSC_0137

resized-DSC_0141

回程的路上很多游客反映,乌镇没有西塘好玩。我想还是油炸臭豆腐符合大家的口味,羊肉不是所有人都吃得惯的。

Upgraded to GNOME 3.2

ArchLinux最大的魅力就在于Rolling Release,所有的悲喜剧你都比别人早一步见证。

升级到GNOME 3.2后,我的gnome-settings-daemon不能正常工作,导致gtk+的主题都无效。如果没有经验你可能不太容易注意到它的真实原因。最后找到了同病相怜的人,这个问题被报告在这里。恰好是在我发现这个问题几个小时之前。在gnome解决这个问题之前,有一个简单的workaround:
sudo mv /usr/lib/gnome-settings-daemon-3.0/libcolor.so /usr/lib/gnome-settings-daemon-3.0/libcolor.so~

库加载失败后gnome-settings-daemon会自动禁用这个插件,避免出现Segmentation fault。以上的操作,at your own risk。

此外,gnome-shell升级到3.2以后有些api的变化,我更新了exaile豆瓣电台的gnome-shell插件,你可以顺手git pull一下。
Screenshot at 2011-10-02 17:48:51

Moving to ArchLinux

DSC_0004
这是用新入的Nikon 55-300mm的长焦镜头300端排的远处的塔吊,它与本文没有直接关系。如果实在要计算间接关系,它是我等待fedora无尽的启动时间里消磨时光的手段之一。

这周开始fedora彻底崩溃了,现在在默认的run-level下NetworkManager根本无法启动,次次3分钟超时。还由于不明的原因,以越来越大的概率,gdm会僵死在启动启动之前。如果切换到terminal,输入完用户名居然连password都不会prompt出来。有时甚至在runlevel3里都无法启动。本想忍下去等到下个月f16发布,但是今天晚上已经彻底无法进入系统了,算了,其实也就是挥挥刀的事情。

Ubuntu的回头路是走不得的,索性切换到了Arch,从此享受rolling release,不再在每年的4月10月里蠢蠢欲动惊慌失措。重装的经验和上次一样:看准分区,/home留着/干掉;在创建用户的时候看准原先用户的uid,直接用这个id创建新用户,这样$HOME自动就归属新用户了。Arch仓库里的东西甚至要比fedora还多,没有那么多洁癖,甚至Skype和IDEA的社区版都直接进了仓库。我现在年纪大了,能从仓库安装我是不会自己再去下载了。

其实Arch也是老朋友了,直不过以前一直把它憋在VirtualBox里,现在它从VBox里爬出来了,Ubuntu和Windows这些当年的host们被踹进去乖乖作guest了,翻身农奴这就起来把歌唱。