这个Proj4转换有什么问题?

时间:2011-12-23 18:39:25

标签: maps gis proj4

我正在我公司的软件中实施对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。这似乎不太正常:

Overlaid maps from two servers

此图片是澳大利亚塔斯马尼亚岛的一部分。灰色海岸线来自Demis,在WGS:84投影中。蓝色轮廓和灰色刻度来自Geoscience Australia,在EPSG:3112中,但(理论上)通过Proj4重新投影以匹配灰色海岸线。你可以看到它非常不准确,达到50-100公里。如果这个显示器正在绘制WGS-84刻度,它们将是完全垂直和水平的。还要注意岛屿被拉伸,即它不仅仅是一个旋转。这看起来好像重投影根本不起作用。

我正在使用的两个Proj4初始化字符串是:

  • WGS-84(WMS的CRS:84):+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
  • EPSG:3112:+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并返回产生原点:

  • WGS:84:(145.0,-42.0)
  • 至EPSG:3112:(931684.430679232,-4764432.89032608)
  • 并返回WGS-84:(145,-41.9999999999999)

所有转化均使用pj_transform完成。

我不太了解地图预测或Proj4知道接下来要去哪里,虽然过去几天我学到了很多东西,但我真的很感激那些了解很多的人的建议关于这个图书馆的更多信息。

我的一些想法是:

  • 蓝色岛屿似乎仍处于兰伯特投影中。这可能吗?它可以解释视觉扭曲。
  • 我们使用多年前构建的Proj4 DLL版本,虽然看起来你可以在DLL中构建有关基准等的各种数据,但我不知道这是否已经完成。但是,Proj4并没有标记出进行坐标转换的错误,所以目前我正在假设如果库很高兴,这是一个外部错误(即我自己)。我也不知道推理拥有我们自己的,几年前构建的DLL,而不是使用Proj4网站的预构建二进制文件。但是,即使是Proj4二进制文件也只有一个版本,并且似乎不会将所有内容都包含在二进制数据中。
  • 某些版本的Proj4似乎在外部加载基准和其他信息。我尝试使用PROJ_LIB环境变量替换我们的DLL并将其配置为使用其中一些文件,但没有明显的变化。
  • EPSG的+towgs84=0,0,0,0,0,0,0部分:3112字符串似乎很奇怪。这是来自最新的Proj4下载中的'epsg'文件,但可能是错的吗?

也许这个问题的更好的表述是:

  • 在这两个CRS之间需要做什么或做什么?

感谢您的帮助:)

0 个答案:

没有答案