在 geopandas 中使用两个 shapefile

Use two shapefiles in geopandas

我必须创建 shapefile。一个是 POLYGON,代表瑞典的行政区。另一个是代表该国湖泊的 POINTS。我有行政区划相关的数据,想加上湖泊,让地图更漂亮

这是我创建没有湖泊的地图的脚本。

variable = 'förändring1'
vmin, vmax = -2, 4

fig, ax = plt.subplots(1, figsize=(10, 16))

matplotlib.rcParams["figure.dpi"] = 250
ax.axis('off')
ax.set_title('TITLE, REGIONS\n Q1 2020 - Q2 2021', fontdict={'fontsize': '24', 'fontweight' : '3', 'fontname':'Open Sans'})

ax.annotate('X', xy=(0.7, .05), xycoords='figure fraction', fontsize=11, color='#555555')

legend = plt.legend(title="title",
                    loc=4, fontsize='small', fancybox=True)

geo_df1.plot(edgecolor='black', column=variable, cmap=my_cmp, linewidth=0.3, ax=ax, categorical=True, legend=True,
            legend_kwds=dict(loc='lower right', 
                             title='Förändring\n%-enheter',
                             prop = {'size' : 15}))

我的地区 shapefile 如下所示:

LA-kod  LA-namn geometry
0   LA1903  Eskilstuna  POLYGON ((568494.857 6523152.063, 565723.456 6...
1   LA1925  Borås   POLYGON ((396919.129 6351819.960, 395817.199 6...
2   LA1948  Sundsvall   MULTIPOLYGON (((623003.025 6929654.815, 628496...
3   LA1960  Lycksele    POLYGON ((704138.531 7189721.517, 695708.319 7...
4   LA1965  Pajala  POLYGON ((888013.662 7448254.868, 868700.048 7...
... ... ... ...
64  LA1902  Nyköping-Oxelösund  MULTIPOLYGON (((617964.321 6507990.893, 620313...
65  LA1944  Gävle   POLYGON ((583931.306 6691340.733, 576700.277 6...
66  LA1949  Kramfors    MULTIPOLYGON (((640892.553 6993927.028, 639395...
67  LA1934  Örebro  POLYGON ((519879.892 6521506.409, 516154.724 6...
68  LA1921  Halmstad    POLYGON ((373979.424 6248279.617, 374683.890 6...
69 rows × 3 columns

我的湖泊形状文件如下所示:

SJOID   geometry
0   631121-147437   POINT (523392.000 6309304.000)
1   707350-149283   POINT (534314.000 7069077.000)
2   633919-152479   POINT (573459.000 6337866.000)
3   763280-176148   POINT (793878.000 7634014.000)
4   656371-143806   POINT (484086.000 6561244.000)
... ... ...
106595  753912-164311   POINT (676771.000 7538815.000)
106596  753912-165416   POINT (687817.000 7538959.000)
106597  753912-174751   POINT (781138.000 7540177.000)
106598  743421-188986   POINT (924825.000 7437141.000)
106599  753913-178160   POINT (815220.000 7540632.000)
106600 rows × 2 columns

你能试试吗

ax1=geo_df1.plot()
geo_df2.plot(ax=ax1)

其中,geo_df1 和 geo_df2 表示来自两个 shapefile 的地理数据框以及必要的参数。