例1.6¶
定义投影和范围¶
哇!这里发生了什么?
你刚刚经历了飞行中的责备。在映射文件中定义投影对象时,MapServer会将图层和投影信息传递给PROJ库(以前 PROJ.4) which does the reprojection. For more information about the PROJ library, please visit https://proj.org/ .
这个例子试图为MapServer中的投影支持提供一些帮助。
这就是 Mapfile 的外观: Example1-6.map
在我们的mapfile中,您可能注意到的第一件事是原始范围已被注释掉,新的范围值看起来与纬度和经度值不同。另外,我们在顶部附近和每个层中添加了一个投影对象。
让我们看看新的对象和参数:
EXTENT 201621.496941 -294488.285333 1425518.020722 498254.511514
我们提供给MapServer的数据块需要与输出投影使用相同的单位。由于Lambert方位角相等面积的单位是米,我们必须给出新的范围米。我们可以使用ArcView或其他一些GIS包计算新的区段,也可以使用PROJ的cs2cs实用程序。下面的命令可用于重新投影原始范围值:
cs2cs +proj=latlong +datum=WGS84 +to +proj=laea +ellps=clrk66 +lat_0=45 +lon_0=-100
键入命令后,输入西南坐标对(左下角坐标),用空格分隔:
-97.5 41.619778
“cs2cs”实用程序给出的值:
208398.01 -372335.44 0.000
然后输入东北坐标对(右上角坐标),再次用空格分隔:
-82.122902 49.38562
并返回以下值:
1285308.08 632638.93 0.000
您会注意到“cs2cs”返回一组三个值。您可以忽略第三个值0.000,因为它表示高度(我们不使用)。不管怎样,我们现在可以将范围表示为:
EXTENT 208398.01 -372335.44 1285308.08 632638.93
但你说,这与上述范围不符。好吧,这就是你回绝的时候通常会发生的事情——地图不一定像你想象的那样居中。你可以绕着它转,向左走几千米,向右再加几米。或者,您可以使用图形化的地理信息系统包来提供范围。 Here are the instructions 为了得到 EXTENT 使用QGIS。
MapServer可以通过两种方式获取投影定义。第一个显示在映射文件的输出投影对象(第一个投影块)中。这是向PROJ库传递参数的传统方式。另一种方法是使用EPSG代码。这些代码是欧洲石油勘探集团(EPSG)定义的标准投影代码(或空间参考标识符)。在Lambert方位等面积投影的情况下,它的代码是“2163”。如果您在投影后注释掉这四行并取消注释行“init=epsg:2163”,这将向PROJ提供相同的信息。如果您想了解更多关于EPSG代码的信息,请查看“/usr/local/share/proj/EPSG”或“C:/proj/nad/EPSG”(“ms4w”中的“/ms4w/proj/nad”)。
注解
您可以搜索epsg代码并查看mapserver使用示例,网址为 http://epsg.io/
此外,请访问EPSG网站 http://www.epsg.org .
如果您需要了解有关投影的更多信息,请查看以下链接:
你可以通过搜索网页上的“地图投影”找到更多信息。