有两周没更新公众号,一来是工作有点忙,二来是被地图的事情搅和的不行了,事情没搞清楚前写文档是对自己最大的不尊重,关于choropleth_mapbox地图实现,有很多坑在里面。主要的因素是对geojson不够了解,以及choropleth_mapbox对参数的解释一直是言之不详。
GeoJSON是一种对各种地理数据结构进行编码的格式,GeoJSON是用json的语法表达和存储地理数据,可以说是json的子集。GeoJSON对象可以表示几何、特征或者特征集合。GeoJSON支持下面几何类型:点、线、面、多点、多线、多面和几何集合。GeoJSON里的特征包含一个几何对象和其他属性,特征集合表示一系列特征。
GeoJSON总是由一个单独的对象组成。这个对象表示几何、特征或者特征集合。
GeoJSON对象可能有任何数目成员。
GeoJSON对象必须有一个名字为"type"的成员。这个成员的值是由GeoJSON对象的类型所确定的字符串。
type成员的值必须是下面之一:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", "GeometryCollection", "Feature", 或者 "FeatureCollection"。
以下是个geojosn的样例
关于全球地图、中国地图、省域地图的geojson文件均可以下载到,但格式略有区别,比如全球地图有id即国家简写,在properties下的name中也有全称。
但中国地图有adcode,name、级别、中心点等等属性。
在实现choropleth_mapbox的过程中,地图一直无法正常显示,原因有二,其一plotly基于d3.js,geojson文件的加载比较耗时,而且要认为点击一下zoom out按钮才能呈现地图,其二参数不对,在下面的代码注释中已有介绍,在此不做详述了。所有的数据均为随机值,不代表任何含义。