如何用Python画出地图

ODQOD 数码 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库绘制了地图,希望能够帮助大家掌握绘制地图的方法。

回复

共1条回复 我来回复
  • 暂无回复内容