No es que vea la necesidad de convertir masivamente los shapefiles mediante programación, pero hay debe ser una forma de almacenar la autoridad EPSG en un shapefile convertido y autoidentificado.
Mi pequeño programa en C++ puede utilizar la API GDAL para ...
- leer un conjunto de datos shapefile ETRS89_UTM32 mediante
GDALOpenEx()
, - comprobar que no es EPSG:32632 llamando a
GetLayer(0)->GetSpatialRef()->GetAuthorityName()
yGetAuthorityCode()
, - convertir el archivo a EPSG:32632 llamando a
GDALVectorTranslate()
, GDALOpenEx()
el shapefile resultante,- se da cuenta de que su SRS todavía no contiene una entrada de autoridad EPSG (¿por qué no?),
AutoIdentifyEPSG()
el SRS, y- comprobar que el código EPSG ahora es efectivamente 32632
-- ¿y luego qué? Si llamo a GDALClose()
en mi conjunto de datos shapefile recién convertido y lo vuelvo a abrir, su SRS sigue apareciendo como WGS_1984_UTM_Zone_32N, sin ninguna entrada de AUTORIDAD.
Esto podría tener algo que ver con este comentario en OGRLayer::GetSpatialRef()
:
El objeto devuelto es propiedad de OGRLayer y no debe ser modificado o liberado por la aplicación.
Así pues, basta con convertir un shapefile a EPSG:32632 (ya sea en la consola mediante ogr2ogr
o de forma programada a través de GDALVectorTranslate()
) no establece ninguna entrada EPSG en el SRS. Realizando AutoIdentifyEPSG()
en el SRS hace establecer la autoridad correcta, pero no puedo guardarla para que se mantenga.
¿Qué estoy haciendo mal?