Presets and Fields

  • Presets
    • Preset文件
    • Preset结构
    • Preset属性
      • name
      • geometry
      • tags
      • addTags
      • removeTags
      • Fields / moreFields
      • icon
      • imageURL
      • searchable
      • matchSorce
      • countryCodes
      • notCountryCodes
      • replacement
      • reference
  • Fields
    • Field文件
    • Field结构
    • Field属性
      • type
      • key / keys
      • universal
      • geometry
      • default
      • options
      • string
      • snake_case
      • caseSensitive
      • min_value
      • max_value
      • prerequisiteTag
      • countryCodes
      • notCountryCodes
      • urlFormat
      • pattern
  • 编译
  • 自定义preset

Presets

Preset是iD编辑器预设的要素,Field是Preset的属性,定义文件为JSON类型,存在放在目录data/presets中。

Preset文件

Presets定义文件为JSON类型,存在data/presets/presets目录下。他们有组织的存放于基于k/v结构的目录层次中。
例如, preset的tag为leisure=park,定义文件为 data/presets/presets/leisure/park.json

Preset结构

一个简单的preset结构

{// 图标."icon": "maki-park",// fields中的属性默认显示在编辑器左侧的属性栏中.// 查看fields详细文档了解什么可以写在这里."fields": ["address"],// moreFields中的属性可以手动添加到属性栏. // 如果属性存在默认会显示在属性栏中."moreFields": ["phone","website"],// preset合法的几何类型.// 可选类型包括 point, area, line, and vertex.// vertexes是line中的point, 比如道路中的形状点.// lines是不闭合的ways, areas是闭合的ways."geometry": ["point", "area"],// Terms是preset的同义词// 他们会被添加到检索功能. // 查找woodland会返回park要素."terms": ["esplanade","village green","woodland"],// 当要素被选中时Tags会被默认添加,// 同时也用于匹配要素属于哪种类型.// 可以使用 "*" 匹配所有类型."tags": {"leisure": "park"},// 这个要素显示的英文名称."name": "Park"
}

完整的要素 JSON 定义可以参考文件 data/presets/schema/preset.json

Preset属性

name

要素的英文名称,它被发送到Transifex,以便转换成本地化语言。
此属性为必须,无默认值。

geometry

要素允许的几何类型数组,要素按顺序进行匹配。

  • point:不属于任何道路的点
  • vertex:属于一条或者多条道路的点
  • line:线状要素
  • area:一个闭合的线(首节点和尾节点相同)或者是一个type=multipolygon的关系
  • relation:关系
    闭合的路既可以是line也可以是area。如果要素可以是两种类型,当选择area类型是,编辑器会自动添加area=yes标签。
    应按优先顺序列出几何类型。例如,要素leisure=swimming_pool中area在point之前。
    此属性为必须,无默认值。

tags

一个拥有"key": "value"标签的对象必须匹配到一个要素类型。通配符"*"可以匹配这个key的任何value。
一个对象只能匹配到一个要素类型,如果匹配到多个类型,iD会根据matchScore、匹配的标签数量、使用的通配符找到最佳匹配结果。
此属性为必须,无默认值。

addTags

当选择这个要素时可以选择添加的标签。默认值为tags。如果需要,这个属性通常是tags的超集。
iD的validator会建议用户从addTags中添加缺失的标签来匹配要素。例如,Bridge要素有如下属性:

    "tags": {"man_made": "bridge"},"addTags": {"man_made": "bridge","layer": "1"}

当添加一个Bridge要素,会默认给出man_made=bridgelayer=1标签,用户可以将layer改为3,要素仍然匹配,因为仍然拥有man_made=bridge标签。如果用户删除了layer标签,iD会建议添加回值1

removeTags

当要素变为其他类型时被删除的属性。默认值为addTags,如果没有定义,默认值则为tags

Fields / moreFields

这两个属性都是属性路径的数组(例如:description 或者 generator/type),fields默认显示,moreFields在用户手动添加时显示或者有匹配的标签时显示。注意,一些属性的显示有先决条件prerequisiteTag才会显示。
一个要素可以通过中括号引用另一个要素的属性,就像{preset},例如shop/books引用了shop的属性:

"fields": ["{shop}","internet_access"
],
"moreFields": ["{shop}","internet_access/fee","internet_access/ssid"
],
"tags": {"shop": "books"
}

如果fieldsmoreFields没有定义,则使用父要素的值。例如,shop/cooonvenience自动使用shop相同的属性。
在显式继承和隐式继承中,有属性定义的要素通常不会继承父要素属性。

icon

