这是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许可证。在这里了解更多。