我如何像使用地理服务器一样从地图服务器获取 wms-Layer?

How I can get a wms-Layer from mapserver like we do with a geoserver?

我的问题不是很清楚,但我会尝试解释一下。例如,当我们从 Qgis 中的地理服务器调用 wms 层时,我们写 http://adresse/geoserver/wms?我们找到了我们已经发布的所有图层。我想做同样的事情:写一个 mapserver_adresse 并获取我用 mapserver 发布的图层(我不想在地址中写 mapfile 名称)。 . 有可能吗?我应该从哪里开始?谢谢

您必须在与可执行 mapserv 相同的位置编写脚本。在此脚本中,您设置变量 MS_MAPFILE=/path/your/mapfile 然后执行 mapserv.

在 Linux 上看起来是这样的:

#! /bin/bash
export MS_MAPFILE=/path/your/mapfile
./mapserv

不要忘记#! /bin/bash,否则mapserver将拒绝工作

将此脚本保存在与 mapserv 相同的位置并使其可执行,即:

chmod +x /usr/lib/cgi-bin/your_script 

现在你可以在 qgis 中将其用作 wms 服务器,地址为:

http://address/cgi-bin/your_script?

如果你也想隐藏 "cgi-bin" 部分,可以用 apache 来实现。

另请参阅 mapserver 可识别的所有其他环境变量:

https://trac.osgeo.org/mapserver/wiki/EnvironmentVariables

在 Windows 上使用 Apache,您可以使用 SetEnvIf 指令执行相同的操作,例如:

SetEnvIf Request_URI "/cgi-bin/exemplars/BGS_Bedrock_Geology/wms" MS_map file=/ms4w/apps/cookbookExemplars/BGS_Bedrock_Raster_Map/onegeology.map