Это порт из Геука. Я создал этот порт, чтобы преобразовать проект в стандарт .net
Оригинальные авторы создали сообщение в блоге, в котором подробно описывается, как использовать оба пакета Nuget - преобразование широты и долготы в британскую национальную сеть в C#. Пожалуйста, прочитайте эту статью, чтобы лучше понять используемые понятия.
Совет: При работе с местами мне нравится использовать этот веб -сайт - Справочный искатель сетки
Проект позволяет обратиться к координатам GPS в Британскую национальную сеть и обратно. Продукт лицензирован по ГНУ меньшей общей публичной лицензии (LGPL).
Проект Geouk.ostn добавляет преобразование OSTN02 и OSTN15, что обеспечивает большую точность. Следует отметить, что этот пакет содержит преобразования геоида OSGM02 и OSTN02 OSTN15, в результате чего довольно велики, кроме того, преобразования будут медленнее, чем использование преобразований Helmert, используемых в вышеуказанном Nuget. Продукт лицензирован по ГНУ меньшей общей публичной лицензии (LGPL).
Установите 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 ) ; Ссылки на карту (Easting/Northing), используемые на картах обследования боеприпасов, разделены на 500-километровые квадраты, которые подразделяются на 100-километровые квадраты. Эти квадраты дают двухклетенный код. Первая буква представляет площадь 500 км, а вторая представляет собой 100 -километровый квадрат внутри него. Ссылка на карту с шестью цифр будет выглядеть примерно как TL123456, где первые два символа представляют 100 -километровый квадрат, как указано на карте, с первыми тремя цифрами из шести, представляющих окраску и последние три цифры, представляющие норшинг. Использование этой системы означает, что ссылка на карту цитируется как украшение/норшинг (в метрах) из происхождения квадрата. Объект координат EastingNorthing, возвращаемый из преобразования, описанного выше, может быть преобразован в ссылку на карту ОС, используя класс OSGB36 следующим образом:
EastingNorthing eastingNorthing = new EastingNorthing ( 319267 , 175189 ) ;
Osgb36 osgb36EN = new Osgb36 ( eastingNorthing ) ;
string mapReference = osgb36EN . MapReference ; Чтобы получить большую точность при преобразовании координат ETRS89 (WGS84) в Британскую национальную сетку, необходимо использовать модель геоидного обзора артизации (OSGM02). OSGM02 можно рассматривать как большой резиновый лист, покрывающий Великобритания, Северный остров и Ирландия. Специальные преобразования применяются к данным в OSGM02 для преобразования из ETRS89 и OSGB36. Для Великобритании трансформация называется OSTN02. Преобразования OSTN02 в сочетании с позициями ETRS89 активных сетевых станций GPS представляют официальное определение OSGB36 и могут дать очень точные преобразования.
Этот резиновый лист геоид является фактически таблицей поиска, который можно использовать для определения отометрической (геоидной) высоты и посредством преобразования OSTN, точных координат по обрелованию и норсинг. Стоит отметить, что Северный остров и Ирландия Ирландия используют одну и ту же геоидную модель, но с другой трансформацией (OSI/OSNI), которая, по крайней мере, на данный момент находится за пределами масштаба этой статьи.
Пакет Geouk.ostn Nuget расширяет пакет Geouk, чтобы включить функциональность OSGM02/OSTN0 и OSTN15 и обеспечивает простой метод для точного одностороннего преобразования от ETRS89 до BNG. Пакет может быть добавлен в проект, используя следующую команду диспетчера пакетов. Пакет зависит от пакета Geouk и добавит его по мере необходимости.
Установить geouk.ostn
Следует отметить, что пакет GeoUK.OSTN содержит трансформации OSGM02 Geoid и OSTN02 OSTN15, в результате чего довольно велики, кроме того, преобразования будут медленнее, чем использование преобразований Helmert, как используется в приведенных выше примерах.
Приведенный ниже пример преобразует высоту широты/долготы/эллипсоидов ETRS89 в высоту и нортинга и высоту ODN в пределах 10 сантиметров или около того.
LatitudeLongitude latLong = new LatitudeLongitude ( 51.469886 , - 3.1636964 , 108.05 ) ;
Osgb36 bng = GeoUK . OSTN . Transform . Etrs89ToOsgb ( latLong ) ;Оба пакета Nuget лицензированы по GNU Manger General Public Public License (LGPL). Это, чтобы уважать предыдущую лицензию Арторса. Узнайте больше здесь.