适用于KDE行程的OpenStreetMap室内地图

2020-06-13 23:05:14

在前面的Posti中,简要提到了正在进行的将交互式火车站和机场地图添加到KDE行程中的工作。这里有一些关于这是关于什么的更多细节。

一些公共交通后端服务实际上提供了到图像或PDF文件的链接,其中带有旅行中涉及的所有站点或车站的地图,显示这些将相当简单,甚至会为我们提供相应运营商的官方地图。这总比什么都没有好,但当你想要一张火车站或机场的地图时,这并不是最好的方法:

找出你下一次转机的出发地点,即。航班的登机口或列车的站台(或更好的站台部分)。因为我们知道这些信息,我们可以很容易地通过突出显示那些地方来帮助那里。

找出在哪里买当地公共交通服务的车票,比如自动售票机或售票处。因为我们知道你继续旅行的是哪家交通运营商,建议你在哪里买票会有所帮助。

找个洗手间,找个地方拿食物/饮料,找个遗失行李柜台,找个药房,或者找一个与你的机票或常客奖励计划相适应的休息室。这可以通过搜索/过滤来支持,但是也可以使用上下文信息,例如考虑开放时间(即,在您等待连接期间关闭的位置可能不太相关)。

对于以上所有功能,您可能还需要导航支持。虽然找路可能不会那么复杂(我们通常说的是一座大建筑),但在考虑行动限制时,无论是沉重的行李、婴儿车、受伤的腿还是轮椅,都会面临更大的挑战。例如,在这些情况下,你可能更喜欢电梯而不是楼梯。然而,对于这些人来说,不仅要知道他们在哪里,而且要知道他们现在是否真的在运作,这不仅是有用的。

所有这一切显然需要的不仅仅是一张带有地图的不透明图像,而是一种我们可以根据用例充分反思和适应的东西。虽然雄心勃勃,但由于有了OpenStreetMap.OSM不仅为地图提供了空间数据,还提供了详细的语义注释(参见非常详细的机器可读的开放时间规范),我们确实拥有了构建这一点所需的所有数据。而像whelmap.org这样的应用程序展示了如何将其与电梯的实时状态数据相结合。

虽然许多OSM地图关注的是二维,但我们还有额外的复杂性,因为火车站和机场通常是多层建筑,所以我们必须关注第三维。例如,看看默认的OSMRenender是如何显示柏林中央车站的:

这几乎没有用,因为一半的站台都在地下,因此甚至看不见,便利设施分布在三层楼里,你分不清它们。不过,关于什么级别的东西的信息都在那里,我们只需要在渲染地图时考虑到这一点。

OSM称这种室内测绘为室内测绘,即使从技术上讲,与此相关的一切可能都是“室内”的。对于这些信息,也有一些现有的基于Web的渲染器,比如OpenLevelUp或OpenStationMap。

当然还有更多的东西要写,我会在接下来的几周里努力做到这一点。在这项技术真正发挥作用之前,还有更多的工作要做。

这方面的代码目前在KPublicTransport存储库中,不一定是因为这是存放它的最佳位置,而是因为它使用的是已经存在的OSM代码。这仍然是一个相当小的代码库,如果这是您感兴趣的主题,请随时联系!

其中一个核心部分是对地图上显示的内容的声明性定义,因此该部分甚至不需要编程技能就可以进行有意义的工作。如果你对更具挑战性的性能或数学问题感兴趣,这里也有一些:)