跳转至内容

维基旅行:如何创建地图/专家地图

来自维客旅行

专家地图

[]

以下描述的过程需要相当的技术技能,并且略有过时。不过,有一个更新的分支,过程略有不同:osmatravel@github。其他选择可能是Project:如何绘制静态地图Project:如何绘制静态地图#从OSM导入SVG

此过程可用于创建功能齐全的维基旅行地图,其中包含自动放置和索引的景点、餐厅、酒店等的图标。

先决条件:能够访问运行现代Unix(最好是Linux,最最好是Ubuntu)的机器。此外,您想绘制地图的维基旅行目的地必须已使用新的列表标签格式。

流程概览

[]

地图创建过程现在遵循以下步骤:

  1. 下载并安装 Osmatravel 脚本(以前称为 wtp-maps)
  2. 在OpenStreetMap中查找您的目的地
  3. 选择收集地图坐标还是创建一个边界关系来定义要映射的区域
  4. 在您的文章中添加适当的Image标签以配置要创建的地图
  5. 运行脚本以生成SVG图像
  6. 根据需要“在OSM中编辑”以改进您的地图
  7. 重新生成SVG图像
  8. 检查和调整 SVG
  9. 将SVG上传到Wikivoyage共享
  10. 运行脚本以生成PNG图像
  11. 将PNG上传到Wikivoyage共享

下载并安装脚本

[]
  • 按照其网站上的说明安装xmlstarlet (在Ubuntu上,sudo apt-get install xmlstarlet 会安装它)。
  • 将tarball解压到方便的位置,例如您的主目录,或者$HOME/src。
 tar -xvzf osmatravel-osmatravel-master.tar.gz
  • 这会创建一个名为“osmatravel-osmatravel/”的新目录,其中包含脚本。进入该目录。
 cd osmatravel-osmatravel
  • 首次运行脚本时,您必须指定一个文章。如果您是第一次为某个文章生成地图,最好分步进行。例如,如果您只想为特定文章生成配置文件,可以这样做:
 make Config.mk ARTICLE=Paris/1st_arrondissement

请注意,文章名称中的空格应替换为下划线(_),括号应替换为%28(左括号)和%29(右括号)。

  • 您可以随时通过执行类似以下操作来重新配置脚本,以使用不同的目的地:
 make clean; make Config.mk ARTICLE=Paris/2nd_arrondissement

在OSM中查找目的地

[]

选择定义边界框的方法

[]

当您第一次为文章配置地图生成时,您需要选择如何配置地图的边界框。

  • 您可以围绕您想要绘制的区域绘制一个关系边界。Osmatravel脚本将计算一个包含该关系的矩形边界框,无论其形状如何,并加上一些填充。
  • 您可以复制在OSM中看到的矩形区域角落的经纬度坐标。

每种方法都有优点:如果您绘制了一个关系,它将在地图上显示为略浅的灰色,为地图的目的地部分增加一点视觉层次感。如果您配置了精确的经纬度坐标,脚本运行速度会更快。如果您想要两者兼顾,可以使用这两种方法。

在维基旅行中配置地图的Image标签

[]

Osmarender脚本现在从维基旅行文章本身获取特定目的地的配置信息。这意味着任何特定地图项目的配置数据都是公开可用的,并遵循CC BY-SA许可。

配置是通过向适当命名的图像的MediaWiki Image标签添加一些额外的属性来完成的。其中一些是脚本渲染地图所必需的,但有些是可选的。

必需的属性

[]
  • relid

  • border
  • Is_in

可选属性

[]
  • expand_for_listings
  • listings_placement
  • box_width
  • box1_x
  • box1_y
  • box2_x
  • box2_y
  • box3_x
  • box3_y
  • box4_x
  • box4_y

示例

[]
第8区的地图


生成地图

[]
  • 运行命令make。这将自动执行以下操作:
  1. 将先前定义的边界内的OSM数据下载到data.osm
  2. 下载维基旅行文章
  3. 将其所有列表名称提取到listings.txt
  4. 将列表与OSM数据进行匹配
  5. 创建一个名为map.svg的矢量地图,包括所有匹配到的列表图标
  6. 创建一个名为listings.svg的矢量列表框
  • 检查文件unmatched.txt,其中包含所有未在OSM数据中找到的维基旅行列表。如果某些内容未正确匹配……
    • 如果您在维基旅行中修复了错误并保存了更改,请运行make wt-clean,然后再次运行make
    • 如果您在OSM中修复了错误,请重新导出数据并再次运行make

