Python 开放式街道地图(pyproj)。如何解决语法问题?
使用pyproj可视化开放的街道地图并获得以下错误:Python 开放式街道地图(pyproj)。如何解决语法问题?,python,geopandas,pyproj,contextily,Python,Geopandas,Pyproj,Contextily,使用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 init
> 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()
关于语法问题,当您重新投影时,pyproj会发出警告。Geopandas已更改其文件,以反映(见和)和建议:
- 手工设置
- 重新投射
world.to_crs(epsg=3395)
确实可以工作,但它仍然会发出警告(因为函数来自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")
然而,这不应该,也可能不是地图空白的原因。不知道实际的新测向
,很难判断,但使用geopandas数据集的测向尝试代码(naturalearth\u lowres
)它似乎工作得很好。在缩放出现一些问题后,我建议您调用ctx.add\u basemap
而不使用zoom=15
参数(默认值为zoom=“auto”
)请参阅。这只是一个警告,您可以放心地忽略它。可能包括一些代码,例如,您正在查看的纬度/纬度。这是什么以及如何修复它?这很难用这些少量的信息来回答。警告来自GeoPandas的内部。这将在下一版本的GeoPandas中解决,但是r现在您对此无能为力,因此在这种情况下可以安全地忽略它。这不是您的完整代码,不是吗?您为new_df
指定了哪些值?您可以添加完整的代码吗?将语法更改为new_df.crs=“EPSG:4326”在我的代码中,,但仍然得到未来警告。<代码> FasyESPG/<代码>函数<代码>菲奥娜。CRS < /代码>确实将CRS字符串更改为<代码> {“iIT”:…}/<代码>格式。看来,在新版本的菲奥娜(2 DeV)中不会有任何更改。关于from_espg
行为。有没有办法使此警告静音,或者我们应该等待Geopandas更新?此警告在您重新投影时出现,而不仅仅是设置crs,因此请稍后检查您如何将应用于\u crs
方法。如果您这样应用,将调用Fiona的from_epsg
w_df.to_crs(epsg=xxxx)
(因为您提供了epsg参数)。因此,您需要像您一样设置.crs
,并像上面的答案一样将应用于\u crs
。如果我这样做,我不会收到任何警告(pyproj v2.4.2,geopandas v0.6.2).关于更新和未来版本,我没有参与,所以我不知道会发生什么。感谢澄清。在我的案例中,new\u df.to\u crs(epsg=xxxx)
由folium.GeoJson()
内部调用,只通过了epsg,没有crs。