В данный момент я работаю с козырьком шейп-файла на C++ и QT и использую библиотеку GDAL/OGR. У меня есть этот метод, чтобы получить EPSG моих шейп-файлов:
OGRLayer layer = dataset->GetLayer(0);
OGRSpatialReference *spatialRef = layer->GetSpatialRef();
При этом я получаю номер EPSG с:
atoi(spatialRef->GetAuthorityCode(NULL));
Это отлично работает во всех моих шейп-файлах, кроме одного. В этом случае метод всегда возвращает ноль.
Я пытаюсь использовать:
spatialRef->GetAuthorityCode("PROJCS");
spatialRef->GetAuthorityCode("GEOGCS");
spatialRef->GetAuthorityName("GEOGCS");
И весь этот метод возвращает ""
.
Я проверяю этот шейп-файл в программе gis, так как QGIS и QGIS автоматически определили, что его EPSG равен 25830.
Мой вопрос таков: может ли проекционная информация быть прочитана другим методом, чем то, что я делаю?
Жду ваших предложений.
Большое спасибо.
ИЗМЕНИТЬ
Это содержимое файла .prj:
PROJCS["ETRS89_UTM_zone_30N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519],PROJECTION ["поперечный_меркатор"],ПАРАМЕТР["широта_начала",0],ПАРАМЕТР["центральный_меридиан",-3],ПАРАМЕТР["коэффициент_масштаба",0,9996],ПАРАМЕТР["ложное_восток",500000],ПАРАМЕТР["ложное_северное",0 ],UNIT["Метр",1]]
spatialRef->AutoIdentifyEPSG()
? - person RA.   schedule 10.03.2018