在数据可视化中,需要做地图信息可视化时,必须用到geoJSON。目前支持地图数据可视化的JS库比较丰富,现以Highcharts与Echarts两个图表库为例,对比下geoJSON的区别!
geoJSON是什么?geojson是用json的语法表达和存储地理数据,可以说是json的子集,其格式如下:
{
"type": "FeatureCollection",
"features": [
{"type":"Feature",
"properties":{},
"geometry":{
"type":"Point",
"coordinates":[105.380859375,31.57853542647338]
}
}
]
}
Highcharts与Echarts地图geoJSON区别
项目HighchartsEcharts版权使用时需购买相应的Highmaps 软件授权无许可需要获取源数据的许可且必须保证在图表中或页面中保留版权信息无等级Admin0,Admin1,Admin2 标识不同的授权限制等级无
在实际的使用过程中,
- Echarts地图geoJSON代码结构如下格式,没有更多的属性和字段,不能直接应用于Highcharts的Highmaps中;
- Highmaps的geoJSON代码结构更复杂,内容信息更丰富,但是可以直接应用于Echarts中。
- 国内地图格式:
"features": [
{
"type": "Feature",
"properties": {
"adcode": 440100,
"name": "广州",
"center": [
113.280637,
23.125178
],
"childrenNum": 11,
"level": "city",
"subFeatureIndex": 0,
"fullname": "广州市",
"filename": "guangzhou",
"parent": "广东省",
"areacode": 440100,
"longitude": 113.280637,
"latitude": 23.125178,
"cp": [
6177,
2558
],
"drilldown": "guangdong/guangzhou"
},
属性名示例值含义adcode/areacode110000地区编码,同 国家统计局发布的行政规划代码name北京,上海地区名字,为简写形式,去掉了诸如省、市、县等center[116.405285, 39.904989]中心点经纬度levelprovince地区级别,有 province(省、直辖市)、city(市)、district(区、县)fullname北京市全称filenamebeijing当前数据文件文件名parent中国父级名称longitude / latitude116.405285中心点经纬度cp[6763, 6381]中心点坐标值drilldownbeijing,anhui/hefei下一级数据文件路径
- 国外地图格式: Echarts格式基本与国内相同,Highcharts的geoJSON更复杂。
"features": [
{
"type": "Feature",
"id": "AU.NT",
"properties": {
"hc-group": "admin1",
"hc-middle-x": 0.48,
"hc-middle-y": 0.58,
"hc-key": "au-nt",
"hc-a2": "NT",
"labelrank": "2",
"hasc": "AU.NT",
"alt-name": null,
"woe-id": "2344701",
"subregion": null,
"fips": "AS03",
"postal-code": "NT",
"name": "Northern Territory",
"country": "Australia",
"type-en": "Territory",
"region": null,
"longitude": "133.78",
"woe-name": "Northern Territory",
"latitude": "-20.1026",
"woe-label": "Northern Territory, AU, Australia",
"type": "Territory"
},
属性名示例值含义hc-group admin1, admin2, special地图数据的行政级别。admin0 为国家级别;admin1 是国家下面的第一级行政规划,例如中国的省,美国的洲等;admin2 为第二级,例如中国的市,美国的县;special 表示一些特殊的分区,并不是真正意义上的行政规划,例如国会选区hc-middle-x0.65数据标签水平偏移值,表示相对该区块的宽度值,0 表示左对齐,1 为右对齐hc-middle-y0.65数据标签竖直偏移值,表示相对该区块的高度值,0 表示顶部对齐,1 为底部对齐hc-keyus, us-ma-027, gb-hi该地区的唯一标识字符串,该值在所有地图中保持唯一并和数据文件的命名一致hc-a2KV,PA,BB2 个字母表示的地区名字,大部分和国际邮政代码(postal code/ISO code)一致。该属性不能保证在所有地图中是唯一的nameFremont, Brandenburg, Saipan地图区域的名字iso-a2US, MC, LVISO 标准的 2 位国家名字iso-a3USA, MCO, LVA ISO标准的 3 位国家名字continentAsia, North America地图所在的大洲country-abbrevPan., C.R.国家名字的缩写形式regionMidwest, South, Highlands and Islands地图所在的区域subregionSouthern Europe, Highland地区所在的二级区域fips120, GM10, US05, 56031FIPS 编码hascDE.BB, US.ARHASC 编码postal-codeAK, NY, TI邮政编码typeState, Emirate, Fylke, Land地图类型
geojson.io的支持
Highcharts 导入后,不能正常显示区域; Echarts 可正常显示。
如何获取geoJSONEcharts的国、省、市、区县,网络资源丰富,CSDN下载中心也有;乡镇边界基本是需要付费购买的,直接手绘的精确度不够,也费时费力。 Highcharts国内geojson,省市文件可以直接调用,县级数据需要购买。
Done!