Страница 1 из 1
GDAL: Как получить ГК GeoTiff
Добавлено: 05 дек 2013, 08:36
wowka1319
Необходимо получать ГК пикселей (что бы потом по координатам накладывать на снимок названия объектов).
Пока остановился на
Код: Выделить всё
GDALRegister_GTiff();
double adfGeoTransform[6];
GDALDataset *poDataset;
poDataset = (GDALDataset *) GDALOpen("TEST_01.tiff", GA_ReadOnly);
if (poDataset == NULL)
{
std::cout << "WTF?\n";
}
Другими словами дальше туториала не ушел.
что дальше?
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 05 дек 2013, 23:47
Дмитрий Барышников
Приложите вывод gdalinfo для TEST_01.tiff в тему
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 06 дек 2013, 00:21
wowka1319
Код: Выделить всё
Driver: GTiff/GeoTIFF
Files: TEST_01.tiff
Size is 4483, 2494
Coordinate System is:
PROJCS["unnamed",
GEOGCS["Pulkovo 1942",
DATUM["Pulkovo_1942",
SPHEROID["Krassowsky 1940",6378245,298.2999999999985,
AUTHORITY["EPSG","7024"]],
AUTHORITY["EPSG","6284"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4284"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",111],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]
Origin = (73671.999948490688000,5838215.177363829700000)
Pixel Size = (50.000000000000057,-50.040096230954290)
Metadata:
AREA_OR_POINT=Area
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 73672.000, 5838215.177) (112d 5'20.30"E, 52d40'0.97"N)
Lower Left ( 73672.000, 5713415.177) (112d 3'43.17"E, 51d32'43.98"N)
Upper Right ( 297822.000, 5838215.177) (115d23'44.13"E, 52d35'25.17"N)
Lower Right ( 297822.000, 5713415.177) (115d17'13.46"E, 51d28'19.01"N)
Center ( 185747.000, 5775815.177) (113d42'34.71"E, 52d 4'48.09"N)
Band 1 Block=4483x1 Type=UInt16, ColorInterp=Red
Band 2 Block=4483x1 Type=UInt16, ColorInterp=Green
Band 3 Block=4483x1 Type=UInt16, ColorInterp=Blue
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 06 дек 2013, 11:47
Дмитрий Барышников
Потом так:
1. Получаем матрицу преобразования
2. Собственно пересчитываем пикселы в СК изображения.
Код: Выделить всё
double adfGeoTransform[6];
if( poDataset->GetGeoTransform( adfGeoTransform ) == CE_None ) //1
{
double dfPixX(0), dfPixY(0); //пиксельные координаты, например 0,0
double dfSRSX, dfSRSY; //координаты в системе координат изображения
GDALApplyGeoTransform( adfGeoTransform, dfPixX, dfPixY, &dfSRSX, &dfSRSY ); //2
}
Полезные ссылки:
http://www.gdal.org/gdal_tutorial.html
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 09 дек 2013, 07:09
wowka1319
Спасибо. Я получил прямоугольные координаты. Как теперь их перевести в ГК? gdalinfo я указывал выше.
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 09 дек 2013, 07:16
Максим Дубинин
координаты в спроецированной СК, например ГК (Гаусс-Крюгер) это и есть прямоугольные координаты.
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 09 дек 2013, 08:49
wowka1319
но мне нужны Географические Координаты (Широта и долгота)! Как их получить?
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 09 дек 2013, 09:31
trir
EPSG=4284
Re: GDAL: Как получить ГК GeoTiff
Добавлено: 09 дек 2013, 10:41
Дмитрий Барышников
Как-то так:
Код: Выделить всё
const char* pszProjection = poDataset ->GetProjectionRef();
if(CPLStrnlen(pszProjection, 10) > 0)
{
OGRSpatialReference* pRasterSpatRef = new OGRSpatialReference(pszProjection);
if(pRasterSpatRef->IsProjected())
{
OGRSpatialReference* pGSSpatRef = pRasterSpatRef->CloneGeogCS();
OGRCoordinateTransformation *poCT = OGRCreateCoordinateTransformation( pRasterSpatRef, pGSSpatRef );
if(poCT)
{
poCT->Transform(1, &dfSRSX, &dfSRSY);
}
}
}