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可减小现有捆绑文件的文件大小。