MapProxy安装与使用

MapProxy 是 WMS 网页地图服务与切片服务提供者的瑞士军刀。它对已有服务的数据服务进行缓存、加速和转换,服务任何支持 OGC 标准的桌面与网页客户端。

MapProxy 安装

目前 MapProxy 已经在 Debian/Ubuntu 官方源中,可以通过 apt 命令进行安装。

若要使用较新的版本,则可以建立 Python 虚拟环境, 然后通过 pip 命令安装。

MapProxy1.11.0安装:参考官方帮助 创建Python的虚拟环境

安装依赖项

sudo apt install python-imaging python-yaml libproj9


sudo apt install libgeos-dev python-lxml libgdal-dev python-shapely

关于依赖的类库,libproj, Proj4是一个坐标系转换的库;Pillow,Pillow(PIL)是一个图像处理的库。

安装

pip install PyYAML

Shapely and GEOS(可选)

You will need Shapely to use the coverage feature of MapProxy. Shapely offers Python bindings for the GEOS library. You need Shapely (python-shapely) and GEOS (libgeos-dev). You can install Shapely as a Python package with pip install Shapely if you system does not provide a recent (>= 1.2.0) version of Shapely.

GDAL(可选)

The coverage feature allows you to read geometries from OGR datasources (Shapefiles, PostGIS, etc.). This package is optional and only required for OGR datasource support (BBOX, WKT and GeoJSON coverages are supported natively). OGR is part of GDAL (libgdal-dev).

lxml(可选)

lxml is used for more advanced WMS FeatureInformation operations like XSL transformation or the concatenation of multiple XML/HTML documents. It is available as python-lxml.

安装MapProxy

pip install MapProxy

检查安装是否成功,可使用如下命令

mapproxy-util --version

创建MapProxy的配置文件:

mapproxy-util create -t base-config mymapproxy

这句命令会创建一个名叫mymapproxy的文件夹,里面包含一个最小的示例配置(mapproxy.yamlseed.yaml),以及两个完成的示例配置文件(full_example.yaml and full_seed_example.yaml)。

启动测试服务

cd mymapproxy
mapproxy-util serve-develop mapproxy.yaml

按指定端口启动服务

mapproxy-util serve-develop ~/mapproxy/mapproxy.yaml -b 0.0.0.0:8011

MapProxy附带一个演示服务,列出所有已配置的WMS和TMS图层。可以通过访问http://localhost:8080/demo/访问那个服务。

使用

然后根据教程配置 mapproxy.yaml文件 ,下面是介绍一下配置文件的组成 部分。在测试过程中,只使用了mapproxy.yaml的配置。

mapproxy.yaml和seed.yaml

mapproxy.yaml:主要配置文件,配置服务的所有部分,比如那些服务需要启动,数据来自哪里,那些需要缓存

mapproxy-seed mapproxy创建所有需要的图片,为了 提高请求速度,这个 工具可以缓存一个或多个多边形区域 。

配置文件使用 YAML 格式,mapproxy.yaml 主要包含下面这些部分:

globals : 设置默认 值,全局 变量,可以 在其他配置部分使用。

services : MapProxy 提供 的服务,比如jWMS或者TMS。

sources : 定义在哪里MapProxy可以取到新的数据集。

caches : 配置 内部 缓存

layers : 配置MapProxy提供的图层,每一个图层都可以包含多个数据源sources和缓存caches。

grids : 定义MapProxy使用 的网格来排列缓存图片

注意,要保持格式,不能使用 tab键,而 只能用空格键。

配置文件的内容贴出如下,代码是这样的:

services:
   tms:
     use_grid_names: true 
layers:
   - name: my_layer
     title: WMS layer from tiles HiFleet
     sources: [mycache]
caches:
   mycache:
     grids: [webmercator]
     sources: [my_tile_source]
sources:
   my_tile_source:
     type: tile
     url: url.png 
grids:
 webmercator:
   base: GLOBAL_WEBMERCATOR 
   srs: 'EPSG:3857'

这种实例,可以使用 LeafLetJS, 或 OpenLayers 进行访问测试。

贴出 OpenLayers 的代码如下:

var raster = new ol.layer.Tile({
        source: new ol.source.XYZ({
url:'http://localhost:8080/tms/1.0.0/my_layer/webmercator/.png'
        }),
opacity: 1,
visible:false
    });