从哪儿可以下载地图数据
1. jVectorData ready-to-go maps
2. Natural Earth map data
converter.py需要哪些包
对于普通的Linux操作系统
1. dev-lang/python <= 2.x
2. sci-libs/gdal USE="python geos"
3. sci-libs/geos USE="python"
4. dev-python/anyjson
5. 手动安装: Shapely
$ tar xf Shapely-*.tar.gz && cd Shapely-*
$ python2 setup.py build
# python2 setup.py install
对于Debian/Ubuntu
# apt-get install python-anyjson python-gdal python-shapely
converter.py的用法
1. README.md, which includes a conversion example
2. Program synopsis is converter.py [option]... <input_file> <output_file> , also run converter.py --help for details
3. The default values of all command line options can be looked up in the converter.py source code, e.g. parser.add_argument('--name', type=str, default='world')
converter.py 参数详解
input_file 输入文件, 一般情况下是 *.shp格式的文件
output_file 输出文件,结果是jVectorMap可用的SVG或者JSON文件,格式为.js
--scale (float) SVG的宽度大小。注意:此选项貌似没有被脚本用到,可以参考--width选项
--country_code_index (int, 0) 国家(地区)代码索引,作为jVectorMap中区域的唯一代码标识,索引从0开始;您可以使用诸如ogrinfo的工具来确定索引。注意索引务必唯一,否则地图将会有丢失的区域。
--country_name_index (int, 1) 国家(地区)名称索引,作为jVectorMap中区域的唯一标签标识,索引从0开始;您可以使用诸如ogrinfo的工具来确定索引。注意索引务必唯一,否则地图将会有丢失的区域。
--codes_file (str, "") 国家(区域)代码名称映射表,行内分隔符使用TAB,格式为:<code><TAB><name>,例如:DE Germany;务必确保代码和名称匹配。
--where (str, "") 可选的标准,用来限定也用来排除,比如:"ISO = 'DEU'" 表示只选择德国数据;"ne_10m_adm != 'ATA'"表示不包括南极洲。
--width (float) 指定影响所产生的SVG规模的宽度。
--insets (str) 允许额外的指定JSON数据插入;插入的JSON数据需要是数组格式。
--minimal_area (float) 不清楚含义
--buffer_distance (float, -0.4) 国家边界距离
--simplify_tolerance (float) 到什么程度的矢量路径可以被简化。较大的值会导致更少的信息/细节,但文件会更小。如果未指定或为零此选项,简化不会生效。
--viewport (str) 使用指定的区域裁剪矩形,格式为:--viewport "<lng1> <lat1> <lng2> <lat2>",例如:--viewport "9.6 48.1 11.3 51.4".
--longitude0 (str, "0") 坐标系水平中心(中央子午线)的经度
--projection (str, "mill")
使用投影的方式,分别为:
merc (Mercator)
mill (Miller Cylindrical)
aea (Albers Equal Area)
lcc (Lambert Conformal Conic)
--name (str, "world") 地图的名称
--language (str, "en") 两个字母的语言代码,比如:cn,de
--input_file_encoding (str, "iso-8859-1") 输入文件的编码,如:“utf-8”
--precision (int, 2) 精度
生成地图数据
$ python2 converter.py --width 900 --longitude0 11.5 --name world --projection mill --language en public_map_data.shp map_world_mill_en.js
生成德国数据
$ python2 converter.py \
--width 1000 \
--country_name_index 4 \
--country_code_index 30 \
--longitude0 10.71 \
--where "ISO = 'DEU'" \
--projection aea \
--name datag_germany \
--language en \
10m-admin-1-states-provinces-shp/ne_10m_admin_1_states_provinces_shp.shp \
../tests/assets/jquery-jvectormap-data-germany-aea-en.js
自然地球数据的第二版,不再用iso属性,替而代之的是iso_a2
--where "iso_a2 = 'DE'"
手动获取地图数据
1. Shapefile 格式
2. 工具 ogrinfo (which makes use of GDAL)
3. Support-test and list layers
$ ogrinfo ne_10m_admin_1_states_provinces_shp.shp
INFO: Open of `ne_10m_admin_1_states_provinces_shp.shp'
using driver `ESRI Shapefile' successful.
1: ne_10m_admin_1_states_provinces_shp (Polygon)
4. Get all data of layer by layer name
$ ogrinfo -ro ne_10m_admin_1_states_provinces_shp.shp ne_10m_admin_1_states_provinces_shp
5. Limiting results with provided WHERE-Clause using argument -where <condition>. In this example, only list rows where field ISO is DEU (Germany).
$ ogrinfo -ro -where "ISO = 'DEU'" ne_10m_admin_1_states_provinces_shp.shp ne_10m_admin_1_states_provinces_shp
或者在你转化之前,先使用SAGA-GIS制作你的shapefile,它非常容易上手,界面友好,在Ubuntu上你可以从软件中心下载
1. load your natural earth 10m file
2. workspace/modules/shape tools/select by attribute to select all the region you need
3. workspace/modules/shape tools/copy selection to new shape layer
4. workspace/Data/right click on your new layer -> add to map; remove natural earth layer (will free some memory)
5. workspace/Data/right click on your new layer/attributes/show remove unnecessary fields(most of them, just keep the first one -the code- and the name), update attributes as per your app requirements
6. workspace/Data/save as shp
7. use the converter on that shape file, you'll just need to set tolerance, width, language & name
$ python2 /path/to/converter.py \
--width 500 \
--simplify_tolerance 0.044 \
--buffer_distance -0.3 \
--projection mill \
--name ex \
--language en \
/path/to/yourcustommadeshapefile.shp \
/path/to/jquery-jvectormap-ex-mill-en.js
NB: tolerance is relative to the size of shape file (if shape file is the world you'r looking at value around 1000 min, if it is just a country made using this method it is around 0.02 -
depending on its size & the level of details you're after
转自:https://github.com/datag/jvectormap/wiki/Map-converter-notes