Необходимо извлечь информацию о высоте из файла .tif, используя координаты (x,y) из XML-файла .net, созданного с помощьюPython

Программы на Python
Anonymous
Необходимо извлечь информацию о высоте из файла .tif, используя координаты (x,y) из XML-файла .net, созданного с помощью

Сообщение Anonymous »


Я работаю с XML-файлом .net, который содержит информацию о полосах движения, дорогах, перекрестках места и имеет один атрибут с именем Shape — из него мне нужно извлечь координаты x и y, которые указаны в метрах.

Теперь мне нужно использовать эти две координаты и найти информацию о высоте в папке DGM1 (цифровая модель местности 1), в которой есть несколько файлов .tif.

Мой подход: Мне удалось извлечь координаты x и y из XML-файла .net, но проблема заключается в преобразовании этих координат в пиксельные координаты. Когда я пытаюсь использовать преобразованные пиксельные координаты для извлечения информации о высоте, я получаю сообщение об ошибке: «растр выходит за пределы».

Параметры преобразования, которые я использовал для преобразования координат x,y в координаты пикселей:
[*]Ширина пикселей: 1,0 [*]Поворот 1: 0,0 [*]Поворот 2: 0,0 [*]Высота пикселя: -1,0 [*]Восток верхнего левого угла: 462000,5 [*]К северу от верхнего левого угла: 5548999,5
Информация о наборе данных: Ширина: 1000 Высота: 1000 Количество полос: 1 Система координат (CRS): EPSG:25832 Ограничивающая рамка: BoundingBox(left=462000.0, low=5548000.0, right=463000.0, top=5549000.0) Тип данных: float32

Формула, которую я использовал для преобразования:

Для координаты X: Смещение X = координата X – восточное положение верхнего левого угла

Для координаты Y: Смещение по оси Y = север верхнего левого угла – координата Y

Смещение по X = 312,37−462000,5= −461688,13 Смещение по оси Y =5548999,5−1176,31= 5547823,19

Координата пикселя X: X пиксель = смещение по X/ширина пикселя

​Координата пикселя:
пиксель y = смещение по оси y/абсолютная высота пикселя

X пиксель = −461688,13/1,0 = −461688,13 Пиксель Y = 5547823,19/1,0 = 5547823,19

Но координаты преобразованных пикселей выходят за пределы растра, может кто-нибудь помочь?> Не уверен, где я делаю неправильно, но предполагаю, что что-то не так только с преобразованием.

Код, который я использовал:

@mzjn -
обычный код Python для извлечения координат x и y из файла .net xml. После их извлечения я использую приведенный ниже код для преобразования и извлечения информации о высоте из файла .tif.
# Чтение файла TIF для данных о высоте с rasterio.open(tif_file) в качестве источника: # Чтение данных о высоте elev_data = src.read(1) # Предполагаем одноканальные данные о высоте # Прочтите файл TFW для получения информации о географической привязке. с open(tfw_file, 'r') как tfw: линии = tfw.readlines() # Извлекаем параметры геопривязки из файла TFW ширина пикселя = float(lines[0]) Pixel_height = float(lines[3]) x_coord = float(lines[4]) y_coord = float(lines[5]) # Вычисляем координаты x и y в растре col = int((x - x_coord) / ширина_пикселя) row = int((y_coord - y)/pixel_height) # печать (столбец, строка) # Проверяем, находятся ли координаты в пределах растра если 0

Вернуться в «Python»