大型交通流仿真平台——Matsim中文使用手册05

时间:2024-03-17 08:35:33

Osm地图与坐标系


通过本节,你将会:1.知道如何获得免费的地图数据//    2.理解OSM文件如何描述路网//    3.简单了解坐标转换的方法//


1. 开源地图 Open Street Map

Open Street Map(OSM)是一个开源的地图库,网站为http://www.openstreetmap.org,如图所示。这个地图由世界各国人士绘制,并且所有数据全部提供下载,包括城市中的节点、路网、建筑等信息。而我们的交通流仿真正需要基于城市的道路数据。因此OSM网站对我们十分有用。无须自己编network.xml中的数据,我们可以通过转换OSM地图得到。

大型交通流仿真平台——Matsim中文使用手册05

        OSM地图的数据格式为.osm,网站提供多种下载数据的方式。我们介绍两种方式,把某个地区路网的OSM文件下载到本地,作为我们路网的原始数据。

  • 方法一 当你所需要的地图范围较小时,如几条街道,几公里范围内,在OSM网站上查找你所关注的地点,同时进行缩放、拖动,直至大小满意,点击网页左上角“导出”,如下面第一幅图所示,会在网页左侧出来一列信息栏,继续点击“导出”,最后保存即可。
  • 方法二 当你所需要的范围较大,如整个城市,同样将OSM地图拖动到你感兴趣的地方,点击右上角的“导出”,在网页左侧栏目中下部,点击Overpass API,如下面第二幅图所示,并在弹出的保存界面中,将保存名称命名为xx.osm即可

大型交通流仿真平台——Matsim中文使用手册05

导出方法1

大型交通流仿真平台——Matsim中文使用手册05

导出方法2

2. OSM中的地图数据

首先需要在电脑中安装Notepad++,下载地址为https://notepad-plus-plus.org/download。这是一款非常轻便、快捷的文本编辑器。在学习Matsim的过程中,我们需要查看和编辑一些.xml文件,使用Notepad++会带来很大的便捷。

右键点击刚刚下载的.osm文件,选择使用Notepad++打开(右键文件,Edit with Notepad++)。.osm文件比较类似于.xml文件的组织形式,都是以<\start tag><\description><\end tag>的形式作为数据和关系的记录。我们来具体看一下.osm文件对于路网的描述。

节点- node 节点(node)是平面内元素最基本的属性,要想描述一条线段、一个图形,都需要最基本的节点信息。从下图中可以看出.osm文件所描述的节点主要包括以下属性:

  • id 每个节点的编号,不能重复
  • lat 该节点所在的纬度
  • lon 该节点所在的经度

大型交通流仿真平台——Matsim中文使用手册05

道路- way 如果需要描述一条线(或者环绕一个公园的边界),我们需要给出这条线一些关键节点的位置——至少,我们应该给出两个节点的位置,这条线才能被确定下来。因此,对于我们的路网文件,我们首先需要定义每个节点(node),再定义路网中的道路(way),每条道路需要引用一些节点,以确定这条道路的形状,如下图所示,每一条道路都拥有一些节点<nd ref = "123456789"/>,表示对上面所定义的节点的引用。另一方面,每条道路(way)还拥有一些标签<tag k = "a" v = "b"/>,通常有以下常用项:

  • k = "highway" 表示这条是一条路,v = "secondary"属性说明这条路的等级,道路在城市中作用越重要,等级则越高
  • k = "name" 这条道路在真实世界中的名称
  • k="amenity" 有些道路(way)的标签为这个,而没有k = "highway"标签,说明这条way并不是作为一条路使用的,而是一个场所

大型交通流仿真平台——Matsim中文使用手册05

关系- relation 在OSM路网中还有一些更复杂的图形,如城市中某个行政区的边界,需要使用关系(relation)来表示,如下图所示。由于关系与我们的路网无关,这里仅仅简单提一下。

大型交通流仿真平台——Matsim中文使用手册05

3. 坐标转换

本人并不学习测量专业,只是为了获取想要的地图文件,不得不接触一些坐标转换的知识。若有理解不当之处,还请大家去他处寻找更专业的描述。
本节不打算讲很理论的知识,因此大概介绍一下坐标变换。从上一节内容对.osm文件的描述,发现.osm文件是以经纬度记录节点位置的。经纬度可以看作基于地球表面的坐标系(更专业的,称为WGS-84坐标)。由于它是一个球面的坐标系,很不方便计算距离,以及在平面显示。因此我们需要一种平面的坐标系,来转换我们的坐标。
我要介绍的是墨卡托投影,如下面第一张图所示。墨卡托投影实际上将地球的球面投影至圆柱面,通过相关公式来计算在平面上的坐标。墨卡托投影的效果较好,但是越靠近地球两极,距离尺度变形越大,可以从多数地图软件看出(如:百度地图、谷歌地图),变换后的格陵兰岛甚至和南美洲一样大(如下面第二张图所示)!当然,在我们研究的区域内,只要纬度不是太高,变换后两点间的距离还是可以近似利用坐标直接计算的。顺便一提的是,经过墨卡托投影后的地图,里面的一个长度近似代表实际中的1m。
如果大家对变换后城市中距离的要求较高,我建议使用UTM坐标系,这是一种改良后的墨卡托坐标系。该变换将地球分为若干个分区,利用更复杂的数学公式,将球面坐标作等距变换,距离精确度更高。由于转换较为麻烦,而且对于跨分区边界的城市,转换效果并不好,因此笔者认为这是一种非常精确,但是对于本人并不适用的坐标转换方法。

大型交通流仿真平台——Matsim中文使用手册05

大型交通流仿真平台——Matsim中文使用手册05