【MapServer 第1节】 MapServer简介

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

1、MapServer简介

1.1、MapServer 概述

MapServer是一个流行的开源项目,其目的是显示互联网上的动态空间地图。它的一些主要特点 包括:

  • 支持数百个栅格、矢量和数据库的显示和查询 格式

  • 能够在各种作系统(Windows、Linux、Mac OS X 等)上运行

  • 支持流行的脚本语言和开发环境 (PHP、Python、Perl、Ruby、Java、.NET)

  • 动态投影

  • 高质量渲染

  • 完全可定制的应用程序输出

  • 许多即用型开源应用程序环境

在最基本的形式中,MapServer 是一个处于非活动状态的 CGI 程序 在您的 Web 服务器上。当请求发送到 MapServer 时,它会使用信息 传递请求 URL 和 Mapfile 以创建图像 请求的地图。请求还可能返回图例、比例的图像 条形图、参考贴图和作为 CGI 变量传递的值。

1.2、MapServer 应用程序剖析

一个简单的 MapServer 应用程序包括:Map File、地理数据、HTML 页面、MapServer CGI、Web/HTTP 服务器
MapServer基本框架

  • Map File - MapServer 的结构化文本配置文件 应用。它定义了地图的区域,告诉 MapServer 程序 您的数据在哪里以及输出图像的位置。它还定义了您的地图 图层,包括其数据源、投影和符号系统。 它必须具有 .map 扩展名,否则 MapServer 将无法识别它。

      另请参见 MapServer Mapfile 参考
    
  • 地理数据 - MapServer 可以利用许多地理数据源类型。 默认格式是 ESRI 形状格式。许多其他数据格式可以是 支持,这将在下面的向站点添加数据中进一步讨论。

      另请参阅矢量输入参考和栅格输入 参考
    
  • HTML 页面 - 用户和 MapServer 之间的界面。 它们通常位于 Web 根目录中。在最简单的形式中,MapServer 可以 被调用以在 HTML 页面上放置静态地图图像。要使 map interactive 时,图像将以 HTML 表单放置在页面上。

    CGI 程序是“无状态”的,它们收到的每个请求都是新的 他们不记得上次是什么时候了 被您的应用程序击中。因此,每次您的 应用程序向 MapServer 发送请求,它需要传递上下文信息(在哪些图层上,您在地图上的位置, 应用模式等)隐藏的表单变量或 URL 变量。

    一个简单的 MapServer CGI 应用程序可能包括2个HTML 页面

    • 初始化文件 - 使用带有隐藏变量的表单发送初始查询到 Web 服务器和
      MapServer。此表单可以放置在在另一个页面上,或通过传递初始化信息来替换作为 URL 中的变量。

    • 模板文件 - 控制地图和图例输出的方式MapServer 将出现在浏览器中。通过引用 MapServerCGI 变量,您可以允许MapServer使用与当前状态相关的值填充它们应用程序(例如地图图像名称、参考图像名称、地图范围等)因为它为浏览器创建 HTML 页面以读。 该模板还决定了用户如何与MapServer 应用程序(浏览、缩放、平移、查询)交互。
      另请参阅模板

  • MapServer CGI - 接收请求和返回图像、数据等的二进制文件或可执行文件。它位于Web 服务器的 cgi-bin 或 scripts 目录中。Web 服务器用户必须具有它所在的目录,并且出于安全原因,它不应位于Web 根目录中。默认情况下,此程序称为 mapserv

    注意:强烈建议查看对 MapServer 可执行文件的 MAP= 调用的安全步骤,方法是在公共服务器上设置
    MS_MAP_PATTERN 或 MS_MAP_NO_PATH 或隐藏 MAP= 参数,按照文档 限制映射文件访问
    中的建议。所有可能的环境变量中列出了保护服务器的环境变量。

  • Web/HTTP 服务器 - 当被 用户的浏览器。您需要一个正常工作的 Web (HTTP) 服务器,例如 Apache 或 Microsoft Internet 信息服务器,在要安装的计算机上 MapServer 的 MapServer 中。

