【问题标题】:How to plot spatial points over a raster layer Python?如何在栅格图层 Python 上绘制空间点?
【发布时间】:2019-08-19 16:55:11
【问题描述】:

我在 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 新手。解决方案在这里也可能非常简单,但我需要一些建议。感谢您阅读本文。

【问题讨论】:

    标签: python geopandas rasterio


    【解决方案1】:

    您必须将相同的 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,对此不确定。

    【讨论】:

    • 非常感谢,您的建议很有帮助。它只是通过以下方式完成的:fig, ax = plt.subplots(figsize=(10, 10))/ ax.imshow(red, extent=bounds, cmap = 'gray')/ gdf.plot(column='Prob ',ax=ax, alpha=0.5, legend=True)
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多