Как я могу извлечь данные из GeoTIFF по определенным координатам x, y в C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как я могу извлечь данные из GeoTIFF по определенным координатам x, y в C++?

Сообщение Anonymous »

Я пользователь R, но новичок в C++. Мне нужен рабочий процесс C++, который возвращает значение GeoTiff по определенной координате (x, y). GeoTiff содержит 1 слой. Слой представляет собой двумерный массив. Каждая ячейка содержит число с плавающей запятой (FLT4S), которое (в моем случае) определяет глубину морского дна в определенном месте. В качестве системы координат используется Universal Transverse Mercator с единицами измерения в метрах.
В R легко прочитать GeoTiff и извлечь значение GeoTiff в определенном месте с помощью terra пакет:

Код: Выделить всё

library(terra)

# Load GeoTiff
# * This is a map of the seabed depth off the west coast of Scotland
f  dimensions  : 264, 190, 1  (nrow, ncol, nlyr)
#> resolution  : 100, 100  (x, y)
#> extent      : 695492.1, 714492.1, 6246657, 6273057  (xmin, xmax, ymin, ymax)
#> coord. ref. : WGS 84 / UTM zone 29N (EPSG:32629)
#> source      : dat_gebco.tif
#> name        :   map_value
#> min value   :   0.1994156
#> max value   : 201.8856354

# Extract value (depth) at (x, y)
# (Coordinates are in metres, matching GeoTiff)
terra::extract(r, cbind(707087.7, 6266045))
#>  map_value
#> 1   191.285
Как это сделать на C++? Я знаю, что terra использует C++ под капотом. terra::extract() в конечном итоге вызывает функцию SpatRaster::extract*() C++*, но я не могу понять, каков минимальный рабочий процесс для достижения вышеперечисленного. Обратите внимание, что в моем случае и пара координат, и GeoTiff (проекция UTM) имеют единицы измерения в метрах, что может упростить требуемый код.
*См. https://github.com/rspatial. /terra/blob/master/src/extract.cpp
Изображение


Подробнее здесь: https://stackoverflow.com/questions/792 ... nates-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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