2

使用 pyproj 可视化开放的街道地图并得到以下错误:

> AppData\Local\Programs\Python\Python36-32\lib\site-packages\pyproj\crs.py:77:
> FutureWarning: '+init=<authority>:<code>' syntax is deprecated.
> '<authority>:<code>' is the preferred initialization method.   return
> _prepare_from_string(" ".join(pjargs))

程序运行但吐出一张空白的地图。

我在谷歌上找不到太多东西。这是什么以及如何解决它?

请参阅下面的代码片段:

##Create map
crs = {'init': 'epsg:4326'}
new_df = gpd.GeoDataFrame(new_df, crs=crs)

#Contextly
new_df = new_df.to_crs(epsg=3857) 

##Plot
variable = 'All' #set a variable that will call column
fig, ax = plt.subplots(1, figsize=(50, 50)) #create figure and axes for Matplotlib
ox = new_df.plot(column=variable, cmap='viridis', linewidth=0.3, ax=ax, edgecolor='0.8',alpha=0.5,scheme='equal_interval',k=10,legend=True,legend_kwds={'loc': 'lower left'})

##ADD BASEMAP
ctx.add_basemap(ox,zoom=15)

#Remove the axis
ox.set_axis_off()

##Save Map
plt.savefig('Latest_Map.png')
##Show Map
plt.show()

在此处输入图像描述

4

1 回答 1

2

关于语法问题,当您重新投影时,警告来自 pyproj。Geopandas 已更改其文档以反映这一点(请参阅https://github.com/geopandas/geopandas/pull/1101/files#diff-dc9328ce726fd6e58f466f7001f7a50ehttps://github.com/geopandas/geopandas/blob/31b264fabb88367a63823da107c764ccec4d3e source/projections.rst)和建议:

  • 手动设置

my_geoseries.crs = "EPSG:4326"

  • 重投影

world = world.to_crs("EPSG:3395") # world.to_crs(epsg=3395) 也可以

注意:world.to_crs(epsg=3395)确实会起作用,但它仍然会发出警告(因为 that 的from_espg函数在fiona.crs内部被调用并且仍然使用{'init':...)。如果您不想要任何警告:

new_df = gpd.GeoDataFrame(new_df)
new_df.crs = "EPSG:4326"    # set it by hand

new_df = new_df.to_crs("EPSG:3857")

但是,这不应该,也可能不是您的地图为空白的原因。不知道你的实际new_df情况很难说,但是用 geopandas datasets( naturalearth_lowres) 中的 df 尝试你的代码似乎工作正常.. 缩放有一些问题,我建议你在ctx.add_basemap 没有zoom=15参数的情况下调用是zoom="auto"),看看。

于 2020-01-12T12:50:19.867 回答