Map Designer 地图配置文件详解

前两天我们发布了一个全新的跨平台地图设计桌面软件:Map Designer。使用它可以设计精美的地图,并且可视化数据。本文将详细介绍Map Designer中地图配置文件的组成及其含义。掌握了地图配置文件,你就可以随心所欲地配置个性化的地图啦!

打开 Map Designer 软件,使用 GeoHey 账号登陆后,会列出你在 GeoHey 平台的地图DIY应用里新建的地图。如下图所示: alt

单击其中某个地图,便进入了地图设计界面。左侧面板是实时渲染的地图,右侧面板是本文将要介绍的控制地图样式的配置文件。如下图所示: alt

只要右侧的配置文件有改动,左侧的地图便会自动根据配置文件指定的样式进行重绘。

下面就进入正题,和大伙详细讲解地图配置文件的组成。

要了解地图配置文件的组成,首先要明白地图的组成。在地理上,地图由坐标系、比例尺和地图符号组成。在 GeoHey 的 web 地图中,坐标系设置为 web 墨卡托投影,这是一种等角投影,被广泛地用于航海。目前主流的web 地图都是采用这种投影。当然,我们还提供定制的其它投影的地图服务;不知道你注意到没有,地图面板的左下角有一个分辨率数值,这个就是我们的比例尺啦!它表示的是屏幕上的一个像素代表实际距离多少米;最后,地图符号就是地图上点、线、面的集合。为了制图的方便,地图符号都是以图层来组织的,比如世界的行政区划是一个图层、草地是一个图层、所有的学校点是一个图层等等。图层之间是有顺序的,排在前面的图层会被排在后面的图层压盖。

简单来说,地图的配置文件就是用来描述各个图层在不同的分辨率下的绘制样式的。地图的配置文件是 json 格式,主要由地图的全局属性、数据源属性以及图层属性组成。是不是有点头晕了,没关系,让我们先看一个最简单的小例子,马上动手配置一个我们的第一个地图!

{
  "background_color": "#c0c0c0",
  "data_sources": {
    "country": {
      "source": "country",
      "type": "shapefile"
    }
  },
  "layers": {
    "layer0": {
      "data_source": "country",
      "data_name": "world_country_point",
      "encode": "utf-8",
      "rules": [
        {
          "res_max": 156544,
          "res_min": 0,
          "symbol_type": "marker",
          "marker_color": "#ff0000",
          "marker_shape": "circle",
          "marker_size": 5
        },
        {
          "res_max": 156544,
          "res_min": 0,
          "symbol_type": "label",
          "label_field": "country_na",
          "label_text_font": "Kaiti",
          "label_margin_x": 2,
          "label_margin_y": 2
        }
      ]
    }
  }
}

上面这个简单的配置文件表达的地图的背景颜色是灰色。这个地图使用了一个叫做 country 的数据源,它的类型是 shapefile。

这个地图由一个名为 layer0 的图层组成,这个图层使用的数据源是 country,数据的名字是world_country_point。对于 shapefile 数据源,country 其实是地图目录下的一个文件夹,而world_country_point则是该文件夹下的一个 shapefile 文件。

图层 layer0 由两个rule(规则)组成,rule 表示图层应该用哪种 符号进行绘制。在 layer0 中,我们绘制了两种符号:marker 和 label,因此使用了两个 rule。同一个图层可以使用多个 rule 进行绘制。请注意,rule 是有顺序的,后面的 rule 表示的符号会覆盖前面的 rule 表示的符号。结合使用多种rule,可以绘制出各种效果的符号(比如道路等等)。在第一个 rule 中,我们绘制的符号为半径为5的红色圆点,在第二个 rule 中,我们绘制的符号为楷体的标注。label_field 表示用来显示标注的字段名称,label_margin_x 和 label_margin_y 表示标注周围的留白大小(单位为像素)。这样可以避免标注的过度拥挤。

res_max 和 res_min 用来设置 rule 可以显示的最大和最小的分辨率,在这里我们设置rule在任何分辨率下都可以被看见(在 web 墨卡托中,最大的分辨率为156543.033928)。

你是不是迫不及待想要在自己的 Map Designer 里看看这个配置文件配出的地图了呢?由于默认的 Map Designer 只能绘制在线的数据源,接下来我教你如何“黑”一下 Map Designer, 让它可以绘制我们自己的 shapefile 数据。还记不记得之前说过的,对于shapefile数据源,country其实是地图目录下的一个文件夹,而world_country_point则是该文件夹下的一个shapefile文件?只要我们把包含world_country_point.shp 的文件夹 country 放到地图目录下,Map Designer 就会乖乖绘制出来了!下面问题来了,地图目录到底是哪呢?打开 Map Designer 后点击这里,“dir”项的目录就是你的地图目录!下载 country 数据,解压后放到你的地图目录下,再把上面的配置文件复制到 Map Designer 的编辑器里,你的第一个自定义地图就出来啦: alt

想要配置样式更丰富的地图?Map Designer 的帮助里列出了大部分常用的可配置属性。在未来的博客里,我们会继续给出更多的例子。

Atlas

To see what can we bring to the world.