У меня есть geotiff и массив данных с такими же формами. Массив данных - это вспомогательные данные геотифа. Координаты x и y - это размер координат geotiff, но у массива данных нет проекции. Я пытаюсь спроецировать массив данных с информацией из geotiff.
Моя идея была:
- Создать новый набор данных xarray из приведенного выше
- Перепроецировать новый набор данных (чтобы иметь возможность построить его позже с третьим набором данных вверху)
Проблемы, которые у меня есть:
Использование xarr.rio.reproject()
очень умно, но я новый набор данных нуждается в crs, которого в нем нет. Я пробовал:
#!/usr/bin/env python3
import numpy as np
import xarray as xr
import pyproj
import cartopy.crs as ccrs
import rioxarray as rio
from rasterio.warp import transform
xarr = xr.open_rasterio('my_geotif.tif')
ds = xr.open_dataset('my_dataarray.h5')
# Projection information
proj_tiff = xarr.crs
wgs84_epsg = 'epsg:4326'
proj_stereo = 'epsg:3995'
print(proj_tiff)
Исходная проекция:
+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs=True
### Making the new data set with coordinates from tiff_file and data from dataarray
ds_new = xr.DataArray(ds.classification, coords={"y": xarr.y, "x": xarr.x}, dims=['y', 'x'])
ds_new.attrs = ds.attrs
# Adding CRS information
ds_new['crs'] = 0
ds_new['crs'].attrs = xarr.rio.crs
## closing used datasets
xarr.close()
ds.close()
## Reprojecting
ds_reproj = ds.rio.reproject(proj_stereo)
Я получаю сообщение об ошибке:
File "/g5/procdata/skr/anaconda3/envs/pygmt/lib/python3.8/site-packages/rioxarray/rioxarray.py", line 1169, in reproject
raise MissingCRS(
rioxarray.exceptions.MissingCRS: CRS not found. Please set the CRS with 'set_crs()' or 'write_crs()'. Data variable: classification
Я пробовал 'set_crs()
и write_crs()
, но потом я получаю: AttributeError: 'DataArray' object has no attribute
Есть идеи, что делать? Возможно, это просто, но я уже так много пробовал, и ничего не помогает.