如何用Python画出地图
数码 2
本文将从数据获取、数据处理、绘制地图三个方面进行阐述,让大家能够掌握用Python绘制地图的方法。
绘制地图首先需要有地图数据,而要获取地图数据,最方便的方式是使用第三方库,这里我们选择使用GeoPandas。
首先,我们需要安装GeoPandas库:
!pip install geopandas
接下来,我们从GeoPandas库中获取“中国地级市界限数据”,具体代码如下:
import geopandas as gpd
# 读取中国地级市的边界数据
china = gpd.read_file('https://geo.datav.aliyun.com/areas_v2/bound/geojson?code=100000')
cities = gpd.read_file('https://geo.datav.aliyun.com/areas_v2/bound/geojson?code=010000')
# 查看数据前5行
print(china.head())
这样我们就成功获取了中国地级市的边界数据。
获取到地图数据之后,我们需要对数据进行一些必要的处理,以便于绘制地图。
GeoPandas默认使用的地图坐标系是WGS84,而绘制地图需要使用的是墨卡托投影坐标系,因此需要对数据进行坐标系的转换。
# 将坐标系转换为墨卡托投影坐标系
china = china.to_crs(epsg=3857)
cities = cities.to_crs(epsg=3857)
在进行数据筛选时,我们可以按照自己的需求选取想要绘制的区域。
# 筛选出四个直辖市的数据
bj = cities[cities['name']=='北京市']
sh = cities[cities['name']=='上海市']
tj = cities[cities['name']=='天津市']
cq = cities[cities['name']=='重庆市']
cities = bj.append(sh).append(tj).append(cq)
绘制地图时,我们可以使用第三方库Basemap或者Plotly等,这里我们选择使用Folium库。
首先,我们需要安装Folium库:
!pip install folium
接下来,我们可以通过Folium库的地图对象Map()来绘制地图:
import folium
# 创建地图对象
map = folium.Map(location=[30.5, 114.3], zoom_start=4, tiles='cartodbpositron')
# 添加图层
folium.Choropleth(
geo_data=china, # 地图数据
name='China', # 图层名称
data=None,
columns=None,
key_on='id',
fill_color='YlOrRd', # 颜色
fill_opacity=0.6,
line_opacity=0.2,
reset=True,
legend_name='China' # 图例标题
).add_to(map)
folium.Choropleth(
geo_data=cities, # 地图数据
name='Cities', # 图层名称
data=None,
columns=None,
key_on='id',
fill_color='PuRd', # 颜色
fill_opacity=0.6,
line_opacity=0.2,
reset=True,
legend_name='Cities' # 图例标题
).add_to(map)
# 显示地图
map
本文通过GeoPandas库获取地图数据,对数据进行转换和筛选,并使用Folium库绘制了地图,希望能够帮助大家掌握绘制地图的方法。