PROJ.4库和OSGB36

led*_*ddy 7 gis proj proj4js

一切顺利

我正在尝试使用proj.4库将纬度/经度坐标转换为OSGB36 x和y.

还有其他人成功完成了吗?我需要填充srcPrj4String和destPrj4String变量,例如

string srcPrj4String ="+ proj = longlat + ellps = WGS84 + datum = WGS84 + no_defs";
string destPrj4String ="+ proj = utm + zone = 11 + ellps = GRS80 + datum = NAD83 + units = m";

但我无法弄清楚destPrj4String应该与OSGB36一起使用 - 我知道数据应该是+ datum = OSGB36,但我尝试的一切都不起作用

有任何想法吗?

提前谢谢了

莱迪

Mar*_*rkJ 7

谷歌搜索变成了这个由约翰·史蒂文森博士,曼彻斯特大学地球科学学术-谁应该得到它的权利,如果有人做.这是一个引用.


问题是转到OSGB36需要投影和 基准转换.在2007年10月之前,proj只进行了投影,因此产生了很大的偏移.您可以通过运行'proj -v'或查看您的epsg文件来检查您是否拥有新版本:

cat /usr/share/proj/epsg | grep -A 1 "British National Grid" 

# OSGB 1936 / British National Grid 
<27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 
+y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs  <> 
Run Code Online (Sandbox Code Playgroud)

新版本有+ datum = OSGB36.

如果您使用的是旧版本,则可以使用以下代码替换该行:

+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 
+ellps=airy 
+towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m 
+no_defs <> 
Run Code Online (Sandbox Code Playgroud)

一个复杂因素是OSGB36 相对于GPS投影(例如WGS84和ETRS89)略微失真.这种偏移很小,仅对更高精度的测量很重要.许多关于OSGB36偏移的搜索都会显示与此相关的页面.如果你想补偿这一点,你可以下载一个nadgrid文件并使用它.对于我的数据,这将点数移动了大约1米.


led*_*ddy 5

得到它了:

string srcPrj4String = "+proj=longlat +ellps=WGS84 +towgs84=0,0,0 +no_defs";
string destPrj4String = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m +no_defs";
Run Code Online (Sandbox Code Playgroud)

干杯!