Dies ist Port von Geouk. Ich habe diesen Port erstellt, um das Projekt in .NET Standard umzuwandeln
Die ursprünglichen Autoren haben einen Blog -Beitrag erstellt, in dem beschrieben wird, wie beide Nuget -Pakete verwendet werden können. Bitte lesen Sie diesen Artikel, um die verwendeten Konzepte besser zu verstehen.
Tipp: Wenn ich mit Orten arbeite, benutze ich diese Website gerne - Grid Reference Finder
Das Projekt ermöglicht eine Konvertierung von GPS -Koordinaten in das britische Nationalnetz und wieder zurück. Das Produkt ist im Rahmen der GNU Lesser General Public License (LGPL) lizenziert.
Das GEOUK.OSTN -Projekt fügt die OSTN02- und OSTN15 -Transformation hinzu, die eine größere Genauigkeit darstellt. Es ist zu beachten, dass das Paket die OSGM02 -Geoid- und OSTN02 -OSTN15 -Transformationen enthält. Daher ist es ziemlich groß. Zusätzlich sind Transformationen langsamer als die Verwendung der im obigen Nuget verwendeten Helmert -Transformationen. Das Produkt ist im Rahmen der GNU Lesser General Public License (LGPL) lizenziert.
Geouk installieren
// 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 ) ; Die in Ordnance Survey Maps verwendeten Kartenreferenzen (Easting/Nording) sind in 500 km Quadrate unterteilt, die in 100 km Quadrate unterteilt sind. Diese Quadrate erhalten einen zwei Buchstabencode. Der erste Buchstaben repräsentiert das 500 km Quadrat und der zweite das 100 km große Quadrat. Eine sechsstellige Kartenreferenz würde ungefähr wie TL123456 aussehen, wobei die ersten beiden Zeichen das 100 km -Quadrat darstellen, wie auf der Karte angegeben, wobei die ersten drei Ziffern der sechs den Ost- und letzten drei Ziffern die Northemen darstellen. Die Verwendung dieses Systems bedeutet, dass eine Kartenreferenz als Ost-/Nordinde (in Meter) aus dem Ursprung des Quadrats zitiert wird. Ein EastingNoring -Koordinatenobjekt, wie aus der oben beschriebenen Transformation zurückgegeben, kann unter Verwendung der OSGB36 -Klasse wie folgt in eine OS -Kartenreferenz konvertiert werden:
EastingNorthing eastingNorthing = new EastingNorthing ( 319267 , 175189 ) ;
Osgb36 osgb36EN = new Osgb36 ( eastingNorthing ) ;
string mapReference = osgb36EN . MapReference ; Um eine größere Genauigkeit bei der Umwandlung von ETRS89 (WGS84) -Koordinaten in British National Grid zu erzielen, muss das Ordnance Survey Geoid Model (OSGM02) verwendet werden. Der OSGM02 kann als ein großes Gummiblatt für Großbritannien, Nordinsel und die Republik Irland angesehen werden. Auf die Daten innerhalb des OSGM02 werden spezielle Transformationen angewendet, um von ETRS89 und OSGB36 zu transformieren. Für Großbritannien heißt die Transformation OSTN02. Die OSTN02 -Transformationen in Kombination mit den ETRS89 -Positionen von aktiven GPS -Netzwerkstationen stellen die offizielle Definition von OSGB36 dar und können sehr genaue Transformationen ergeben.
Diese Gummiblech -Geoid ist effektiv eine Nachschlagtabelle, mit der die opthometrischen (Geoid-) Höhen und über die OSTN -Transformation genaue Ost- und Nordkoordinaten bestimmen kann. Es ist erwähnenswert, dass Nordinsel und die Republik Irland das gleiche Geoid -Modell verwenden, jedoch mit einer anderen Transformation (OSI/OSNI), die zumindest vor dem Umfang dieses Artikels liegt.
Das Geouk.Ostn-Nuget-Paket erweitert das Geouk-Paket um OSGM02/OSTN0- und OSTN15-Funktionalität und bietet eine einfache Methode, um eine genaue Einweg-Transformation von ETRS89 zu BNG vorzunehmen. Das Paket kann einem Projekt mit dem folgenden Befehl Package Manager hinzugefügt werden. Das Paket ist vom Geouk -Paket abhängig und fügt es nach Bedarf hinzu.
Installieren Sie Geouk.ostn
Es ist zu beachten, dass das GeoUK.OSTN -Paket die OSGM02 -GEOID- und OSTN02 -OSTN15 -Transformationen enthält. Daher ist es ziemlich groß. Zusätzlich sind Transformationen langsamer als die Verwendung der in den obigen Beispielen verwendeten Helmert -Transformationen.
Das folgende Beispiel wandelt eine ETRS89 -Breite/Länge/Ellipsoidhöhe in Bng -Easting und Nord- und ODN -Höhe in 10 Zentimeter oder so um.
LatitudeLongitude latLong = new LatitudeLongitude ( 51.469886 , - 3.1636964 , 108.05 ) ;
Osgb36 bng = GeoUK . OSTN . Transform . Etrs89ToOsgb ( latLong ) ;Beide Nuget -Pakete sind unter GNU Lesser Allgemeines Public Lizenz (LGPL) lizenziert. Dies respektiert die vorherige Arthors -Lizenz. Erfahren Sie hier mehr.