Sukerbek Ответов: 1

Конвертировать долгота/широта на икс, игрек


Привет всем, как я могу получить x, y на основе долготы и широты?
Допустим, у меня есть данные геостационарного изображения ( float* data = new float[ 2750* 2750]), и я хочу извлечь некоторые из моих данных.

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

Для этого я использую библиотеку Proj4.
double dCenterLon = 80;
QString strProj = QString( "+proj=geos +h=35785831.0 +lon_0=%1 +a=6400000" ).arg( dCenterLon );

projCtx _ctx = pj_ctx_alloc();
projPJ _projection = = pj_init_plus_ctx( _ctx, qPrintable( strProj ) );

int vLon;            //I have
int vLat;            //I have
int x;             //I have to calculte this
int y;             //I have to calculte this
int nResolution;     //I have
int dColumnOffset;   //I have
int dLineOffset;     //I have

projUV data;
data.u = vLon * DEG_TO_RAD;
data.v = vlat * DEG_TO_RAD;
data = pj_fwd( data, _projection );

x=( data.u / nResolution ) + dColumnOffset + 0.5;
y=( data.v / nResolution * -1 ) + dLineOffset + 0.5;

Rick York

Строка и столбец в какой - то электронной таблице? Ваш вопрос далек от ясности.

Я рекомендую вам прочитать о картографических проекциях, таких как Mercator, и есть несколько подобных "связанных вопросов", перечисленных в столбце справа от этой страницы, которые могут быть полезны.

1 Ответов

Рейтинг:
9

RDBurmon

долгота и широта-это глобальные числа , чтобы нанести свой знак места на карту
так что они не могут быть преобразованы в X и Y
как мы можем это сделать?

Изображение-это маленькое вещество, тогда как Long / Lat-это глобальное число на карте (карта мира)

кстати вот несколько ссылок о библиотеке которую вы используете -
proj.4 — proj.4 4.9.3 документация[^]

[^]

Итак ссылка которую я нашел аналогична вашим вопросам -
Преобразование Координат[Преобразование Координат]

Преобразование широты и долготы в координаты X Y[^]


Sukerbek

Огромное спасибо!

RDBurmon

вы можете принять и проголосовать за ответ

Sukerbek

мне нужно получить строку, col моих данных, скажем, у меня есть данные геостационарного изображения ( float* data = new float[ 2750* 2750]), и я хочу извлечь некоторые из них.
я с помощью данных HDF и у меня есть библиотека, которую я могу получить X,Y, чтобы широта/долгота и широта,долгота для х/г на основе этой библиотеки. Однако,когда я хочу извлечь некоторые из моих данных, мне нужно получить x, y, чтобы loat/lon, как показано ниже

Sukerbek

for( int y = 0; y < extractAreaHeight(); y++ )
{
for( int x= 0; x<extractAreaWidth(); x++ )
{
QPointF posLatLon; QPoint posRowCol;
if( calcLatLon( QPointF( x, y ), posLatLon ) )
{
if( calcRowCol( posLatLon, posRowCol ) )
{
}
}
}
}
Я делаю что-то вроде этого.