本地SVG文件名称。你可以使用下面任何一组图标。使用图标时使用前缀版本名称,例如"icon": "maki-park"或者"icon": "tnp-2009223"

  • iD’s spritesheet (iD-)
  • Maki (maki-),Mapbox地图图标
  • Temaki (temaki-),一个maki的扩展包
    • 如果你要提交一个图标,这里是最好的位置。
  • Font Awesome,上千的常用图标
    • 分为免费版和专业版。你可以使用免费版如下样式:

      • Solid (fas-)
      • Regular (far-)
      • Brands (fab-)
  • The Noun Project (tnp-),上百万的常用图标。
    • 根据许可不同。你只能在iD使用public-domain图标。
    • 根据样式不同。避免使用太细或者太细致的图标,他们不适合在小尺寸下使用。
    • 使用图标的数字ID(例如,2009223)。当你在网站中选中图标链接时显示。
    • 不幸的是,需要注册免费的API Key下载图标,即使是public-domain图标。添加一个文件the_noun_project.auth到iD的本地根目录,包含你的认证信息,例如{"consumer_key": "xxxxxx", "consumer_secret": "xxxxxx"}。此文件不受版本控制。

imageURL

远程图片文件URL。并不能完全替换图标,两个图标都可能显示在用户界面中。
例如,imageURL用于从name-suggestion-index中指定品牌预设的logo。
图像至少为100100px以便在高分辨率屏幕上显示5050pt。

searchable

