返回

基于OSM数据构建立体立交道路:从梦想走向现实

前端

开篇

身处《城市:天际线》的浩瀚都市规划世界中,立交道路无疑是构建高效交通网络的基石。然而,手动创建这些复杂结构的过程却令人望而生畏。因此,我们踏上了探索利用OSM(开放式街图)数据自动生成立体立交道路的旅程。

理解OSM数据

OSM是一个庞大且不断增长的地理空间数据库,由全球志愿者共同维护。它包含了有关道路、建筑物、绿地等城市特征的丰富信息。在本文中,我们将重点关注OSM的道路数据,因为它为我们提供了构建立交道路的基础。

从OSM数据中提取道路

我们的第一步是从OSM数据中提取道路网络。为此,我们可以使用Overpass Turbo等工具,这是一种基于浏览器的查询编辑器,允许我们使用特定的查询语言从OSM数据库中检索数据。

例如,以下查询将提取所有道路类型为“primary”、“secondary”或“tertiary”的道路:

[out:json][timeout:25];
(
  way["highway"="primary"]
  way["highway"="secondary"]
  way["highway"="tertiary"]
);
out body;
>;
out skel qt;

生成道路图

有了提取的道路网络后,我们需要将其转换为道路图,即一系列连接的节点和边。我们可以使用NetworkX等库来执行此操作。

import networkx as nx

# 创建一个有向图
G = nx.DiGraph()

# 添加节点和边
for node in nodes:
    G.add_node(node)
for edge in edges:
    G.add_edge(edge[0], edge[1])

创建立交道路

现在,有了道路图,我们就可以创建立交道路了。此过程涉及以下步骤:

  1. 确定立交点: 使用图论算法,例如Dijkstra算法,识别具有多个连接的节点。这些节点将成为立交点的候选者。
  2. 生成立交连接: 对于每个候选立交点,计算连接不同道路的潜在立交连接。
  3. 选择最佳立交连接: 使用启发式方法或机器学习算法,选择最适合给定道路网络的立交连接。
  4. 构建立体模型: 根据选定的立交连接,使用3D建模软件或库构建立体立交道路模型。

将立交道路导入《城市:天际线》

最后一步是将生成的立交道路导入《城市:天际线》。我们可以使用Mod工具,例如Road Anarchy,来绕过游戏中的限制,并放置具有复杂几何形状的立交道路。

结论

通过利用OSM数据,我们能够自动化立体立交道路的生成过程,从而简化了《城市:天际线》中的城市规划。这不仅节省了时间和精力,还提供了创建更逼真和高效的城市交通网络的可能。通过使用文中提供的技术指南,您现在可以将您的城市规划梦想变为现实,让您的城市在《城市:天际线》的广阔世界中拔地而起!