我正在为谷歌地图添加WAC覆盖。
地图块投影在NAD83 (lcc),谷歌地图是WGS84(墨卡托)。
WAC瓷砖被分成各自的区域,如http://map.aeroplanner.com/mapping/chart/smartchart.cfm所示,所以有相当多的瓷砖。也就是说,我现在甚至在定位单个贴图时都遇到了问题。
这个世界文件看起来是正确的,因为ArcGIS使用相关的世界文件来正确地显示贴片。
当使用LCC投影并设置瓦片预期填充的纬度/长度时,组成WAC扇区的南北瓦片相互之间正确对齐。
http://img716.imageshack.us/img716/1742/waclcc.jpg -在此图像中,您可以看到CF16 A&B和CF17 A&B。投影看起来是正确的,但是位置是错误的。必须指定绝对的lat/long,否则会导致MapServer抛出定位错误。
这是映射文件中的一个片段,它产生了上面的输出:
层光栅型"16 _40_north"集团"wac"DATA "/opt/fgs/www/htdocs/WAC/CF-16 WAC 40 North.tif"
#projection of this layer
PROJECTION
"proj=lcc"
"lat_2=49"
"lat_1=44.5"
"lat_0=40"
"lon_0=-125"
"x_0=0"
"y_0=0"
"ellps=GRS80"
"datum=NAD83"
"units=m"
"no_defs"
END
OFFSITE 0 0 0
END
LAYER
TYPE RASTER
NAME "16_40_SOUTH"
GROUP "wac"
DATA "/opt/fgs/www/htdocs/WAC/CF-16 WAC 40 South.tif"
#projection of this layer
PROJECTION
"proj=lcc"
"lat_2=49"
"lat_1=44.5"
"lat_0=40"
"lon_0=-125"
"x_0=0"
"y_0=0"
"ellps=GRS80"
"datum=NAD83"
"units=m"
"no_defs"
END
OFFSITE 0 0 0
END
其他类型的定位,如UTM提供不正确的投影(因为线条不是水平的),并且同样是不正确的定位。
为什么MapServer定位如此不正确,尽管被给定的绝对值,其中ArcGIS显示瓦片使用世界文件没有任何问题?
是MapServer的版本有问题,还是我们的mapfile有问题?
一个月前我们在解决一个完全不同的问题时重新讨论了这个问题。
我们发现遗留的JavaScript(使用Google Maps API)不能正确地计算边界框。我们假定它是好的,因为它已经生产了几年没有问题。
我研究了其他的映射API,包括leaflet.js,并从头开始创建了一个示例解决方案。我们对内部JavaScript功能做了一些调整,使地图项目能够正常运行。
就我个人而言,我发现Leaflet.js和OSM在尝试解决谷歌地图问题时是非常宝贵的。