Estoy dando soporte a un paquete que sirve objetos {sf} usando EPSG:4326 como proyección por defecto; tengo poco control sobre la configuración que tienen mis usuarios (algunos confían en los valores por defecto, otros compilan desde el código fuente).
Me he encontrado con un problema en el que EPSG:4326 interpretado en el contexto de PROJ 4.9.3 (el estándar cuando se utilizan binarios de Windows) se ve de forma diferente a la misma proyección en el contexto de versiones superiores de PROJ.
La versión PROJ 4.9.3 de un objeto crs es
Coordinate Reference System:
User input: EPSG:4326
wkt:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
mientras que la versión PROJ 6.3.0 es ligeramente diferente:
Coordinate Reference System:
User input: EPSG:4326
wkt:
GEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS["geodetic latitude (Lat)",north,
ORDER[1],
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["geodetic longitude (Lon)",east,
ORDER[2],
ANGLEUNIT["degree",0.0174532925199433]],
USAGE[
SCOPE["unknown"],
AREA["World"],
BBOX[-90,-180,90,180]],
ID["EPSG",4326]]
Esto crea todo tipo de inconvenientes ya que el st_crs(x) == st_crs(y) is not TRUE
es propenso a fallar para un objeto importado de un entorno PROJ diferente.
¿Existe una forma de servir a los SIR de manera que se interprete de forma fiable lo mismo? Desconfío de reproyectar todo por razones de rendimiento.