2 Star 27 Fork 10

Decode/Map of China

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Map of China

一、介绍

中国地图可视化

  • 本程序不直接提供任何地图数据,所有数据均来自于民政部官网。
  • 本程序只希望提供便捷的中国地图可视化API。
  • 希望就技术本身进行友好的交流。

二、优点

  • 地图数据来自于民政部官网,具有权威性;
  • 可精确到县级行政区划的数据;
  • 可自主配置地图中的构成要素,如颜色、线宽、注释文字等;
  • 提供较为简单便捷的绘图API

三、模块

程序主要包含两个模块:

① 地图数据获取。Get_Map,基于Python爬虫,主要用到Selenium+RegExp
② 地图数据呈现:Draw_Map,基于Matplotlib

  • 绘制省/地级/县级行政区划的轮廓;
  • 将不同区域按值的大小填充不同颜色;
  • 气泡图

四、应用举例

(1)导入模块

import Map_of_China as Map

M=Map.Get_Map()  #创建获取地图数据对象
D=Map.Draw_Map() #创建绘制地图对象

(2)获取地图数据(需安装Selenium模块)

M=Map.Get_Map() 
M.Get_country()  #获取首页全国各省的地图数据
M.Get_provinces([32,43]) #获取一组省份内各地级行政区划的数据
M.Get_provinces_auto()  #自动获取全国尚未获取的省份数据
M.Get_cities([3201,3203]) #获取一组地级市内各县级行政区划的数据
M.Get_cities_auto(32)  #自动获取某个省尚未获取的县级行政区划数据
M.Get_country_county()  #获取全国所有县级行政区划的数据(合并在一张地图中)

(3)呈现数据

  1. 绘制单个行政区划的轮廓(可填充颜色)
D=Draw_Map()
D.Draw_single_shape('Data/Country/320000.txt',LC=None)  #江苏地图
D.Draw_single_shape('Data/Province/32-江苏/320100.txt',LC='k',FC=None,title='南京轮廓')  

江苏地图 南京地图轮廓

  1. 全国地图
D=Draw_Map()
D.Draw_country(FC=True,arg={'provName':True}) #默认绘制缩略的南海地图
D.Draw_country(FC=True,arg={'provName':False,'city_name':True,'city_pos':True,'sea':True}) #绘制展开的南海地图

全国地图 全国地图

  1. 省份地图
D=Draw_Map()
D.Draw_province('广东',FC=True,LC='w',arg={'other':True,'city_pos':True,'city_name':True})
D.Draw_province('44',LC='w',FC=True,arg={'other':False})

广东地图 广东地图

  1. 地级行政单位地图
D=Draw_Map()
D.Draw_city('3201') #南京地图(默认样式)
D.Draw_city('深圳',FC=True,LC='w',arg={'other':True,'city_pos':True,'city_name':True})

南京地图 深圳地图

  1. 地图数据可视化:将区域颜色与数值大小对应
D=Draw_Map()
src='Example/GDP-2018.csv'
D.Show_data(src,FC='OrRd',title='2018年各省GDP',arg={'sea':True})  #按数据的绝对大小显示
D.Show_data(src,by_val=False,arg={'default_color':[0.6,0.6,0.6]})  #按数据的相对大小(排名)显示

2018年各省GDP 2018年各省GDP

D.Show_data('Example/江苏人口2018.txt','32',by_val=True,title='江苏人口2018') #省级数据
D.Show_data('Example/江苏人口2018.txt','32',by_val=True,LC='w',\
	title='江苏人口2018',arg={'city_name':True,'city_pos':True,'other':True}) #可配置地图中的样式

江苏人口2018 江苏人口2018

D.Show_data('Example/Suzhou_population.txt','3205',by_val=False,\
	title='苏州人口2018',arg={'city_name':True,'city_pos':True,'other':True}) #地级数据

苏州人口2018

  1. 气泡图:将数值大小与圆的半径或颜色对应
D=Draw_Map()
D.Bubble(src='Example/GDP-2018.csv',img_path='Example/GDP_bubble.png') #更多选项查看:help(D.Bubble)

2018年各省GDP

  1. 其他
  • 查询所有含有某名称的区域编码
search_region_code('朝阳')

输出:

辽宁省朝阳市: 211300
北京市朝阳区: 110105
辽宁省朝阳市朝阳县: 211321
吉林省长春市朝阳区: 220104
  • 查询某个或一组经纬度对应的点在本地图中的坐标
D=Draw_Map()
val=D.trans_coord([114.313876,30.599835]) 
print(val)

输出

[583.6755468727599, 393.2750787295468]

五、尚未完成的部分

  1. 颜色的图例(color map)未完成
  2. 部分地图文字注释的位置太近,无法正常显示(如上海的几个市区)
  3. 在全国范围内绘制县级行政区划地图耗时太长(主要是县级行政区划数量很多)
  4. 无法获取全国范围内地级行政区划的地图数据
  5. 尚未获取省级范围内的县级行政区划地图数据
  6. 目前只能绘制静态地图,希望加入时间维度,绘制动态可视化地图
MIT License Copyright (c) 2020 吉轩帆 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

便捷的中国地图数据可视化API(全国/省级/地级/县级) 展开 收起
Python
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/jixuanfan/Map-of-China.git
git@gitee.com:jixuanfan/Map-of-China.git
jixuanfan
Map-of-China
Map of China
master

搜索帮助