参与 GitHub 开源项目

GitHub 是一个基于 git 的代码托管平台,越来越多的个人和公司纷纷加入到 Github 的大家族里来,为开源事业尽一份自己的力量。对于个人来讲,把自己的项目托管到 Github 上并不表示你参与了 Github 开源项目,只能说你开源了自己的项目,可以任别人自由下载。那么该如何参与 Github 的开源项目呢?最近自己参与了一个地图插件项目,在此把开源的概念和参与的过程给大家分享一下。

关于项目成员

一般来说,每个项目通常由一个社区来维护,社区又由不同角色的用户组成。

  • Owner:所有者,即创建该项目且在他们 Github 账户上有该项目的用户或组织。
  • Maintainers and Collaborators:维护者和协作者, 致力于一个项目并促进该项目发展的用户。通常所有者和维护者是同一个用户或组织,他们对项目库都有写入的权限。
  • Contributors:贡献者,每一个对该项目发出过 pull request 并合并到项目中的用户都是贡献者。
  • Community Members:社区成员,即那些经常使用且非常关心该项目的用户,他们在讨论功能特征和 pull request 上非常活跃。

继续阅读

JVectorMap 区域名称和聚焦

固定区域名称也是新增的功能,在每个区域的中心位置会展示区域的名字,显示固定名称时,悬浮名字会自动关闭。这需要地图数据的支持(<1.3.1版本数据不支持),目前在dist/assets/data/china目录中的区域数据文件都支持此功能。另外使用转化器转化时(jmap-plus-converter)需要确保shapefile中有名字的经纬度。

聚焦是原本支持的功能,配置中指定需要聚焦的区域名称即可,视图初始化时会自动聚焦指定的区域,然后你可以点击缩放看完整地图。 继续阅读

JVectorMap 路线图

路线图是新增的功能,可以把铁路、高速、国道、省道甚至乡村道路等绘制出来。生成路线数据需要有对应的shapefile,要有路线名字属性。另外如果数据文件较大,可以使用 ArcGis 加以泛化处理或者使用 jmap-plus-converter 配置中的 lineInterval 选项,关于转化器的配置请参考README.md

同标记图一样,制作路线图的步骤为:

  • 增加路线数据或者引入数据文件;
  • 在配置中给 lines 赋值;

继续阅读

JVectorMap 分级统计图

Choropleth map 即分级统计图。在整个制图区域的若干个小的区划单元内(行政区划或者其他区划单位),根据各分区资料的数量(相对)指标进行分级,并用相应色级或不同疏密的晕线,反映各区现象的集中程度或发展水平的分布差别。
分级统计图法可反映布满整个区域的现象(如地貌切割密度)、呈点状分布的现象(如居民点的密度)或线状分布的现象(如河流密度或道路网密度),但较多的是反映呈面状但属分散分布的现象,如反映人口密度、某农作物播种面积的比、人均收入等。此法因常用色级表示,故亦称色级统计图法。

在创建了世界地图后,我们可以使用其他参数改变地图的外观,具体参数描述请参看 JVectorMap API 。

接下来我们将创建一个 choropleth map ,这个例子中我们将会对2010年各个国家的 GDP 信息进行展示。首先我们需要一些数据,可以从 IMF 网站上去下载得到格式为 XLS 的数据文件,然后将之转化为下面的格式,将文件存储为名字为 gdp-data.js 的文件。 继续阅读

JVectorMap API 之 数据格式

如果你对 JVectorMap 不太了解,请先阅读《开源JS地图插件JVectorMap介绍》。

使用 Converter 生成的 JVectorMap 数据文件大小跟数据源大小和精度相关,数据主要存储于文件中的 path 字段,它代表了地图中所有区域的路径信息。数据文件格式如下:

jQuery.fn.vectorMap('addMap', 'afg_mill_en',
    {
        "insets": [
            {
                "width": 900.0,
                "top": 0,
                "height": 642.33050485257525,
                "bbox": [
                    {"y": -4509613.1491, "x": 6738787.2362},
                    {"y": -3365824.1687, "x": 8341404.6963}
                ],
                "left": 0
            }
        ],
        "paths": {
            "24": {
                "path": "M485.72,476.51l-0.74 ... Z",
                "name": "Paktika"
            },
        },
        "height": 642.33050485257525,
        "projection": {"type": "mill", "centralMeridian": 0.0},
        "width": 900.0
    }
);

下面详细说明这些字段的意义 继续阅读

JVectorMap API 之 Converter

如果你对JVectorMap不太了解,请先阅读《开源JS地图插件JVectorMap介绍》。

Converter 是 JVectorMap 提供给我们把 shapefile 数据文件转化为地图数据的转化器。它是基于 Python 编写的,官方建议版本 >=2.7(貌似 3.x2.x 语法有不少区别,不要使用 3.x 以及以后版本)。另外还需要依赖库 Anyjson , GDAL 和 Shapely

Converter依赖库安装

Linux 下手动安装

# install anyjson
$ wget https://pypi.python.org/packages/source/a/anyjson/anyjson-0.3.3.tar.gz
$ tar zxvf anyjson-0.3.3.tar.gz &amp;&amp; cd anyjson-0.3.3
$ python setup.py build &amp;&amp; python setup.py install
# install Shapely
$ wet "https://pypi.python.org/packages/source/S/Shapely/Shapely-1.4.0.tar.gz#md5=8194c567cfdcfe0b458e041366924270"
$ tar zxvf Shapely-1.4.0.tar.gz &amp;&amp; cd Shapely-1.4.0
$ python setup.py build &amp;&amp; python setup.py install
# install GDAL
$ wget https://pypi.python.org/packages/source/G/GDAL/GDAL-1.11.0.tar.gz
$ tar zxvf GDAL-1.11.0.tar.gz &amp;&amp; cd GDAL-1.11.0
$ python setup.py build &amp;&amp; python setup.py install

继续阅读

JVectorMap API之Proj

如果你对JVectorMap不太了解,请先阅读《开源JS地图插件JVectorMap介绍》。

Proj是投影类,可以进行球面上的点和笛卡尔坐标系的双向转换。目前支持 merc(墨卡托投影),lcc(兰勃特正交投影),aea(阿尔伯斯圆锥等面积投影),mill(米勒圆柱投影)四种投影方式。

Proj支持的方法

Proj提供的方法均为静态<static>方法,下面是支持的方法列表。 继续阅读