我正在我公司的软件中实施对WMS maps的支持。服务器返回其地图可用的投影列表,但我们的软件仅显示WGS84(lat / lon或UTM)中的数据,并非所有服务器都返回“CRS:84”或“EPSG:4326”CRS。因此,我需要转换/重新投影数据。有些服务器返回非常不寻常的服务器,我遇到其中一个问题:Geoscience Australia's WMS server使用的EPSG:3112(GDA94 / Geoscience Australia Lambert)。
为了在屏幕上显示地图,我需要将所需屏幕或图块边界框的WGS84纬度/经度坐标转换为服务器的CRS,请求地图图像,然后绘制转换地图的边界框(在服务器的CRS)回到WGS-84 lat / lon。这似乎不太正常:
此图片是澳大利亚塔斯马尼亚岛的一部分。灰色海岸线来自Demis,在WGS:84投影中。蓝色轮廓和灰色刻度来自Geoscience Australia,在EPSG:3112中,但(理论上)通过Proj4重新投影以匹配灰色海岸线。你可以看到它非常不准确,达到50-100公里。如果这个显示器正在绘制WGS-84刻度,它们将是完全垂直和水平的。还要注意岛屿被拉伸,即它不仅仅是一个旋转。这看起来好像重投影根本不起作用。
我正在使用的两个Proj4初始化字符串是:
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
从WGS-84到EPSG的单个点的往返:3112并返回产生原点:
所有转化均使用pj_transform
完成。
我不太了解地图预测或Proj4知道接下来要去哪里,虽然过去几天我学到了很多东西,但我真的很感激那些了解很多的人的建议关于这个图书馆的更多信息。
我的一些想法是:
PROJ_LIB
环境变量替换我们的DLL并将其配置为使用其中一些文件,但没有明显的变化。+towgs84=0,0,0,0,0,0,0
部分:3112字符串似乎很奇怪。这是来自最新的Proj4下载中的'epsg'文件,但可能是错的吗?也许这个问题的更好的表述是:
感谢您的帮助:)