在OSM中编辑

[]
OSM Potlatch编辑器(卫星图层关闭)
  • 点击[Edit]选项卡,这将加载您浏览器中的Potlatch Flash编辑器。您可以[Play](尝试)它,阅读文档,并观看Potlatch页面上的视频,直到您感到满意为止;然后[Start](开始)绘图。
  • 很可能其他OSM贡献者已经添加了街道和基本城市特征,所以您的任务是添加和检查维基旅行列表。
  • 添加新列表,请在地图上双击创建一个新节点。选择适当的类型(如下),然后点击[+]图标(左下角)并为其添加新标签。最重要的标签是name,它必须与维基旅行列表的名称完全一致。但是,如果维基旅行使用的是英文名称而OSM不是,您可以在OSM节点上添加name:en标签。

以下是将维基旅行列表映射到OSM地图功能的快速参考。完整列表可在此处找到。

维基旅行列表类型OSM标签OSM标签值
博物馆tourism博物馆
教堂、清真寺等amenityplace_of_worship
餐饮餐厅amenity餐厅
饮品酒吧、酒馆amenity酒吧
饮品夜总会amenity夜总会
住宿酒店tourismhotel
住宿旅馆tourism青年旅社
住宿露营地tourismcamp_site
巴士总站amenitybus_station
火车站铁路station

请注意,这些标签仅由OSM使用,并且(目前和一般而言)对于维基旅行地图生成不是必需的。

在Potlatch中将地图边缘定义为关系
  • 定义地图的边缘,请在区域边缘绘制一条线,并连接回起点。
    • 根据您的需求,这可以是一个简单的方形盒子或一个复杂的区域多边形。
    • 不要将其定义为道路或任何其他类型,只需将其保留为未命名的线。
  • 在Potlatch的左侧,点击Relation Editor按钮(“链环”图标)。
    • 选择“Create new relation”。
    • 输入“type”: “border”。点击[+]添加新标签,输入“name”以及您之前在Config.mk中输入的Destination。再次点击[+],输入“Is_In”以及Config.mk中的Region。(参见截图以获取示例。)

清理地图

[]
一个“原始”的OSM导出
  • 在您喜欢的SVG编辑器中加载map.svg,例如Inkscape
  • 找到您的城市中心。(OSM导出通常包含很长的街道和河流,会伸出所选区域,所以您可能需要放大查看。)
  • 填充:无绘制一个水平矩形。
  • 用指针工具选择矩形,并将W(宽度)设置为300.8,将H(高度)设置为173.0
    • 如果您想要一个垂直矩形,请交换高度和宽度。
    • 如果您有一个大区域,可以使用多个矩形来覆盖它。
  • 按住CTRL键的同时调整矩形大小,以保持比例不变。
  • OSM导出可能会有重叠的城市名称、街道下方的图标以及其他轻微的杂乱。请按您的喜好清理矩形区域内的内容。

Inkscape的当前版本允许您*编辑*OSM生成的地图,但如果您尝试保存它们,它们会严重损坏输出。因此,下面的变通方法是将SVG导出为PNG位图,然后在此基础上继续工作。

  • 完成后,选择矩形并从菜单中选择文件 > 导出位图...。选择“Selection”,并输入3008x1730像素作为大小。将其保存为“Destination-raw.png”。
  • 关闭map.svg。

检查可读性

[]

如果您是第一次导出此城市,现在是验证打印地图是否可读的好时机。在GIMP(或其他位图编辑器)中加载地图,并将图像 > 打印尺寸...设置为宽度6.875英寸,高度3.95英寸,然后将其打印出来(灰度模式)。如果您无需眯眼就能读出街道名称,那就没问题。

完成并导出地图

[]
完成的地图

键入以下命令:

 make png

如果Inkscape安装正确,脚本将在后台运行它。然后它们将运行Gimp来降低图像的色彩空间以适应网络。现在您应该在以您的文章命名的目录中找到一个PNG图像,并且可以上传到Wikivoyage共享。您应该检查一下,以防万一。

恭喜——您的地图完成了!

© 2026 wikivoyage.cn. Text is available under the CC BY-SA 4.0 License.