Проблема преобразования изображения Rasterio Image Reproject - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть изображение, которое представляет геопространственные данные. Это изображение было записано с использованием системы ETRS89 (EPSG: 5243). Другими словами, я сохранил изображение и координаты четырех углов этого изображения. Я хочу сделать очень простое преобразование изображения из EPSG: 5243 в EPSG: 4326. Другими словами, я хочу преобразовать форму изображения так, чтобы оно могло уместиться на карте WSG84.

Мое изображение уже имеет форму простой матрицы.

Я пытался использовать растерио дляпреобразование, но у меня проблема в том, что я не вижу хороший способ вычислить src_transform и dst_transform. Насколько я знаю, они должны описывать связь между пикселем и координатами. Мой самый большой вопрос: нужны ли мне оба эти преобразования? Я имею в виду, что Растерио знает систему назначения, поэтому нужен только один. Правильно? Значением по умолчанию является None, но я не уверен, нужно ли его заполнять.

    from rasterio import Affine
    from rasterio.warp import reproject, Resampling

    matrix = get_np_matrix_of_img()
    matrix_transform = np.zeros(matrix.shape, float)

    x_max = self.shape.get_ETRS89_bounds().x_max
    y_max = self.shape.get_ETRS89_bounds().y_max
    x_min = self.shape.get_ETRS89_bounds().x_min
    y_min = self.shape.get_ETRS89_bounds().y_min

    src_transform = [1.0, 0.0, 0.0, -1.0, x_min, y_max] # might be wrong
    reproject(
        matrix,
        matrix_transform,
        src_crs={'init': 'EPSG:5243'},
        src_transform = src_transform 
        dst_crs={'init': 'EPSG:4326'},
        dst_transform = None, #I do not believe I need that, is this correct?
        resampling=Resampling.bilinear)

    # Assert that the destination is only partly filled.
    assert matrix_transform.any()
    assert not matrix_transform.all()

    img = self._make_img_from_matrix(matrix_transform)

Код выдает ошибку "rasterio.errors.CRSError: Invalid CRS"

...