из zonal_stats я получаю эту ошибку: ValueError: ширина и высота должны быть> 0 - PullRequest
1 голос
/ 25 мая 2020

Я использую функцию zonal_stats из библиотеки Rasterstats. Я уже использовал эту функцию для имеющихся у меня данных об осадках, которая работает безупречно. Но когда я пытаюсь запустить функцию, используя тот же вектор, но с другим набором растровых данных (для Фактического испарения), я получаю сообщение об ошибке:

    Traceback (most recent call last):
  File "<input>", line 3, in <module>
  File "/Users/ida/opt/anaconda3/envs/thesis_env/lib/python3.7/site-packages/rasterstats/main.py", line 31, in zonal_stats
    return list(gen_zonal_stats(*args, **kwargs))
  File "/Users/ida/opt/anaconda3/envs/thesis_env/lib/python3.7/site-packages/rasterstats/main.py", line 159, in gen_zonal_stats
    rv_array = rasterize_geom(geom, like=fsrc, all_touched=all_touched)
  File "/Users/ida/opt/anaconda3/envs/thesis_env/lib/python3.7/site-packages/rasterstats/utils.py", line 47, in rasterize_geom
    all_touched=all_touched)
  File "/Users/ida/opt/anaconda3/envs/thesis_env/lib/python3.7/site-packages/rasterio/env.py", line 386, in wrapper
    return f(*args, **kwds)
  File "/Users/ida/opt/anaconda3/envs/thesis_env/lib/python3.7/site-packages/rasterio/features.py", line 347, in rasterize
    raise ValueError("width and height must be > 0")

Код, который я пытаюсь запустить, следующий:

vec = '/path/to/file/watersheds_template.shp'
AET = '/path/to/file/AET_2003.tif'
avg_AET = zonal_stats(vec, AET, layer='watersheds_template', stats='mean', geojson_out=True)

Я открыл растровый файл AET в Qgis, где нет проблем, проекция выглядит нормально, как и диапазон данных, и она также перекрывается с векторным шейп-файлом. Я могу выполнять расчеты в Qgis, используя «Зональную статистику», но мне нужно проделать те же расчеты для группы растровых данных, поэтому обработка всех данных с помощью Qgis занимает слишком много времени.

Я могу открыть данные AET с помощью GDAL, и это выглядит так, без каких-либо проблем:

AET_raster = gdal.Open(filepath)

Я думал, что это что-то с размерами файла, но это тоже выглядит нормально. Строка растра выглядит так:

<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x119250810> >

И размеры:

RasterCount = {int} 1, RasterXSize = {int} 1115, RasterYSize = {int} 834 

Это те же размеры, что и в растровом файле, который у меня есть для осадков.

Кто-нибудь знает, что тут может быть не так?

...