Repository navigation
Expand file tree
/
Copy pathconfig.py
More file actions
79 lines (64 loc) · 2.41 KB
/
Copy pathconfig.py
File metadata and controls
79 lines (64 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
"""
配置文件
"""
import os
from pathlib import Path
from enum import Enum
class LayerType(str, Enum):
"""底图类型"""
VEC = "vec" # 矢量底图
CVA = "cva" # 矢量注记
IMG = "img" # 影像底图
CIA = "cia" # 影像注记
TER = "ter" # 地形晕渲
CTA = "cta" # 地形注记
IBO = "ibo" # 全球境界
class Projection(str, Enum):
"""投影方式(仅支持球面墨卡托)"""
W = "w" # 球面墨卡托(Web Mercator,EPSG:3857)
def build_url_template(layer_type: LayerType, projection: Projection) -> str:
"""
构建天地图 URL 模板
Args:
layer_type: 底图类型
projection: 投影方式
Returns:
URL 模板字符串
"""
base_url = f"http://t0.tianditu.gov.cn/{layer_type.value}_{projection.value}/wmts?"
return (
f"{base_url}"
"SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0"
f"&LAYER={layer_type.value}&STYLE=default&TILEMATRIXSET={projection.value}&FORMAT=tiles"
"&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}"
"&tk={tk}"
)
# 默认配置
DEFAULT_LAYER_TYPE = LayerType.VEC
DEFAULT_PROJECTION = Projection.W
URL_TEMPLATE = build_url_template(DEFAULT_LAYER_TYPE, DEFAULT_PROJECTION)
TOKENS = [
"e088d1fa90a60539c761c283a401e4c8",
"b7f5aeb052495651730af20d749ac16f",
"5e2141611fa5c77c053113fc226602b3",
"ad0d8d2d998710574e9fe9f37581b8cf",
]
# 下载配置
MAX_REQ_PER_TOKEN = 10_000 # 每个 token 最多请求次数
# 统一输出根目录:
# 1. 优先读取环境变量 TILES_OUT_DIR(可设置为绝对路径或相对路径)
# 2. 如果未设置环境变量,则使用默认目录 "D:/test"
_OUT_DIR_FROM_ENV = os.getenv("TILES_OUT_DIR")
OUT_DIR = Path(_OUT_DIR_FROM_ENV) if _OUT_DIR_FROM_ENV else Path(r"D:\test")
MAX_WORKERS = 8 # 并发线程数(建议 4~10)
RETRIES = 4 # 失败重试次数
TIMEOUT = 15 # 超时
SLEEP_JITTER = (0.03, 0.15) # 抖动间隔,降低被限流概率
DOWNLOAD_ALL_TILES_ZOOM_LEVELS = [1, 2, 3] # 默认下载全部瓦片的层级(空列表=禁用;这些层级会忽略地理范围,下载该层级全球瓦片)
HEADERS = {
"User-Agent": "Mozilla/5.0 (TileDownloader/1.0)",
"Accept": "*/*",
"Connection": "keep-alive",
# 如遇 Referer 校验再加:
# "Referer": "https://www.tianditu.gov.cn/",
}