Este é o porto de Geouk. Eu criei esta porta para converter o projeto para o .NET Standard
Os autores originais criaram uma postagem no blog detalhando como usar os dois pacotes NUGET - convertendo latitude e longitude na rede nacional britânica em C#. Por favor, vá e leia este artigo para entender melhor os conceitos usados.
Dica: ao trabalhar com locais, gosto de usar este site - Grid Reference Finder
O projeto permite uma conversão de coordenadas de GPS para a Grid National British e de volta. O produto é licenciado sob a Licença Pública Geral (LGPL) menor da GNU.
O projeto Geouk.ostn adiciona a transformação OSTN02 e OSTN15, que fornecem uma maior precisão. Deve -se notar que este pacote contém as transformações OSGM02 Geoid e OSTN02 OSTN15, como resultado é bastante grande, além disso, as transformações serão mais lentas do que o uso das transformações do helmert, conforme usado no Nuget acima. O produto é licenciado sob a Licença Pública Geral (LGPL) menor da GNU.
Instale 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 ) ; As referências do mapa (facilidade/dimensionamento) usadas nos mapas de pesquisa de munições são divididas em quadrados de 500 km que são subdivididos em quadrados de 100 km. Esses quadrados recebem um código de duas letras. A primeira letra representa o quadrado de 500 km e a segunda representa o quadrado de 100 km dentro dela. Uma referência de mapa de seis dígitos seria algo como TL123456, onde os dois primeiros caracteres representam o quadrado de 100 km, conforme indicado no mapa, com os três primeiros dígitos dos seis representando as lastes e os últimos três dígitos que representam o norte. Usando este sistema significa que uma referência de mapa é citada como uma facilidade/quarto (em metros) da origem do quadrado. Um objeto de coordenadas de Eastnornorthing, conforme retornado da transformação descrito acima, pode ser convertido em uma referência de mapa do sistema operacional usando a classe OSGB36 da seguinte forma:
EastingNorthing eastingNorthing = new EastingNorthing ( 319267 , 175189 ) ;
Osgb36 osgb36EN = new Osgb36 ( eastingNorthing ) ;
string mapReference = osgb36EN . MapReference ; Para obter maior precisão ao transformar as coordenadas ETRS89 (WGS84) para a Grid Nacional Britânica, o Modelo Geoid da Pesquisa de Ordnance (OSGM02) precisa ser usado. O OSGM02 pode ser considerado uma grande folha de borracha que cobre a Grã -Bretanha, a Ilha do Norte e a República da Irlanda. Transformações especiais são aplicadas aos dados no OSGM02 para se transformar do ETRS89 e OSGB36. Para a Grã -Bretanha, a transformação é chamada OSTN02. As transformações OSTN02 combinadas com as posições ETRS89 das estações de rede GPS ativas representam a definição oficial de OSGB36 e podem fornecer transformações muito precisas.
Esta folha de borracha Geoid é efetivamente uma tabela de pesquisa que pode ser usada para determinar alturas otométricas (geóides) e, através da transformação do OSTN, das coordenadas precisas de facilidade e norma. Vale a pena notar que o norte da Ilha e a República da Irlanda usam o mesmo modelo geoid, mas com uma transformação diferente (OSI/OSNI) que, pelo menos agora, está fora do escopo deste artigo.
O pacote Geouk.ostn NUGET estende o pacote Geouk para incluir a funcionalidade OSGM02/OSTN0 e OSTN15 e fornece um método simples para fazer uma transformação única precisa de ETRS89 para BNG. O pacote pode ser adicionado a um projeto usando o seguinte comando gerenciador de pacotes. O pacote depende do pacote Geouk e o adicionará conforme necessário.
Instale o geouk.ostn
Deve -se notar que o pacote GeoUK.OSTN contém as transformações OSGM02 Geoid e OSTN02 OSTN15, como resultado é bastante grande, além disso, as transformações serão mais lentas do que o uso das transformações do helmert, conforme usado nos exemplos acima.
O exemplo abaixo converte uma altura ETRS89 Latitude/Longitude/Elipsóides em Pontagem BNG e Northing e ODN altura a 10 centímetros ou mais.
LatitudeLongitude latLong = new LatitudeLongitude ( 51.469886 , - 3.1636964 , 108.05 ) ;
Osgb36 bng = GeoUK . OSTN . Transform . Etrs89ToOsgb ( latLong ) ;Ambos os pacotes NUGET são licenciados sob licença pública geral da GNU (LGPL). Isso respeitar a licença anterior da ArtHors. Saiba mais aqui.