OpenStreetMap的iD编辑器介绍

1,833 阅读4分钟

一、 iD编辑器介绍

iD编辑器是基于浏览器的事实标准OpenStreetMap编辑器。iD编辑器快速、易用,可以借助来自诸如卫星或航空影像、GPS、Field Papers或Mapillary等多种数据源的数据绘图。

OpenStreetMap中用个人账号登陆,在编辑下拉框中选择使用iD编辑器。

二、 iD编辑器的重要模块

Core Module

这个模块为iD的核心模块,分为以下内容:

  • iD.coreContext:包含了所有全剧对象和引导代码
  • iD.coreGraph:包含当前图层的所有实体以及遍历他们间的关系
  • iD.coreHistory :在编辑时的撤销/重做的历史记录
  • iD.coreDifference:在两个图层(graph)间比较不同
  • iD.coreTree:对加载的对象快速执行空间索引

数据编辑

主要利用iD.coreGrap,graph图层最主要的就是将实体的唯一id和实体联系在一起。这样的好处是,当我们添加、删除实体时,生成一个新的graph,然后它直接引用旧的graph上的未改变的实体就可以了(只需取得未改变实体的id)

历史管理

利用iD.coreHistory:这个history就是一个存储历史版本的栈,只需要渲染这个栈的最顶层(当前版本)就可以了。假设现在有三个版本:his2、his1、current。那么栈就是这样的:current -> his1 -> his2 。想要撤销,只需要回到上一个版本,即弹出current,那么当前的页面渲染的就是his1

OSM Module

在iD中有三种实体类型(iD.osmEntity):点(Node)、线(Way)、区域(Relation)。

1. Node

点元素是空间中的一个点,由id、latitude和longitude定义,至少带有一个标签。且点是单独的,不构成任何一条线的组成,

以下就是一个点元素:

一个点元素的例子:

<node  id = “ 25496583”  lat = “ 51.5173639”  lon = “ -0.140043”  > 
    <标记 k = ”高速公路“  v = ”交通信号“ /> 
</ node>

2. Way

Way为点的有序集合,至少带有一个标签或者被包含在Relation中。一个Way可以是闭合的,也可以是不闭合的。

以下就是一条线(路):

  1. open way

非闭合的道路不共享第一个节点和最后一个节点,例如高速公路。在道路的绘制中使用forward, backward, leftright 来描述道路方向。

  1. close way

闭合的道路共享第一个节点和最后一个节点

  1. area

一个闭合的道路带有area=yes的标签被解释为一个区域

这是一个Clipstone Stree住宅单向高速公路的栗子:

<way  id = “ 5090250” > 
    <tag  k = “ Highway”  v = “ residential” /> 
    <tag  k = “ name”  v = “ Clipstone Street” /> 
    <tag  k = “ oneway”  v = “yes” /> 
</ way>

3. Relation

实现更复杂的区域,比如湖中环岛公路。

以下就是一个区域:

实体会被保存在OSM数据库中

为了在地图上修改数据(增加点,删除线),我们就需要修改实体来达到预期目的,但是我们无法直接操作这些数据库中的实体,只能通过拷贝出一个副本,然后在这个副本上进行编辑操作,然后在新旧graph间通过对比,引用未改变的旧graph上的实体id,以及修改后的新graph上的实体id,形成一个新的history,压入历史栈中。

Actions Module

添加点,鼠标指针变成一个(+)号,点击想要添加的地点标出,左侧出现一个表单,在表单中选择这个点的属性,以及要素的编辑

如果想要删除这个点,iD也提供了删除功能

添加线,鼠标指针将变成加(+)号,在路段开始的地方点击鼠标画一个点,移动鼠标并通过点击添加其他关键点,通过双击结束画线

左侧有选择属性的表单

对线的操作提供以下功能:

  • 分离
  • 移动
  • 反转
  • 旋转
  • 删除

添加区域,鼠标指针会变成一个加(+)号,以影像为参照勾绘一栋建筑

左侧有选择属性的表单

且提供了对区域的操作

Behavior Module

有一些模式共有的方法(例如鼠标悬停在某个实体时,实体周围有红色光晕),但不是所有模块都需要这个方法,所以设置了off来卸载不需要的方法

以下道路被选中,出现高亮:

Operations Module

对区域实行一些图形化处理