2

我在 epsg:27700 中有一个点的地理数据框,并希望用 geoplot.kdeplot() 在同样位于 epsg:27700 的栅格图层上绘制这些点。但我正在努力实现这一目标。

最初,我尝试过 geopandas 使用 Contextily 添加背景。虽然它可以工作,但该区域的范围非常小,并且在将其转换为 epsg=3857 并使用缩放级别 13 使街道地图最不可见之后 - 这些点不会落在应有的位置。

gdf = geopandas.GeoDataFrame(df1, crs=crs, geometry=geom)  #geodataframe from pandas dataframe


gdf.Prob[gdf.Prob < 0.2]= np.nan #set probability values <0.2 to nan for transparency 


gdf.plot(column='Prob',figsize=(10, 10), alpha=0.5, legend=True)


rst = rasterio.open('UUS.tif')
red = rst.read(1)
bounds = (rst.bounds.left, rst.bounds.right, \
      rst.bounds.bottom, rst.bounds.top)

plt.figure(num=None, figsize=(10, 10), facecolor='w', edgecolor='k')
plt.imshow(red, extent=bounds, cmap = 'gray')

我希望这些点在栅格上(最好是 kdeplot)。我之前在 R 中以最小的努力完成了它,但在这里我需要在 Python 中完成它,而且我是 Python 新手。解决方案在这里也可能非常简单,但我需要一些建议。谢谢您阅读此篇。

4

1 回答 1

2

您必须将相同的 matplotlib 传递ax给两个图。所以在你的情况下,应该遵循这个技巧。

import matplotlib.pyplot as plt

gdf = geopandas.GeoDataFrame(df1, crs=crs, geometry=geom)  #geodataframe from pandas dataframe


gdf.Prob[gdf.Prob < 0.2]= np.nan #set probability values <0.2 to nan for transparency 

fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(column='Prob',ax=ax, alpha=0.5, legend=True)


rst = rasterio.open('UUS.tif')
red = rst.read(1)
rst.plot.show(red, ax=ax)

您可能需要在 gdf ​​之前绘制 rst,对此不确定。

于 2019-08-19T08:55:11.987 回答