這是Geouk的港口。我創建了此端口以將項目轉換為.NET標準
原始作者創建了一篇博客文章,詳細介紹瞭如何使用Nuget軟件包 - 將緯度和經度轉換為C#中的英國國家電網。請閱讀本文,以更好地了解所使用的概念。
提示:與位置合作時,我喜歡使用此網站 - 網格參考查找器
該項目允許從GPS坐標轉換為英國國家電網,然後再次返回。該產品是根據GNU較少的通用公共許可證(LGPL)許可的。
Geouk.ostn項目增加了OSTN02和OSTN15轉換,可提供更高的精度。應該注意的是,該軟件包包含OSGM02 Geoid和OSTN02 OSTN15轉換,因此相當大,此外,轉換將比使用上述Nuget中使用的Helmert Transformations要慢。該產品是根據GNU較少的通用公共許可證(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 ) ; 軍械調查地圖中使用的地圖參考文獻(速度/北部)分為500公里的正方形,該正方形被細分為100公里的正方形。這些正方形給出了兩個字母代碼。第一個字母代表500公里的正方形,第二個字母代表其中的100公里廣場。六位數地圖引用看起來像TL123456,其中前兩個字符代表地圖上指示的100公里廣場,其中六個數字的前三位數字代表了寬容,而代表Northing的最後三位數字。使用此系統意味著地圖參考被引用為廣場來源的儲存/北(以米為單位)。從上述轉換中返回的EastingNorthing坐標對象可以通過使用OSGB36類,將其轉換為OS映射參考,如下所示:
EastingNorthing eastingNorthing = new EastingNorthing ( 319267 , 175189 ) ;
Osgb36 osgb36EN = new Osgb36 ( eastingNorthing ) ;
string mapReference = osgb36EN . MapReference ; 為了在將ETRS89(WGS84)坐標轉換為英國國家電網時獲得更高的準確性,需要使用軍械調查模型(OSGM02)。 OSGM02可以被認為是涵蓋英國,北部島和愛爾蘭共和國的大型橡皮紙。特殊轉換應用於OSGM02中的數據以從ETRS89和OSGB36轉換。對於大不列顛來說,轉型稱為OSTN02。 OSTN02轉換與活動GPS網站的ETRS89位置相結合代表OSGB36的官方定義,並且可以提供非常準確的轉換。
該橡膠片層面有效地是一張查找表,可用於確定環光(Geoid)高度,並通過OSTN變換,準確的緩沖和北坐標。值得注意的是,北部島和愛爾蘭共和國使用相同的地質模型,但具有不同的轉型(OSI/OSNI),至少目前至少在本文的範圍之內。
Geouk.ostn Nuget軟件包將Geouk軟件包擴展到包括OSGM02/OSTN0和OSTN15功能,並提供了一種簡單的方法,可以使從ETRS89到BNG進行準確的單向轉換。可以使用以下軟件包管理器命令將軟件包添加到項目中。該軟件包取決於Geouk軟件包,並將根據需要添加它。
安裝geouk.ostn
應該注意的是, GeoUK.OSTN軟件包包含OSGM02 Geoid和OSTN02 OSTN15轉換,因此相當大,此外,轉換將比使用上面示例中使用的Helmert Transformations要慢。
下面的示例將ETRS89的緯度/經度/橢圓形高度轉換為升高和北方和ODN高度,以在10厘米左右的時間內。
LatitudeLongitude latLong = new LatitudeLongitude ( 51.469886 , - 3.1636964 , 108.05 ) ;
Osgb36 bng = GeoUK . OSTN . Transform . Etrs89ToOsgb ( latLong ) ;這兩個Nuget軟件包均根據GNU較少的通用公共許可證(LGPL)許可。這是為了尊重以前的Arthors許可證。在這裡了解更多。