Este es puerto de Geouk. Creé este puerto para convertir el proyecto a .NET Standard
Los autores originales han creado una publicación de blog que detalla cómo usar los paquetes Nuget: convertir la latitud y la longitud en la red nacional británica en C#. Vaya y lea este artículo para comprender mejor los conceptos utilizados.
Consejo: Cuando trabajo con ubicaciones, me gusta usar este sitio web - Buscador de referencia de cuadrícula
El proyecto permite una conversión de las coordenadas GPS a la red nacional británica y regresa nuevamente. El producto tiene licencia bajo la Licencia Pública General Lesser GNU (LGPL).
El proyecto Geouk.ostn agrega la transformación OSTN02 y OSTN15 que proporcionan una mayor precisión. Cabe señalar que este paquete contiene las transformaciones OSGM02 Geoid y OSTN02 OSTN15, como resultado es bastante grande, además, las transformaciones serán más lentas que el uso de las transformaciones Helmert como se usa en el Nuget anterior. El producto tiene licencia bajo la Licencia Pública General Lesser GNU (LGPL).
Instalar geouk
// Given an easting and northing in metres (see text)
const double easting = 651409.903 ;
const double northing = 313177.270 ;
// Convert to Cartesian
Cartesian cartesian = Convert . ToCartesian ( new Airy1830 ( ) ,
new BritishNationalGrid ( ) ,
new EastingNorthing ( easting , northing ) ) ; Cartesian wgsCartesian = Transform . Osgb36ToEtrs89 ( cartesian ) ; //ETRS89 is effectively WGS84 LatitudeLongitude wgsLatLong = Convert . ToLatitudeLongitude ( new Wgs84 ( ) , wgsCartesian ) ; LatitudeLongitude latLong = new LatitudeLongitude ( 51.469886 , - 3.1636964 ) ;
Cartesian cartesian = Convert . ToCartesian ( new Wgs84 ( ) , latLong ) ;
Cartesian bngCartesian = Transform . Etrs89ToOsgb36 ( cartesian ) ;
EastingNorthing bngEN = Convert . ToEastingNorthing ( new Airy1830 ( ) , new BritishNationalGrid ( ) , bngCartesian ) ; Las referencias del mapa (EASTING/NORTHING) utilizadas en los mapas de la encuesta de artillería se dividen en cuadrados de 500 km que se subdividen en cuadrados de 100 km. Estos cuadrados reciben un código de dos letras. La primera letra representa el cuadrado de 500 km y el segundo representa el cuadrado de 100 km dentro de él. Una referencia de mapa de seis dígitos se parecería a TL123456, donde los dos primeros caracteres representan el cuadrado de 100 km como se indica en el mapa con los primeros tres dígitos de los seis que representan el estallido y los últimos tres dígitos que representan el nightthing. Usar este sistema significa que se cita una referencia de mapa como un orificio/nutrio (en metros) desde el origen del cuadrado. Un objeto de coordenada de EasTingnorcing, como se devuelve de la transformación descrita anteriormente, puede convertirse en una referencia de mapa del sistema operativo utilizando la clase OSGB36 de la siguiente manera:
EastingNorthing eastingNorthing = new EastingNorthing ( 319267 , 175189 ) ;
Osgb36 osgb36EN = new Osgb36 ( eastingNorthing ) ;
string mapReference = osgb36EN . MapReference ; Para obtener una mayor precisión al transformar las coordenadas ETRS89 (WGS84) en la red nacional británica, se debe utilizar el Modelo Geoides de Ordnance Survey (OSGM02). El OSGM02 puede considerarse como una gran hoja de goma que cubre Gran Bretaña, la Isla del Norte y la República de Irlanda. Se aplican transformaciones especiales a los datos dentro del OSGM02 para transformarse de ETRS89 y OSGB36. Para Gran Bretaña, la transformación se llama OSTN02. Las transformaciones OSTN02 combinadas con las posiciones ETRS89 de las estaciones de red GPS activas representan la definición oficial de OSGB36 y pueden dar transformaciones muy precisas.
Este geoideo de la hoja de goma es efectivamente una tabla de búsqueda que puede usarse para determinar las alturas otros (geoides) y, a través de la transformación OSTN, coordenadas precisas de este y nutring. Vale la pena señalar que la Isla Norte y la República de Irlanda usan el mismo modelo geoidal pero con una transformación diferente (OSI/OSNI) que, al menos por ahora, está fuera del alcance de este artículo.
El paquete geouk.ostn nuget extiende el paquete Geouk para incluir la funcionalidad OSGM02/OSTN0 y OSTN15 y proporciona un método simple para hacer una transformación unidireccional precisa de ETRS89 a BNG. El paquete se puede agregar a un proyecto utilizando el siguiente comando de Administrador de paquetes. El paquete depende del paquete Geouk y lo agregará según sea necesario.
Instalar geouk.ostn
Cabe señalar que el paquete GeoUK.OSTN contiene las transformaciones OSGM02 Geoid y OSTN02 OSTN15, como resultado es bastante grande, además, las transformaciones serán más lentas que usar las transformaciones Helmert como se usa en los ejemplos anteriores.
El siguiente ejemplo convierte una altura de latitud/longitud/elipsoide de ETRS89 en altura de BNG y la altura de Northing y ODN a 10 centímetros más o menos.
LatitudeLongitude latLong = new LatitudeLongitude ( 51.469886 , - 3.1636964 , 108.05 ) ;
Osgb36 bng = GeoUK . OSTN . Transform . Etrs89ToOsgb ( latLong ) ;Ambos paquetes Nuget tienen licencia bajo GNU Lesser Public License (LGPL). Esto para respetar la licencia de Arthors anterior. Obtenga más información aquí.