首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rasterio无法加载VRT

Rasterio无法加载VRT
EN

Stack Overflow用户
提问于 2018-04-07 17:49:05
回答 1查看 535关注 0票数 2

RasterIO无法加载VRT

我使用rasterio加载由pymodis.convertmodis_gdal.createMosaicGDAL生成的VRT文件。直到最近我为rasterio重新安装了Ubuntu OS和python包,这都没有问题。现在,当加载VRT文件时,我得到以下错误:

例如,我在MOD09A1__2018049__sur_refl_b01.vrt中读到

代码语言:javascript
复制
ERROR 4: HDF4_EOS:EOS_GRID:/dev/sdf/MOD09A1/MOD09A1.A2000049.h20v04.006.2015136143235.hdf:MOD_Grid_500m_Surface_Reflectance:sur_refl_b01: No such file or directory
Process ModisBaseGraph-4:
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/rasterio/mask.py", line 182, in mask
    out_image = raster.read(window=window, out_shape=out_shape, masked=True)
  File "rasterio/_io.pyx", line 330, in rasterio._io.DatasetReaderBase.read
  File "rasterio/_io.pyx", line 591, in rasterio._io.DatasetReaderBase._read
OSError: Read or write failed

文件/dev/sdf/MOD09A1/MOD09A1.A2000049.h20v04.006.2015136143235.hdf是有效路径,因此该文件确实存在!

而GDAL-Python可以加载它

当我使用pyModis将HDF MODIS瓦片马赛克为VRT文件时,我验证了.vrt文件的真实性。为此,我使用python-gdal加载文件并读取栅格数组。使用Python GDAL一切顺利。我假设rasterio也是基于GDAL的,所以我不明白为什么它会抛出上面这样的异常。

代码语言:javascript
复制
In [1]: from osgeo import gdal
In [2]: ds = gdal.Open('MOD09A1__2018049__sur_refl_b01.vrt')
In [3]: band = ds.GetRasterBand(1)
In [4]: array = band.ReadAsArray()

VRT文件示例

代码语言:javascript
复制
<VRTDataset rasterXSize="4800" rasterYSize="2400">
    <SRS>PROJCS["unnamed",GEOGCS["Unknown datum based upon the custom spheroid",DATUM["Not specified (based on custom spheroid)",SPHEROID["Custom spheroid",6371007.181,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Sinusoidal"],PARAMETER["longitude_of_center",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]</SRS>
    <GeoTransform>1111950.519667, 463.3127165279167, 0, 6671703.118, 0, -463.3127165279165</GeoTransform>
    <VRTRasterBand dataType="Int16" band="1">
        <NoDataValue>-28672</NoDataValue>
<ColorInterp>Gray</ColorInterp>
        <ComplexSource>
            <SourceFilename relativeToVRT="0">HDF4_EOS:EOS_GRID:/dev/sdf/MOD09A1/MOD09A1.A2018049.h20v03.006.2018060011348.hdf:MOD_Grid_500m_Surface_Reflectance:sur_refl_b01</SourceFilename>
            <SourceBand>1</SourceBand>
            <SourceProperties RasterXSize="2400" RasterYSize="2400" DataType="Int16" BlockXSize="2400" BlockYSize="32" />
            <SrcRect xOff="0" yOff="0" xSize="2400" ySize="2400" />
            <DstRect xOff="2399" yOff="0" xSize="2400" ySize="2400" />
            <NODATA>-28672</NODATA>
        </ComplexSource>
        <ComplexSource>
            <SourceFilename relativeToVRT="0">HDF4_EOS:EOS_GRID:/dev/sdf/MOD09A1/MOD09A1.A2018049.h19v03.006.2018060011204.hdf:MOD_Grid_500m_Surface_Reflectance:sur_refl_b01</SourceFilename>
            <SourceBand>1</SourceBand>
            <SourceProperties RasterXSize="2400" RasterYSize="2400" DataType="Int16" BlockXSize="2400" BlockYSize="32" />
            <SrcRect xOff="0" yOff="0" xSize="2400" ySize="2400" />
            <DstRect xOff="0" yOff="0" xSize="2400" ySize="2400" />
            <NODATA>-28672</NODATA>
        </ComplexSource>
    </VRTRasterBand>
</VRTDataset>

操作系统和软件包版本

Ubuntu 16.04,Python 3.5.2 RasterIO 1.0a12 pyModis 2.0.9

以前,当rasterio工作正常时,我使用的是Python 2.7。我不确定迁移到Python3.5是否是主要原因。

EN

回答 1

Stack Overflow用户

发布于 2018-04-07 20:25:21

我了解到,当我的GDAL库不在其默认系统路径(/usr/lib/usr/local/lib)中时,从pip安装rasterio时,rasterio无法打开栅格,因为它无法链接到底层GDAL库。然而,由于未知的原因,安装仍然很顺利,尽管没有找到GDAL库,但仍然可以导入rasterio。

我决定从源码开始构建rasterio。因此,除非我将GDAL安装到/usr/local这样的典型位置,否则我必须手动配置gdal-config的路径,并让setup.py脚本知道,

代码语言:javascript
复制
sudo GDAL_CONFIG=/opt/gdal-2.2.4/bin/gdal-config python3 setup.py develop

现在可以通过rasterio加载VRT文件。

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

https://stackoverflow.com/questions/49706031

复制
相关文章

相似问题

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