如何在不更改颜色的情况下绘制Geotiff图像

时间:2019-01-30 15:50:26

标签: python tiff geopandas rasterio

我有一个用qgis生成的栅格.tif文件,代表建筑物的室内地图。我想将其与geojson文件中的一些数据一起绘制。

这是我的方法:

CRS=3857
zones = gpd.read_file('zones_newton.json')
postes = gpd.read_file('postes_newton.json')
raster = rasterio.open("plan_modified{}.tif".format(CRS))

fig, ax = plt.subplots(figsize=(15, 15))
rasterio.plot.show(raster, ax=ax, alpha=0.2)
ax_zones = zones.to_crs(epsg=CRS).plot(ax=ax, alpha=0.4)
ax_postes = postes.to_crs(epsg=CRS).plot(ax=ax, color='red')
postes.to_crs(epsg=CRS).apply(lambda row: ax.annotate(s=row.name, xy=(row.geometry.x, row.geometry.y)), axis=1)

plt.axis('off')

问题是,建筑物的地图是黄色的。我认为这是因为第四个通道(alpha)。确实,当我这样做时:

rasterio.plot.show(raster.read([1, 2, 3]), ax=ax)

它以良好的颜色绘制图像。但是它丢失了地理信息。没问题,我可以将其重新添加:

CRS=3857

fig, ax = plt.subplots(figsize=(15, 15))

raster = rasterio.open("plan_modified{}.tif".format(CRS))
raster_arr = raster.read([1,2,3])
raster_meta = raster.profile

dst_meta = raster_meta
dst_meta['count'] = 3

with rasterio.open("plan_modified{}_3.tif".format(CRS), mode='w', **dst_meta) as raster3:
    raster3.write(raster_arr)

raster3 = rasterio.open("plan_modified{}_3.tif".format(CRS))
print(raster3.profile)
rasterio.plot.show(raster3, ax=ax)

现在不仅地图是黄色的,而且背景是紫色的。

如何获得正常的颜色和地理信息?

0 个答案:

没有答案