首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用栅格可视化地理空间.tiff图像

使用栅格可视化地理空间.tiff图像
EN

Stack Overflow用户
提问于 2020-05-27 03:05:40
回答 1查看 294关注 0票数 0

我正在尝试使用Rasterio在Jupiter Notebook中可视化一个.tiff图像。我是一家AgriTech公司的初级数据科学家,我们刚刚访问了8个数据层(NDVI等)。用于两个.tiff格式的场。

下面是一个镜像的元数据:

代码语言:javascript
复制
{'driver': 'GTiff', 'dtype': 'float32', 'nodata': -125125.0, 'width': 72, 'height': 87, 'count': 1, 'crs': CRS.from_epsg(32734), 'transform': Affine(20.0, 0.0, 364480.0,
       0.0, -20.0, 6292100.0), 'blockxsize': 256, 'blockysize': 256, 'tiled': True, 'compress': 'lzw', 'interleave': 'band'}

当我运行以下命令时:

代码语言:javascript
复制
ax = plt.figure(figsize=(15,10))

pic = rasterio.open('/content20180109_biow_Meerlust.tif','r',driver='GTiff',width=72,
      height=87,count=1, nodata=-125125.0)

show(pic,with_bounds=False)

我得到了一个非常像素化的图像:

我怎么才能在没有像素化的情况下可视化图像呢?我对这些.tiff图像背后的阵列调整的知识是有限的,因为我刚刚开始从事农学领域的工作。欢迎任何建议。

我的目标是使用Streamlit创建一个web应用程序,在那里我可以覆盖这些图像,并创建一个简短的视频,展示图层如何随着时间的推移而变化。

EN

回答 1

Stack Overflow用户

发布于 2020-06-30 00:12:35

这里有几个解决方案,可能有助于清晰地可视化多波段光栅。在这两个示例中,raster是具有多个频带(indexed at 1)的rasterio.DatasetReader

1.单映像

要查看单个2D平面中的所有图层,必须将波段连接起来:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

bands = []
for i in range(raster.count):
    bands.append(raster.read(i+1, out_dtype=np.intc))

plt.title("Full Color Raster")
plt.imshow(np.array(bands))
plt.show()

不幸的是,由于pyplot的imshow()函数的限制,这种方法只适用于几个层(传统上是RGB)。您可以随意使用np.intc以外的数据类型。

2.单独可视化层

earthpy.plot模块具有多个用于可视化栅格图层的干净选项,其中包括方便的plot_bands()

代码语言:javascript
复制
import numpy as np
import earthpy.plot as ep

bands = []

# Read the raster's bands to an array
for i in range(raster.count):
    bands.append(raster.read((i+1), out_dtype=raster.dtypes[i]))

# Convert to an iterable np.ndarray and plot in a 3-column grid
ep.plot_bands(np.array(bands), cols=3) 

这是我的第一个堆栈溢出响应,所以如果我遗漏了什么重要的东西,请让我知道。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62029517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档