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。

GPS Track of Train K221: Nanjing to Guangzhou

GPS Logger完成了它有生以来最长的一次旅行,1477分钟,行程1767公里,途径江苏、安徽、江西、湖南、广东,包含了宁芜线、浙赣线、京广线等。有了GPS终端,贴地的旅途就变成一件非常严肃的事情。这周末去西安,这个GPS也是16个小时上铺车程唯一的安慰了。
Railway-K221 - Viking

这个数据分享在OpenStreetMap上,也许你会感兴趣:
http://www.openstreetmap.org/user/Sunng/traces/996794

I am Location Aware

身为一个跟GIS沾过边的人,我直到今年才真正知道我在哪。尽管有了带GPS功能的手机,但是为了能离cartographer更进一步,今天我又买了一个专门的GPS Logger设备Holux M1000C。所谓GPS Logger就是以固定时间间隔采集GPS数据并记录的设备,现在国内的绝大多数GPS设备都是以导航为主,少有这样功能简单价格合理的GPS产品。
DSC_0006

这类设备,自带的软件当然都是Windows only的,不过在Linux上也不是没有办法。处理GPS数据最著名的工具叫做BT747,支持多种设备、格式,用Java写的,可以通过jnlp启动,quick and dirty一下还是很不错的。不过如果要找一个长相厮守的命令行工具,还是要用gpsbabel。

以USB连接为例,将M1000C通过USB线连接到电脑,开启设备。可以用dmesg命令查看连接的USB设备,找到该设备(我的机器上设备叫做 /dev/ttyACM0)。M1000C使用的是MTK芯片,gpsbabel的命令为:
gpsbabel -t -i m241 -f /dev/ttyACM0 -o gpx -F output.gpx

其中:

  • -t 表示track
  • -i 输入格式,可以带参数如 -i m241,erase=1 表示导入并擦除设备上的数据
  • -f 输入设备
  • -o 输出格式,导出gpx格式
  • -F 输出文件

有了GPS设备,现在可以名正言顺地为OpenStreetMap贡献了,今天揣着设备把下班的路记录了一下,而且还专门走了小区后面没有路灯的一条路上采集了一下数据,没有路灯还真有点…
merkator


View Larger Map

来吧,加入到OpenStreetMap的贡献者队伍里吧!

The post is brought to you by lekhonee v0.7