Por favor, ¿puede alguien ayudarme a convertir un punto de WGS1984 a OSGB1936? He seguido toda la documentación (o eso creo...) y aún no he avanzado en este problema. Este es mi código :
Type factoryType = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment");
System.Object obj = Activator.CreateInstance(factoryType);
ISpatialReferenceFactory3 spacialReferenceFactory3 = obj as ISpatialReferenceFactory3;
// Crear transformación de WGS84 a OSGB86
IGeoTransformation geoTrans = spacialReferenceFactory3.CreateGeoTransformation((int)esriSRGeoTransformationType.esriSRGeoTransformation_OSGB1936_To_WGS1984Petrol) as IGeoTransformation;
ISpatialReference fromSpatialReference;
ISpatialReference toSpatialReference;
geoTrans.GetSpatialReferences(out fromSpatialReference, out toSpatialReference);
IGeometry5 geometry;
IPoint point = new PointClass();
point.PutCoords(51.465615, -3.159875);
geometry = point as IGeometry5;
geometry.SpatialReference = toSpatialReference;
geometry.ProjectEx(fromSpatialReference, esriTransformDirection.esriTransformForward, geoTrans, false, 0.0, 0.0);
point = new PointClass();
point = geometry as IPoint;
Mi punto está siendo devuelto del objeto Geometry como 51.46200954514034, -3.1549783406850165. He intentado usar la transformación inversa especificada en geometry.ProjectEx()
, y todo lo que obtengo es el mismo X e Y que el punto original. También he probado diferentes combinaciones de inversa / hacia adelante y también intercambiando fromSpatialReference
y toSpatialReference
.