1.2.0 新版功能.
maproxy支持多个后端来存储内部切片。默认的后端是基于文件的,不需要任何进一步的配置。
您可以使用配置每个缓存的后端 cache 选择权。每个后端都有一个 type 以及一个或多个选项。
caches:
mycache:
sources: [...]
grids: [...]
cache:
type: backendtype
backendoption1: value
backendoption2: value
以下后端类型可用。
file¶这是默认的缓存类型,它为每个图块使用一个文件。可用选项包括:
directory_layout :maproxy用于在磁盘上存储分片的目录布局。默认为 tc 它使用与tilecache兼容的目录布局 (zz/xxx/xxx/xxx/yyy/yyy/yyy.format ) mp 使用嵌套较少的目录布局 (zz/xxxx/xxxx/yyyy/yyyy.format ''。 tms 使用TMS兼容目录 (zz/xxxx/yyyy.format ) quadkey 使用与Microsoft Virtual Earth或QuadKey兼容的目录(请参阅http://msdn.microsoft.com/en-us/library/bb259689.aspx)。 arcgis 使用与Arcgis分解缓存兼容的十六进制行和列号的目录布局 (Lzz/Rxxxxxxxx/Cyyyyyyyy.format )
注解
tms , quadkey 和 arcgis 布局不适合大型缓存,因为它将创建包含数千个文件的目录,而大多数文件系统处理不好。
use_grid_names :什么时候? true maproxy将在路径中使用实际的网格名称,而不是SRS代码。例如,切片将储存在 ./cache_data/mylayer/mygrid/ 而不是 ./cache_data/mylayer/EPSG1234/ .
1.5.0 新版功能.
directory :mapproxy应该直接存储tiles的目录。这不会添加缓存名称或网格名称 (use_grid_name 去那条小路。您可以使用此选项将maproxy指向现有的图块集合(创建时使用 gdal2tiles 例如)。
1.5.0 新版功能.
tile_lock_dir :当maproxy为这个缓存创建新的块时,它应该在其中写入锁文件的目录。默认为 cache_data/tile_locks .
1.6.0 新版功能.
mbtiles¶对此缓存使用单个sqlite文件。它使用 MBTile specification .
可用选项:
filename :mbtiles文件的路径。默认为 cachename.mbtiles .
tile_lock_dir :当maproxy为这个缓存创建新的块时,它应该在其中写入锁文件的目录。默认为 cache_data/tile_locks .
1.6.0 新版功能.
您可以设置 sources 如果使用现有mbtiles文件且没有源,则返回空列表。
caches:
mbtiles_cache:
sources: []
grids: [GLOBAL_MERCATOR]
cache:
type: mbtiles
filename: /path/to/bluemarble.mbtiles
注解
mbtiles格式规范不包括每个tile的任何时间戳,因此种子设定功能受到限制。如果你有 refresh_before 在种子任务中,无论值如何,都将重新创建所有分片。清理过程不支持任何 remove_before mbtiles的时间,它总是移除所有的tiles。使用 --summary 选择权 mapproxy-seed 工具。
关于笔记 bulk_meta_tiles 对于sqlite,下面也适用于mbtiles。
sqlite¶1.6.0 新版功能.
使用sqlite数据库存储切片,类似于 mbtiles 隐藏物。不同于 mbtiles 缓存是指 sqlite 缓存将每个级别存储到单独的数据库中。这使得在maproxy种子清理过程中很容易删除完整级别。这个 sqlite 缓存还存储每个图块的时间戳。
可用选项:
dirname :存储级别数据库的目录。
tile_lock_dir :当maproxy为这个缓存创建新的块时,它应该在其中写入锁文件的目录。默认为 cache_data/tile_locks .
1.6.0 新版功能.
caches:
sqlite_cache:
sources: [mywms]
grids: [GLOBAL_MERCATOR]
cache:
type: sqlite
directory: /path/to/cache
注解
1.10.0 新版功能.
meta-tile请求中的所有tile都存储在一个事务中到sqlite文件中,以提高性能。你需要激活 bulk_meta_tiles 当您使用平铺源时,可以获得相同的好处。
caches:
sqlite_cache:
sources: [mytilesource]
bulk_meta_tiles: true
grids: [GLOBAL_MERCATOR]
cache:
type: sqlite
directory: /path/to/cache
couchdb¶1.3.0 新版功能.
将切片存储在 CouchDB . maproxy为每个图块创建一个JSON文档。此文档包含元数据,如时间戳,以及作为附件的图块图像本身。
除了跑步俱乐部,你还需要 Python requests package . 例如,您可以按常规方式安装 pip install requests .
您可以配置数据库和数据库名称、图块ID以及其他元数据。
可用选项:
url :CouchDB服务器的URL。默认为 http://localhost:5984 .
db_name :MapProxy用于此缓存的数据库名称。默认为缓存的名称。
tile_lock_dir :当maproxy为这个缓存创建新的块时,它应该在其中写入锁文件的目录。默认为 cache_data/tile_locks .
1.6.0 新版功能.
tile_id :每个tile文档都需要一个唯一的ID。您可以使用需要以下键的python格式字符串更改格式:
x , y , z :切片坐标。
grid_name :网格的名称。
默认ID使用以下格式:
%(grid_name)s-%(z)d-%(x)d-%(y)d
注解
你不能用斜线 (/ )在CouchDB ID中。
tile_metadata :mapproxy为couchdb中的每个tile存储一个JSON文档,您可以向每个文档添加带有元数据的额外键值对。maproxy将用依赖于图块的值替换一些预定义值,所有其他值都将按原样添加。
预定义值:
{{{{x}}}} , {{{{y}}}} , {{{{z}}}} :切片坐标。
{{{{timestamp}}}} :切片的创建时间,以从纪元开始的秒为单位。maproxy将添加 timestamp 如果不提供自定义时间戳密钥,则为您提供密钥。
{{{{utc_iso}}}} :以ISO格式的UTC格式创建磁贴的时间。例如: 2011-12-31T23:59:59Z .
{{{{tile_centroid}}}} :缓存坐标系中切片的中心坐标,作为长/lat或x/y值的列表。
{{{{wgs_tile_centroid}}}} :wgs 84中切片的中心坐标,作为长/lat值的列表。
caches:
mycouchdbcache:
sources: [mywms]
grids: [mygrid]
cache:
type: couchdb
url: http://localhost:9999
db_name: mywms_tiles
tile_metadata:
mydata: myvalue
tile_col: '{{x}}'
tile_row: '{{y}}'
tile_level: '{{z}}'
created_ts: '{{timestamp}}'
created: '{{utc_iso}}'
center: '{{wgs_tile_centroid}}'
maproxy将把tile z=3,x=1,y=2的json文档放在 http://localhost:9999/mywms_tiles/mygrid-3-1-2 . 文档将如下所示:
{
"_attachments": {
"tile": {
"content_type": "image/png",
"digest": "md5-ch4j5Piov6a5FlAZtwPVhQ==",
"length": 921,
"revpos": 2,
"stub": true
}
},
"_id": "mygrid-3-1-2",
"_rev": "2-9932acafd060e10bc0db23231574f933",
"center": [
-112.5,
-55.7765730186677
],
"created": "2011-12-15T12:56:21Z",
"created_ts": 1323953781.531889,
"mydata": "myvalue",
"tile_col": 1,
"tile_level": 3,
"tile_row": 2
}
这个 _attachments -部分是couchdb的内部结构,其中存储了tile本身。您可以通过以下地址直接访问此互动程序: http://localhost:9999/mywms_tiles/mygrid-3-1-2/tile .
riak¶1.6.0 新版功能.
将切片存储在 Riak 集群。maproxy使用二进制数据作为值,时间戳作为用户定义的元数据创建键。这个后端非常适合于可以分布在多个节点上的大型缓存。数据可以分布在多个节点上,提供故障Tolernt和高可用存储。RIAK集群是无主的,每个节点都可以处理读写请求。
你需要 Python Riak client 2.4.2版或更高版本。您可以按常规方式安装它,例如 pip install riak==2.4.2 . 旧版本的环境必须升级为 pip install -U riak==2.4.2 . python库依赖于包 python-dev , libffi-dev 和 libssl-dev .
可用选项:
nodes :RIAK节点列表。每个节点都需要 host 以及可选的 pb_port 和一个 http_port 如果端口与默认端口不同。默认为单个本地主机节点。
protocol :通信协议。允许的选项是 http , https 和 pbc .默认为 pbc .
bucket :mapproxy用于此缓存的bucket的名称。bucket是tiles的名称空间,对于每个缓存都必须是唯一的。默认为缓存名称后缀为网格名称(例如 mycache_webmercator )
default_ports :违约 pb 和 http 端口用于 pbc 和 http 协议。将用作每个已定义节点的默认值。
secondary_index :如果 true 为磁贴启用辅助索引。这提高了种子清理性能,但要求RIAK使用leveldb作为后端。请参阅RIAK文档。默认为 false .
myriakcache:
sources: [mywms]
grids: [mygrid]
cache:
type: riak
nodes:
- host: 1.example.org
pb_port: 9999
- host: 1.example.org
- host: 1.example.org
protocol: pbc
bucket: myriakcachetiles
default_ports:
pb: 8087
http: 8098
redis¶1.10.0 新版功能.
将切片存储在 Redis 内存数据库。这个后端对于短期缓存很有用。典型的用例是一个小的redis缓存,它允许您从元平铺中获益。
您的redis数据库应该配置为 maxmemory 和 maxmemory-policy 用于限制内存使用的选项。例如::
maxmemory 256mb
maxmemory-policy volatile-ttl
你需要 Python Redis client . 您可以按常规方式安装它,例如 pip install redis .
可用选项:
host :redis服务器的主机名。默认为 127.0.0.1 .
port :Redis服务器的端口。默认为 6379 .
db :Redis数据库的编号。请参阅Redis文档。默认为 0 .
prefix :添加到redis缓存中每个tile键的前缀。用于区分不同缓存和网格的切片。默认为 cache-name_grid-name .
default_ttl :redis缓存中每个图块的默认生存时间(秒)。默认为3600秒(1小时)。
redis_cache:
sources: [mywms]
grids: [mygrid]
cache:
type: redis
default_ttl: 600
geopackage¶1.10.0 新版功能.
将切片存储在 geopackage 数据库。如果未定义图块表,则maproxy将创建图块表,并填充所需的元数据字段。这个后端适合需要可移植性的数据集。可用选项:
filename :地理包文件的路径。默认为 cachename.gpkg .
table_name :应在其中存储磁贴的表的名称(如果使用现有缓存,则检索)。默认为 cachename_gridname .
levels :将此值设置为true以缓存到每个级别存储在单独地理包中的目录。默认为 false . 如果设置为真, filename 被忽略。
directory :如果级别为真,则使用此选项指定存储地理包文件的目录。
您可以设置 sources 如果使用现有的地理包文件并且没有源,则返回空列表。
caches:
geopackage_cache:
sources: []
grids: [GLOBAL_MERCATOR]
cache:
type: geopackage
filename: /path/to/bluemarble.gpkg
table_name: bluemarble_tiles
注解
地理包格式规范不包括每个图块的任何时间戳,因此播种功能受到限制。如果你有 refresh_before 在种子任务中,无论值如何,都将重新创建所有分片。清理过程不支持任何 remove_before 地理包装的时间,它总是移除所有切片。使用 --summary 选择权 mapproxy-seed 工具。
s3¶1.10.0 新版功能.
1.11.0 新版功能: region_name, endpoint_url and access_control_list
将切片存储在 Amazon Simple Storage Service (S3) 或任何其他S3兼容的对象存储。
可用选项:
bucket_name :用于此缓存的存储桶。您可以使用 globals.cache.s3.bucket_name .
profile_name :的可选配置文件名 shared credentials 对于这个缓存。认证的替代方法是 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量,或使用 IAM role 使用AmazonEC2实例时。您可以使用 globals.cache.s3.profile_name .
region_name :区域的可选名称。您可以使用 globals.cache.s3.region_name
endpoint_url :S3的可选终结点URL。您可以使用 globals.cache.s3.endpoint_url .
access_control_list :S3的可选访问控制列表。您可以使用设置默认访问控制列表 globals.cache.s3.access_control_list .
directory :存储所有磁贴的基本目录(路径)。
directory_layout :定义图块的目录布局 (12/12345/67890.png , L12/R00010932/C00003039.png 等)。见 file 有关可用选项。默认为 tms (例如) 12/12345/67890.png )此缓存也支持 reverse_tms 切片作为 y/x/z.format . 见 note 下面。
注解
等级制度 directory_layouts 可以达到S3的限制 “如果您经常每秒处理100个或更多请求” . directory_layout: reverse_tms 可以绕过这个限制。请阅读 S3 Request Rate and Performance Considerations 有关此问题的详细信息。
cache:
my_layer_20110501_epsg_4326_cache_out:
sources: [my_layer_20110501_cache]
cache:
type: s3
directory: /1.0.0/my_layer/default/20110501/4326/
bucket_name: my-s3-tiles-cache
globals:
cache:
s3:
profile_name: default
cache:
my_layer_20110501_epsg_4326_cache_out:
sources: [my_layer_20110501_cache]
cache:
type: s3
directory: /1.0.0/my_layer/default/20110501/4326/
bucket_name: my-s3-tiles-cache
globals:
cache:
s3:
profile_name: default
region_name: nyc3
endpoint_url: https://nyc3.digitaloceanspaces.com
access_control_list: public-read
compact¶1.10.0 新版功能: 支持格式版本1
1.11.0 新版功能: 支持格式版本2
将图块存储在与Arcgis兼容的压缩缓存文件中。单个压缩缓存 .bundle 文件最多可存储16000个磁贴。
Compact缓存格式的版本1与Arcgis 10.0和默认版本Arcgis 10.0-10.2兼容。版本2由ARCGIS 10.3或更高版本支持。版本1存储是另外一个 .bundlx 每个的索引文件 .bundle 数据文件。
可用选项:
directory :mapproxy应存储级别目录的目录。这不会将缓存名称或网格名称添加到路径中。可以使用此选项将maproxy指向现有的压缩缓存。
version :Arcgis Compact缓存格式的版本。此选项是必需的。要么 1 或 2 .
您可以设置 sources 如果使用现有的压缩缓存文件并且没有源,则返回空列表。
以下配置将从 /path/to/cache/L00/R0000C0000.bundle 等。
caches:
compact_cache:
sources: []
grids: [webmercator]
cache:
type: compact
version: 2
directory: /path/to/cache
注解
maproxy不支持 conf.cdi 和 conf.xml 文件夹。当您想在maproxy中重用现有的arcgis压缩缓存时,需要配置兼容的maproxy网格。您需要创建或修改现有 conf.cdi 和 conf.xml 当您想使用在Arcgis中使用maproxy创建的压缩缓存时,可以使用文件。
注解
压缩缓存格式不包括每个图块的任何时间戳,因此种子设定功能受到限制。如果你有 refresh_before 在种子任务中,无论值如何,都将重新创建所有分片。清理过程不支持任何 remove_before 压缩缓存的时间,它总是移除所有的图块。使用 --summary 选择权 mapproxy-seed 工具。
注解
压缩缓存格式是附加的,只允许并行读写操作。移除或刷新切片 mapproxy-seed 不会减小缓存文件的大小。你可以使用 defrag-compact-cache util可减小现有捆绑文件的文件大小。