Перепроецирование данных geotiff и построение графиков с Python - PullRequest
0 голосов
/ 10 июля 2020

У меня есть geotiff и массив данных с такими же формами. Массив данных - это вспомогательные данные геотифа. Координаты x и y - это размер координат geotiff, но у массива данных нет проекции. Я пытаюсь спроецировать массив данных с информацией из geotiff.

Моя идея была:

  1. Создать новый набор данных xarray из приведенного выше
  2. Перепроецировать новый набор данных (чтобы иметь возможность построить его позже с третьим набором данных вверху)

Проблемы, которые у меня есть:

Использование 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

Есть идеи, что делать? Возможно, это просто, но я уже так много пробовал, и ничего не помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...