2、MapServer依赖

MapServer遵循OGC系列规范,可以集成PostGIS和开源数据库PostgreSQL,并对地理空间数据进行存储和SQL查询,基于ka-map、MapLab、Caroweb、Chameleon等一系列客户端JAVASCRIPT API,支持地理空间数据的传输和表达,并遵循OGC规范制定的一系列WMS、WFS、WCS、WMC、SLD、GML和Filter编码。
在这里插入图片描述
MapServer的核心部分是用C语言编写的地图操作模块,MapServer本身的许多功能的实现都依赖于一些开源或自由库,如Shapelib、FreeType、Proj.4、GDAL/OGR、GD库、Regex。

GD
GD是一个图像库。由于MapServer使用GD进行图像渲染,因此必须安装它。GD有自己的依赖类库,包括zlib、libpng、FreeType2.x和libJPEG。这些类型使GD能够执行图像压缩(对于支持的数据)、渲染PNG图像、使用TrueType字体以及渲染JPEG图像。由于GIF上的许可证已经过期,所以现在也可以使用了。
#在MapServer7.0中已删除了对GD的支持。

FreeType
FreeType是一个字体渲染引擎。它不被MapServer直接引用,但被GD用来呈现字体。由于TrueType比Mapserver提供的位图字体更吸引人,因此值得包含这个类库。

LibPNG
LibPNG使MapServer能够渲染JPEG图像。自2001年以来,一个新的版本已经发布。一般来说,这个库应该已经安装在机器上了。如果没有,可自行安装。Libpng使用MapServer来渲染PNG图像。它不是由MapServer直接使用,而是由GD使用。Libpng需要库zlib。

Zlib
Zlib是GD使用的数据压缩库。

GDAL
GDAL是用于栅格数据的转换类库。它提供具有地理投影的栅格图像的导入和投影,将不会在本书中使用这些功能,但这个库是安装Basic MapServer所必需的。

OGR
OGR库提供了读写一些矢量格式的能力。在本书中,将使用OGR提供的一些功能。

Proj.4
Proj.4是一个用于地图投影的程序。它可以由MapServer调用,也可以单独投影到整个数据库上。

Shapelib
Shapelib是一个C程序,用于生成和处理形状文件,可使用这个类库提供的有用工具,而不必自己编写任何C代码。它具有生成Shape文件(包括DBF文件)、销毁Shape文件和DBF文件以及更改Shape文件的投影的内容。其中一些功能基于Proj.4。

Libcurl
Libcurl是一个客户端库,支持FTP、FTPS、HTTP、HTTPS、Gopher、Telnet、Dict、文件和LDAPURL转换。如果要提供WMS支持,则需要此库。WMS协议用于在网络上传输地图图像和文件数据。为了保持地图服务器环境的简单,因此不必安装。

SDE客户端库
SDE客户端库是ESRI空间数据仓库的一部分。如果希望MapServer访问它,则需要编译该库。

3、MapServer使用前准备

使用该教程前需具备以下先决条件

  • 1、建议本教程的用户在继续学习之前,先阅读 MapServer 简介
  • 2、用户需在计算机上安装并运行一个支持通用网关接口(CGI)程序的网络服务器
  • 3、要使用本教程,用户需在其系统中安装 MapServer CGI 程序(mapserv 或 mapserv.exe)。MapServer的源代码:https://www.mapserver.org/download.html#download 编译和安装MapServer:https://www.mapserver.org/installation/unix.html#unix
  • 4、用户应具备对网络服务器及互联网安全的基本认知。配置不当的服务器极易成为恶意攻击的目标。轻则软件安装损坏,导致数小时工作效率的损失;重则您的计算机可能被利用来攻击互联网上的其他计算机。

现在准备好以上条件以后,我们就可以开始探索MapServer了,下一节我们将对MapServer的安装进行展示。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值