|
JOSM - 创建自定义预设组合在 上一章中,我们研究了如何将自定义预设组合菜单添加到JOSM中。在本章中,我们将介绍如何创建自己的自定义预设组合文件。 警告!这是个高级话题…慎重起见! XML简介为了创建我们自己的预置组合菜单,我们首先需要了解一种叫做XML的语言。如果你已经熟悉了XML,请跳到下一节。 XML是”可扩展标记语言”的缩写,是一种与HTML类似的计算机语言。关键的区别在于,XML的设计是为了携带数据,而不是显示数据。互联网上的许多应用程序使用XML来传输数据,包括OpenStreetMap。XML使用元素,每个元素内部可以包含子元素。例如,让我们想象一下,我们要创建一个XML文件,其中包含一个餐厅菜单的数据。我们必须创建一个根元素来包含所有关于菜单的数据。我们的根元素将有一个开头和一个结尾标签,像这样:
信息包含在一个元素里面,每个元素里面可以有更多的元素。
在这个例子中,我们在我们的 <item> 元素中放置了两个 <menu> 元素来描述菜单中包含的两个不同的项目。每个项目中又包含两个元素, <cost> 和 <description>。还请注意我们如何在开头的 <item> 标签内写上name=”汉堡”。这叫做属性,增加了元素的信息。 XML术语
使用XML来保存和传输数据是非常好的,因为它对计算机来说很容易理解。 JOSM预设组合文件让我们在JOSM中添加一个样本预置组合文件,分析一下它的工作原理。
请注意,出现的表格中有三个字段,每个字段接受不同类型的输入。第一个字段,建筑名称,接受一个文本字符串作为输入。第二个字段,建筑物用途,有一个下拉框。最后一个字段是一个复选框,意味着它只能有两个值中的一个,即开启或关闭。 现在让我们看看定义这个预设组合形式的XML文件。
现在,让我们忽略前六行和最后一行,关注 <item> 标签之间的一切。 第一行是这样的:
这是一个项目的开头标签,它被添加到菜单中。它有两个属性,名称和类型。名称定义了预设组合菜单上的显示方式。类型将此预设组合限制为特定类型的对象。在这种情况下,预设组合只能应用于点和形状 - 换句话说,节点和封闭的路径。如果你尝试将此预设组合应用于线条,它将无法实现。 我们来看下一行:
当你点击菜单并打开示例表单时,在顶部你会看到”建筑物表单”的文字,这就是这一行定义的文字。这定义了一个 <label> 元素,它只是在表单中显示文本。文本是由属性text=”某些文本”定义的。 往下走几行就能找到这个:
这是将应用于我们所选对象的标签之一。因为它使用了元素 <key>,所以当选择这个预设组合时,这里给出的OSM标签将被自动应用。因此这个对象将自动获得building=yes这个标签。 下一行有点不同,使用了<text>元素。
&lt;text>元素创建了一个空白字段。在 JOSM 中创建表单时,用户将能够填写空字段。因为设置了属性 delete_if_empty=”true”,所以如果用户将此字段留空,则不会添加任何标签。 表单上的下拉框定义在下面一行:
下拉框由<combo> 元素定义。与 <text> 元素一样,属性 key 定义了标记键。然后从可能的values列表中选择值。display_values属性允许你选择要在下拉框中显示的不同名称,这可能比OSM标签值更容易理解。 最后,我们来看一下定义复选框的那一行。
<check> 元素定义了 - 你猜对了! - 复选框。属性default=”off”表示该复选框默认为不选中。其余的属性你已经见过了。 创建你自己的预设组合文件创建你自己的预设组合文件的最好方法是采用一个已经存在的文件,并对其进行操作,以实现你的目标。请随意编辑这个样本文件,并通过实验来学习基础知识。只需记住,每次保存它时,你都需要重新启动JOSM来加载更改的内容。 在你开始创建自己的预设组合之前,你需要仔细考虑你将使用的标签。发明新的标签是另一个话题。一般来说,你应该利用现有的OSM标签。大多数现有的标签都列在 OSM Wiki上的地图特征页面. 这个示例文件包含了JOSM预设组合文件中的大部分元素 - 没有太多的表单元素。如果你想尝试更复杂的预设组合文件,请在这里下载dhaka_presets.xml文件。 此外,所有可能的要素的详细解释可以在 这里找到。 祝你好运!
本章节有用吗?
告诉我们并帮助我们改进本指南。
|