不推荐使用或者通用的要素可设置为"searchable": false,这意味着在编辑现有数据时会使用他们,但在添加新要素时不能作为选项使用。
按照惯例,不可搜索的要素文件名以下划线开头。(例如,data/presets/presets/landuse/_farm.json

matchSorce

一个要素匹配的排序数字。
例如,一个要素有amenity=cafebuilding=commercial标签,会匹配Cafe要素而不是Commercial Building要素,因为Commercial Building的matchSorce比较低。
默认值为1.0。

countryCodes

一个两个字母字符数组,小写城市代码(ISO 3166-1 alpha-2)。要素只有当用户在编辑指定的白名单国家时才能被搜索。不是用户位置或者语言设置,而是编辑的地图位置。
默认所有位置都可编辑

notCountryCodes

一个两个字母字符数组,小写城市代码(ISO 3166-1 alpha-2)。与countryCodes类似的黑名单。

replacement

一个更推荐的要素ID。iD验证器会与此要素设置匹配,推荐用户升级标签。
如果可能,请使用deprecated.json来指定旧标记的升级路径。此属性用于特殊情况,例如具有几何要求的升级。

reference

一个链接到wiki文档的要素的键值。只要要素包含多个标签时才需要。
例如:

"reference": {"key": "tower:type","value": "communication"
}

Fields

Fields是可以在要素中复用的元素。

Field文件

Fields定义文件为JSON类型,存在data/presets/fields目录下。
field文件通常根据关联的key命名。例如,标签sport=*存放在文件data/presets/fields/sport.json中。当一个属性有多个版本时,我们在文件名中添加一个后缀:(sport.json, sport_ice.json, sport_racing_moter.json)。
某些key使用冒号(’:’)命名。命名的属性根据其标签嵌套在文件夹中。例如,标签piste:difficulty=*存放在文件data/presets/fields/piste/difficulty.json中。

Field结构

{"key": "cuisine","type": "combo","label": "Cuisine"
}

完整的属性 JSON 定义可以参考文件 data/presets/schema/field.json

Field属性

type

指定属性的界面和行为的字符串。必须是以下值之一。

  • Text属性

    • text - 简单的单行文本属性
    • number - 拥有上下键的数字输入文本属性(例如width=*
    • localized - 具有本地化功能的文本字段(例如name=*, name:es=*, etc.
    • tel - 电话号码输入文本属性(根据位置本地化)
    • email - 邮箱地址输入文本属性
    • url - URLs输入文本属性
    • identifier - 身份证输入文本属性(例如gnis:feature_id
    • textarea - 多行文本属性(例如description=*
  • Combo/Dropdown属性
    • combo - 从多个选项选择一个选项的下拉框(例如surface=*
    • typeCombo - 从泛型类别关键字中选择特定类型的下拉框(例如waterway=*,如果未设置,则标记将为waterway=yes,但下拉列表中包含streamditchriver等选项)
    • multiCombo - 用于向公用多建添加yes值的下拉框(例如recycling:*-> recycling:glass=yesrecycling:paper=yes,etc)
    • networkCombo - 帮助用户选择路由网络标签的下拉框(根据位置本地化)
    • semiCombo - 用于向分号分隔的列表中添加多个值的下拉框(例如sport=*-> soccer;lacrosse;athletics;field_hockey
  • Checkboxes
    • check - 3个状态的checkbox:yes, no, no tag
    • defaultCheck - 2个状态的checkbox。选中为yes,未选中为no tag
    • onewayCheck - 3个状态的checkbox,用于oneway属性。带有方向转换按钮。
  • Radio Buttons
    • radio - 多选radio按钮属性
    • structureRadio - 多选结构按钮属性。道路桥梁有扩展输入。
  • Special
    • access - 用于定义高速上的access=*的标签
    • address - 用于输入地址信息的文本和下拉框(根据位置本地化)
    • cycleway - 用于在高速上添加cycleway:leftcycleway:right标签的下拉框
    • maxspeed - 用于输入速度的数字文本属性和"mph/kph"的下拉框
    • restrictions - 用于编辑转向限制的图形属性
    • wikidata - 用于选择Wikidata实体的搜索属性
    • wikipedia - 用于选择wiki语言和Wikipedia页面的属性

key / keys

将要编辑的属性的属性名称。像address这样的复合属性在keys属性中需要一个key数组。

universal

如果属性定义中包含"universal": true,则这个属性出现在所有要素的添加属性列表中。

geometry

如果指定,则仅显示此类几何。point, vertex, line, area

default

属性的默认值。例如,building_area.json会自动添加属性building=yes到当前选择的building要素(仅当要素为闭合区域)

{"key": "building","type": "combo","default": "yes","geometry": "area","label": "Building"
}

options

Combo类型属性可以通过options数组提供下拉框值域。用户可以从下拉框选择也可以自己输入。

{"key": "diaper","type": "combo","label": "Diaper Changing Available","options": ["yes", "no", "room", "1", "2", "3", "4", "5"]
}

string

Combo类型属性可以在string属性使用name-value对。当属性有固定数量的选项,并且你想提供翻译描述时,这将非常有用。使用string属性时,用户不能输入自己的值,必须从选项中选择。

{"key": "smoothness","type": "combo","label": "Smoothness","placeholder": "Thin Rollers, Wheels, Off-Road...","strings": {"options": {"excellent": "Thin Rollers: rollerblade, skateboard","good": "Thin Wheels: racing bike","intermediate": "Wheels: city bike, wheelchair, scooter","bad": "Robust Wheels: trekking bike, car, rickshaw","very_bad": "High Clearance: light duty off-road vehicle","horrible": "Off-Road: heavy duty off-road vehicle","very_horrible": "Specialized off-road: tractor, ATV","impassable": "Impassable / No wheeled vehicle"}}
}

如果Combo属性没有指定options或者strings,该属性将从Taginfo服务获取公共标签值用作下拉框。

snake_case

用于Combo属性,如果snake_casetrue则标签中的空格替换为下划线
默认值为true

caseSensitive

用于Combo属性,如果caseSensitivetrue,则允许大小写敏感。
默认值为false

min_value

用于number属性,最小有效值。
无默认值

max_value

用于number属性,最大有效值。
无默认值

prerequisiteTag

先决条件标签。一些标签达到先决条件才会显示。
应包含如下属性:

  • key:必须的标签key
    可以选择性的选择如下属性之一:
  • value:key必须含有的值
  • valueNot:key必须不含有的值
    或者,对象可以包含单个属性:
  • keyNot:不能出现的key
    例如,只有当internet_access属性不是no的时候,显示Internet Access Fee属性。
"prerequisiteTag": {"key": "internet_access","valueNot": "no"
}

如果某个要素具有此属性的一个或多个key的值,则无论prerequisiteTag属性如何,都将显示属性。

countryCodes

一个两个字母字符数组,小写城市代码(ISO 3166-1 alpha-2)。属性只有当用户在编辑指定的白名单国家时才能被使用。不是用户位置或者语言设置,而是编辑的地图位置。
默认所有位置都可使用

notCountryCodes

一个两个字母字符数组,小写城市代码(ISO 3166-1 alpha-2)。与countryCodes类似的黑名单。

urlFormat

用于identifier属性,外部记录的永久链接URL。必须包含一个{value}占位符用于替换标签值。

pattern

用于identifier属性,正则表达式匹配有效值。

编译

编译presets,只需要执行npm run build
下列文件将自动生成,重新编译时被替换:

  • data/presets/categories.json
  • data/presets/fields.json
  • data/presets/presets.json
  • data/presets.yaml
  • data/taginfo.json
  • dist/locales/en.json

自定义preset

iD支持部署自定义preset集合,你可以通过preset访问器提供presets。

var id = iD.coreContext().presets({presets: { ... },fields: { ... },defaults: { ... },categories: { ... }
});

必须提供所有四个部分(presets、fields、defaults和categories)。此外,必须包括几个基本presets和fields。
必须包含基本的几何,以便每个要素至少能匹配到一个preset,例如:

"area": {"name": "Area","tags": {},"geometry": ["area"],"matchScore": 0.1
},
"line": {"name": "Line","tags": {},"geometry": ["line"],"matchScore": 0.1
},
"point": {"name": "Point","tags": {},"geometry": ["point", "vertex"],"matchScore": 0.1
},
"relation": {"name": "Relation","tags": {},"geometry": ["relation"],"matchScore": 0.1
}

必须包含一个name属性:

"name": {"key": "name","type": "localized","label": "Name","placeholder": "Common name (if any)"
}

iD学习 - 要素及属性相关推荐

  1. 如何绘制逻辑图 — 6.要素的属性:内聚与解耦

    在上一篇文中介绍了描述要素归集名称的属性(系统与模块),这一篇要说明描述要素归属的原则属性. 松耦合和高内聚,是决定最终完成系统是否具有应变性.复用性的重要设计原则,作为在分析和设计一线的需求工程师也 ...

  2. 如何绘制逻辑图 — 3.要素的属性:粒度与分层

    在上一篇文中已经介绍过了,要想绘制出正确的逻辑图,就要掌握绘制逻辑图的三元素,三元素中的第一位是"要素".从本篇开始用4个篇幅介绍表达要素的属性. 不论从事软件工程上的那个岗位,& ...

  3. 如何绘制逻辑图 — 2.要素的属性

    按照逻辑图的三元素原理(要素.逻辑.模型),已经知道要素是构成逻辑图的主体,那么构成逻辑图的要素有哪些特点.规律及标准,如何表达它们的这些特点.规律和标准呢?理解这些内容是正确绘制逻辑图的基础.我在培 ...

  4. 【029】获取选择要素的属性

    ---------------------------------------------------------------------------------------------------- ...

  5. 原生js获取以固定字符开头的控件id,并设置属性

    原生js获取以固定字符开头的控件id,并设置属性 还在用JQ加CSS选择器获取指定id开头的DOM嘛? 现在试试 JavaScript提供的querySelectorAll函数 目前几乎主流浏览器均支 ...

  6. Owl 学习笔记之四---属性

    Owl 学习笔记之四---属性 内容 概述

  7. Vue学习之ref属性

    简介 主要讲解vue中的ref属性. 直接先说结论: 专门被用来给html元素和子组件注册引用信息的(id属性的替代者). 该属性应用在html元素时,获取的是dom元素对象,如果应用在组件标签上,那 ...

  8. Html学习:基础属性和控件

    Html学习:第一课 html基础属性和控件 HTML代表超文本标记语言 HTML 是用于创建网页的标准标记语言 HTML 描述网页的结构 HTML由一系列元素组成 HTML 元素告诉浏览器如何显示内 ...

  9. CSS3学习之 animation 属性

    发现animation这个新属性很有趣,在此学习,并整理下!  浏览器支持: Internet Explorer 10.Firefox 以及 Opera 支持 animation 属性: Safari ...

最新文章

  1. RandomRooms:用于3D目标检测的无监督预训练方法(ICCV2021)
  2. Serial Old收集器
  3. 现代化历险记:策略+将COBOL转换为Java的示例
  4. Qt工作笔记-图形视图框架中的分组,以及添加平行拖动图元
  5. ASP.Net数据库如何存取图片
  6. java jquery ajax_[Java教程]jquery ajax 使用
  7. [笔记].Nios II 软核性能基准
  8. MySQL经典50题目,必须拿下!
  9. 高频量化交易之王--李庆在华尔街
  10. vdbench(一)
  11. 威纶触摸屏如何设置数值输入元件的上下限和用户密码登录?
  12. 2019最新第三方支付牌照公司名单「完整」
  13. 【汇编语言】第三章 寄存器(内存访问)
  14. 盲盒小程序的开发功能介绍,优势有哪些
  15. linux中时间转换date
  16. slice、splic、splite相互间的区别
  17. 《Python绝技:运用Python成为顶级黑客》python3实践记录
  18. 数据外泄保护与国土安全部
  19. windows下载安装配置Geany
  20. 开启mongodb数据库命令行_MongoDB服务启动命令及DB创建

热门文章

  1. e3.exe的逆向分析
  2. bm25算法Java代码_BM25算法在Lucene中的应用
  3. MBG(mybatis逆向工程)+通用mapper+lombok
  4. 手机计算机那个简单好用,手机计算器隐藏的2个功能,只需要简单划一划,越早知道越好...
  5. BLE基础知识(一)
  6. 工作流引擎设计之子流程功能实现
  7. 制作ppt中几个比较实用好玩的技巧
  8. 计算机音乐奔跑,十首适合跑步的音乐 跑出节奏感
  9. 高斯-赛德尔(Gauss-Seidel)迭代法求解线性方程组matlab程序设计
  10. 7.31 计算器基本完工