PROJECTION

背景

More Information

使用MapServer的投影

要设置投影,必须为输出图像定义一个投影对象(在 MAP 对象)和每个层的一个投影对象(在 LAYER 要投影的对象。MAPServer依赖于 PROJ 投影库。因此,投影对象由一系列PROJ关键字组成,这些关键字可以在对象中直接指定,也可以在 EPSG 文件。EPSG文件是包含投影参数的查找文件,是PROJ库的一部分。

从MapServer 8开始,当使用Proj 6库或更高版本时,建议使用EPSG代码(如果可用),而不是内联投影参数,以受益于更高精度的坐标重新投影。

以下两个示例都定义了相同的投影(UTM区域15,NAD83),但使用了两种不同的方法:

示例1:内联投影参数

PROJECTION
  "proj=utm"
  "ellps=GRS80"
  "datum=NAD83"
  "zone=15"
  "units=m"
  "north"
  "no_defs"
END

备注

对于所有可能的PROJ投影参数的列表,官方PROJ站点是最好的(https://PROJ.org),但是旧的wiki有一个完整的列表 PROJ parameters .

示例2:EPSG投影使用

PROJECTION
   "init=epsg:26915"
END

备注

这是指包含具有完整投影参数的“26915”代码的EPSG查找文件。”在这个例子中,epsg“是区分大小写的,因为它指的是一个文件名。如果您的文件系统是区分大小写的,则必须是小写,否则MapServer(PROJ)将抱怨找不到该文件。

备注

有关此坐标系的详细信息,请参见https://epsg.io/26915。

接下来的两个示例都显示了如何定义未投影的lat/long(“地理”):

示例3:内联投影参数

PROJECTION
  "proj=latlong"
  "ellps=WGS84"
  "datum=WGS84"
END

示例4:EPSG投影使用

PROJECTION
   "init=epsg:4326"
END

“网络墨卡托”或“谷歌墨卡托”

常用的“Web”或“Google”墨卡托投影的EPSG代码是‘3857’。有关此坐标系的详细信息,请参见https://epsg.io/3857。这个代码也被非正式地称为 EPSG:900913 ;建议您使用官方 EPSG:3857 而应改用代码,例如:

PROJECTION
   "init=epsg:3857"
END

投影自动

以下语法可用于OGR连接、shapefile层或栅格层中:

PROJECTION
   AUTO
END
  • 如果是OGR连接,投影将从OGR层中检索。

  • 对于shapefile层,投影将从关联的.prj文件中检索。

  • 如果栅格图层包含单个栅格(数据关键字),则将从GDAL数据源检索投影。

  • 如果栅格层引用平铺索引(OGR层或shapefile tile index),则将根据上述描述规则检索投影。

  • 如果栅格图层引用具有各种投影中的栅格的切片索引,则 TILESRS 应该指定关键字来为相应的栅格选择适当的投影。看见 Tileindexes with tiles in different projections 了解更多详细信息。

备注

对于其他层类型,此语法无效。

指定要使用的EPSG文件

MAP CONFIG

MAP
  CONFIG "PROJ_LIB" "/usr/share/proj/"
  PROJECTION
    "init=epsg:3857"
  END # PROJECTION
  ...

CONFIG "PROJ_LIB" line comes before the PROJECTION 块。

重要音符

  • 如果映射文件中的所有数据都在同一投影中,则不必指定任何投影对象。MapServer将假定所有数据都在同一投影中。

  • 想到 MAP EXTENTUNITS MAP- 级别必须在输出投影单位中。另外,如果在其他投影(而不是 MAP- 水平投影)然后必须定义 PROJECTION

  • MAP- 水平投影,然后只有一个 LAYER 投影对象,mapserver将假定所有其他层都在指定的 MAP- 水平投影。

  • 总是以小写形式引用epsg文件,因为它是小写文件名,并且在Linux/Unix系统上,此参数区分大小写。

备注

如果您收到一条错误,如“ MsProjectRect():投影库错误。所有点重新投影失败 一定要确认您已经正确地设置了(地图级)输出投影和范围,以及每个层的投影块(它们的源投影)。

更多信息

  • 如果出现投影错误,请参阅 错误 检查是否讨论了您的准确错误。

  • 搜索MapServer用户 email list archives 很有可能有人以前就面临过你的确切问题。

  • PROJ 完整描述支持投影和坐标系的用户指南。

  • 阅读更多关于 Web Mercator projection .

  • 一位受人尊敬的地图投影作者是约翰·P·斯奈德,如果你想看印刷材料的话。

  • 要查找特定的EPSG投影代码,旧网站https://spatialreference.org/未维护,因此建议改为https://EPSG.io/。