maproxy根据需要创建所有平铺。为了提高常见请求区域的性能,可以预先生成这些切片。这个 mapproxy-seed
脚本执行此任务。
该工具可以为每个缓存设定一个或多个多边形或BBox区域。它可以播种丢失的切片并刷新旧切片。一 cleanup 可用于去除旧切片。
maproxy不逐级为切片金字塔排序,而是先遍历切片金字塔的深度。它从第一个缩放级别开始,通过检查每个字幕是否与覆盖范围相交来确定是否需要为下一个缩放级别中的分片播种。它递归地为下面的所有图块重复此步骤,直到达到种子的最后一个缩放级别。只有这样,在返回到父图块之前,图块实际上是播种的。
下面显示了为具有三个级别的简单缓存种子分片的顺序:
Level 0 with 1 tile:
21
Level 1 with 4 tiles:
5 10
15 20
Level 2 with 16 tiles:
1 2 6 7
3 4 8 9
11 12 16 17
13 14 18 19
此方法已优化为有效 with 您的操作系统和地理空间数据库的缓存,因为同一区域是直接连续多个比例请求的。
它还可以有效地对复杂的封面进行检查,因为字幕可以在早期被拒绝。
命令行脚本需要一个种子配置,该配置描述应该从哪个层生成哪些块。见 configuration 文件的格式。
-s
<seed.yaml>
,
--seed-conf
==<seed.yaml>
¶种子配置。还可以将配置作为最后一个参数传递给 mapproxy-seed
-f
<mapproxy.yaml>
,
--proxy-conf
=<mapproxy.yaml>
¶要使用的maproxy配置。这个文件应该描述种子配置引用的所有缓存和网格。
-c
N
,
--concurrency
N
¶并发种子工作者的数目。种子工具的某些部分是CPU密集型的(图像分割和编码),使用此选项将负载分布在多个CPU上。要限制对源WMS的并发请求,请参见 concurrent_requests
-n
,
--dry-run
¶这将模拟种子/清理过程,而无需请求、创建或移除任何块。
--summary
¶打印所有播种和清理任务的摘要并退出。
--quiet
¶减少进度记录器的输出。
-i
,
--interactive
¶打印每个播种和清理任务的摘要并询问 mapproxy-seed
应该设定/清除该任务。它将在开始前查询每个任务。
--seed
=<task1,task2,..>
¶只为指定的种子设定任务设定种子。可以使用逗号分隔名称列表选择多个任务,也可以使用 --seed
多次选择。你可以使用 ALL
选择所有任务。这将禁用所有清理任务,除非同时使用 --cleanup
选择权。
--cleanup
=<task1,task2,..>
¶仅清理命名任务。可以使用逗号分隔名称列表选择多个任务,也可以使用 --cleanup
多次选择。你可以使用 ALL
选择所有任务。这将禁用所有种子设定任务,除非同时使用 --seed
选择权。
--continue
¶继续中断的种子进程。如果进度文件 (--progress-file
)找不到。只有在上一个种子是用 --progress-file
或 --continue
选择权。
--progress-file
¶文件名,其中maproxy存储 --continue
选择权。默认为 .mapproxy_seed_progress
在当前工作目录中。mapproxy将在成功种子后删除该文件。
--duration
¶在此持续时间之后停止播种进程。此选项接受以下格式的持续时间:120s、15m、4h、0.5d将此选项与 --continue
恢复播种。仅适用于Linux和Unix系统。
--reseed-file
¶创建的文件 mapproxy-seed
在新播种开始时。
--reseed-interval
¶只有在以下情况下才开始播种 --reseed-file
比此持续时间早。此选项接受以下格式的持续时间:120s、15m、4h、0.5d将此选项与 --continue
恢复播种。默认情况下,
--use-cache-lock
¶锁定每个缓存以防止多个并行 mapproxy-seed 在同一缓存上工作的调用。它不会锁定maproxy的正常操作。
--log-config
¶要使用的日志配置文件。
1.5.0 新版功能: --continue
和 --progress-file
选项
1.7.0 新版功能: --log-config
选项
1.10.0 新版功能: --duration
, --reseed-file
和 --reseed-interval
选项
并发性为4的种子::
mapproxy-seed -f mapproxy.yaml -c 4 seed.yaml
打印所有种子任务的摘要并退出:
mapproxy-seed -f mapproxy.yaml -s seed.yaml --summary --seed ALL
以交互方式选择应为哪些任务设定种子::
mapproxy-seed -f mapproxy.yaml -s seed.yaml -i
为任务1和任务2设定种子,并同时为2清理任务3::
mapproxy-seed -f mapproxy.yaml -s seed.yaml -c 2 --seed task1,task2 \
--cleanup task3
注解
配置更改为maproxy 1.0.0,旧格式更改为 seeds
和 views
仍受支持,但将来将弃用。见 below 有关旧格式的信息。
配置是一个包含三个部分的yaml文件:
seeds
配置种子设定任务。
cleanups
配置清理任务。
coverages
配置播种和清理任务的覆盖范围。
seeds:
myseed1:
[...]
myseed2
[...]
cleanups:
mycleanup1:
[...]
mycleanup2:
[...]
coverages:
mycoverage1:
[...]
mycoverage2:
[...]
seeds
¶您可以在这里定义多个种子设定任务。任务定义 what 应该播种。每个任务都配置为一个字典,任务名称作为键。可以使用这些名称在命令行上选择单个任务 mapproxy-seed
.
mapproxy-seed
将始终依次处理一个切片金字塔。每个图块金字塔都由缓存和相应的网格定义。具有多个网格的缓存由多个平铺金字塔组成。您可以配置要用种子植入的平铺金字塔 caches
和 grids
选项。
您可以使用 levels
和 coverages
选项。
每个种子任务都采用以下选项:
caches
¶包含应为此任务设定种子的缓存的列表。这些名称应该与maproxy配置中的缓存名称匹配。
grids
¶一个列表,其中应为 caches
. 这些名称应该与maproxy配置中的网格名称匹配。此任务的所有缓存都需要支持您在此处指定的网格。默认情况下,将为所有配置的缓存共用的网格设定种子。
levels
¶应输入的级别列表,或带有 from
和 to
定义了一系列级别。你可以省略 from
从0级开始,或者可以省略 to
播种到最后一层。默认情况下,将为所有级别设定种子。
实例:
# seed multiple levels
levels: [2, 3, 4, 8, 9]
# seed a single level
levels: [3]
# seed from level 0 to 10 (including level 10)
levels:
to: 10
# seed from level 3 to 6 (including level 3 and 6)
levels:
from: 3
to: 6
coverages
¶包含覆盖范围名称的列表。将种子面积限制在覆盖范围内。默认情况下,网格的整个覆盖范围将被播种。
refresh_before
¶重新生成所有早于给定日期的切片。日期可以是绝对的,也可以是相对的。默认情况下,不会刷新现有的平铺。
maproxy还可以使用文件的最后修改时间。文件路径应该相对于代理配置或绝对路径。
实例:
# absolute as ISO time
refresh_before:
time: 2010-10-21T12:35:00
# relative from the start time of the seed process
refresh_before:
weeks: 1
days: 7
hours: 4
minutes: 15
# modification time of a given file
refresh_before:
mtime: path/to/file
seeds:
myseed1:
caches: [osm_cache]
coverages: [germany]
grids: [GLOBAL_MERCATOR]
levels:
to: 10
myseed2
caches: [osm_cache]
coverages: [niedersachsen, bremen, hamburg]
grids: [GLOBAL_MERCATOR]
refresh_before:
weeks: 3
levels:
from: 11
to: 15
cleanups
¶您可以在这里定义多个清理任务。每个任务都配置为一个字典,任务名称作为键。可以使用这些名称在命令行上选择单个任务 mapproxy-seed
.
caches
¶一个包含要在其中清除旧切片的缓存的列表。这些名称应该与maproxy配置中的缓存名称匹配。
grids
¶带有网格名称的列表 caches
要清理的位置。这些名称应该与maproxy配置中的网格名称匹配。此任务的所有缓存都需要支持您在此处指定的网格。默认情况下,将使用所有配置的缓存共用的网格。
levels
¶或者是应该清除的级别列表,或者是带有 from
和 to
定义了一系列级别。你可以省略 from
从0级开始,或者可以省略 to
清理到最后一层。默认情况下,将清除所有级别。
实例:
# cleanup multiple levels
levels: [2, 3, 4, 8, 9]
# cleanup a single level
levels: [3]
# cleanup from level 0 to 10 (including level 10)
levels:
to: 10
# cleanup from level 3 to 6 (including level 3 and 6)
levels:
from: 3
to: 6
coverages
¶包含覆盖范围名称的列表。将清理区域限制在覆盖范围内。默认情况下,网格的整个覆盖范围将被清除。
注解
当用大量切片(大于14)清理大覆盖层和水平面的缓存时要小心。没有 coverages
,种子工具在文件系统级别上工作,它只需要检查是否存在应删除的切片。用 coverages
种子工具遍历整个平铺金字塔,需要检查每个可能的平铺是否存在以及是否应该移除。这要慢得多。
remove_all
¶设置为“真”时,无论何时创建切片,都要删除所有切片。你仍然用 levels
和 coverage
选项。使用此选项,maproxy将尝试以更有效的方式删除图块。例如:它将删除 file
缓存而不是将每个图块与时间戳进行比较。
remove_before
¶删除所有早于给定日期的切片。日期可以是绝对的,也可以是相对的。 remove_before
默认为种子进程的开始时间,以便新创建的图块不会被删除。
maproxy还可以使用文件的最后修改时间。文件路径应该相对于代理配置或绝对路径。
实例:
# absolute as ISO time
remove_before:
time: 2010-10-21T12:35:00
# relative from the start time of the seed process
remove_before:
weeks: 1
days: 7
hours: 4
minutes: 15
# modification time of a given file
remove_before:
mtime: path/to/file
cleanups:
highres:
caches: [osm_cache]
grids: [GLOBAL_MERCATOR, GLOBAL_SPERICAL]
remove_before:
days: 14
levels:
from: 16
old_project:
caches: [osm_cache]
grids: [GLOBAL_MERCATOR]
coverages: [mypolygon]
levels:
from: 14
to: 18
coverages
¶有三种不同的方法来描述播种或清理任务的范围。
一个简单的矩形边界框,
具有一个或多个wkt格式多边形的文本文件,
任何数据源的多边形都可以用ogr读取(例如shapefile、geojson、postgis)
阅读 coverage documentation 更多信息。
注解
如果要使用多边形定义播种区域的地理范围,而不是简单的边界框,则需要安装其他依赖项。见 coverage documentation .
每个覆盖率都有一个名称,用于种子和清理任务配置中。如果没有为任务指定覆盖范围,则将使用网格的bbox。
coverages:
germany:
datasource: 'shps/world_boundaries_m.shp'
where: 'CNTRY_NAME = "Germany"'
srs: 'EPSG:900913'
switzerland:
datasource: 'polygons/SZ.txt'
srs: 'EPSG:900913'
austria:
bbox: [9.36, 46.33, 17.28, 49.09]
srs: 'EPSG:4326'
mapproxy-seed
打印出控制台上当前种子设定任务的进度。
进度日志示例:
[16:48:26] 4 41.00% 582388, 4734701, 586740, 4737666 (5812 tiles)
输出从当前时间开始,到目前为止已播种或移除的磁贴数结束。第三个值是以百分比表示的当前进度。如果种子设定检测到平铺及其所有副标题都超出种子设定覆盖范围,则进度可能会发生很大的跳跃。第二个和第四个值显示播种工具在此时刻所在的级别和边界框。记住,它不会一级一级地播种。这在 seeding method .
1.10.0 新版功能: 仅适用于Linux和Unix
这个 --duration
选项允许您在有限的时间内运行maproxy种子设定。与 --continue
选项,您可以稍后恢复播种过程。你可以用这个打电话 mapproxy-seed
具有 cron
在休息时间播种。
但是,这将在每次完成播种时从头开始重新启动播种过程。你可以用 --reeseed-interval
和 --reseed-file
选择权。下面的示例将开始播种6小时。每当您再次调用此命令时,它将再播种6个小时。处理完所有种子和清理任务后,每次在第一次调用后14天内调用该命令时,该命令将立即退出。14天后,修改时间 reseed.time
文件将被更新,重新播种过程将再次开始。
mapproxy-seed -f mapproxy.yaml -s seed.yaml \
--reseed-interval 14d --duration 6h --reseed-file reseed.time \
--continue --progress-file .mapproxy_seed_progress
你可以使用 --reseed-file
作为一个 refresh_before
和 remove_before
mtime
-文件。
注解
以下描述适用于旧的种子配置。
配置包含两个键: views
和 seeds
. views
描述应播种的地理范围。 seeds
将实际层与这些层链接起来 views
.
包含带有层/视图映射的字典。::
seeds:
cache1:
views: ['world', 'germany', 'oldb']
cache2:
views: ['world', 'germany']
remove_before:
time: '2009-04-01T14:45:00'
# or
minutes: 15
hours: 4
days: 9
weeks: 8
如果存在,请重新创建早于日期或时间增量的切片。播种过程结束时,所有旧的切片都将被移除。
您可以定义固定时间或时间增量。这个 time 是一个类似于ISO的日期字符串(没有时区,没有缩写)。要定义时间增量,请使用一个或多个 seconds , minutes , hours , days 或 weeks 条目。
包含包含所有视图的字典。每个视图都描述了覆盖范围/地理范围以及应该播种的级别。
注解
如果要使用多边形定义播种区域的地理范围,而不是简单的边界框,则需要安装其他依赖项。见 coverage documentation .
有三种不同的方法来描述种子视图的范围。
一个简单的矩形边界框,
具有一个或多个wkt格式多边形的文本文件,
任何数据源中的多边形都可以用ogr读取(例如shapefile、postgis)
阅读 coverage documentation 更多信息。
srs
:带有SRS的列表。如果层包含多个SRS的缓存,则只会为与此列表中某个SRS匹配的缓存设定种子。
res
:在缓存此解决方案之前进行种子设定。
或
level
:缓存该层之前的数字,或具有应缓存的级别范围的元组。
views:
germany:
datasource: 'shps/world_boundaries_m.shp'
where: 'CNTRY_NAME = "Germany"'
srs: 'EPSG:900913'
level: [0, 14]
srs: ['EPSG:900913', 'EPSG:4326']
switzerland:
datasource: 'polygons/SZ.txt'
srs: EPSG:900913
level: [0, 14]
srs: ['EPSG:900913']
austria:
bbox: [9.36, 46.33, 17.28, 49.09]
srs: EPSG:4326
level: [0, 14]
srs: ['EPSG:900913']
seeds:
osm:
views: ['germany', 'switzerland', 'austria']
remove_before:
time: '2010-02-20T16:00:00'
osm_roads:
views: ['germany']
remove_before:
days: 30