Sukerbek Ответов: 1

Преобразование широты/долготы в координаты изображения (пиксельные координаты)


Я взял изображение geotiff из MODIS и хочу получить пиксель (x,y) из этого исходного изображения на основе долготы и широты. Мне нужна формула, чтобы вычислить это без проекции, любая помощь была бы оценена.

Что я уже пробовал:

math - преобразование координат долготы и широты в изображение карты пиксели X и Y координаты Java - Stack Overflow[^]

1 Ответов

Рейтинг:
7

Jochen Arndt

Вам нужен размер изображения в пикселях (width и height), опорная точка lat/lon в заданном положении пикселя (например, lat0 и lon0 при x = y = 0), а также lat/lon-дегресс, охватываемый изображением (например, при наличии другой опорной точки на макс. x и y).

Первый шаг-вычисление коэффициентов масштабирования в пикселях на градус:

double scale_x = width / lon_range;
double scale_y = height / lat_range;


Теперь вы можете получить позиции пикселей:
double x = (lon - lon0) * scale_x;
double y = (lat - lat0) * scaly_y;


Наконец преобразуйте их в целые числа с округлением:
int xp = static_cast<int>((x > 0) ? x + 0.5 : x - 0.5);
int yp = static_cast<int>((y > 0) ? y + 0.5 : y - 0.5);</int></int>


Примечание: это просто с нуля (не проверял его).


Sukerbek

большое вам спасибо за ответ но результат был неправильным
когда я использовал эти параметры
ширина = 4023;
высота = 4096;
lon0 = 103.21922302246094;
lat0 = 58.177616119384766;
широта = 37.552063;
долгота = 125.518799;
lon_range = 360;
lat_range = 180;
Результат
xp = 245;
гг = -454;
Однако результат должен быть
xp = arround-> 2300 что-то; или больше, чем 2000
yp = arround-> 2300 что-то; или больше, чем 2000

Jochen Arndt

Диапазоны lat/lon должны быть шириной и высотой изображения в градусах ("Градусы, покрытые изображением"), а не полными диапазонами lat/lon 180/360.

Sukerbek

Хорошо большое вам спасибо я решил свою проблему с помощью библиотеки GDAL

Member 14586399

@Sukerbek, как вы решили эту проблему, используя цель, я пытаюсь достичь того же самого.