data.amap_loader

高德地图 API 封装:POI 搜索、营业时间解析、驾车路径规划与成本矩阵构建。

Attributes

_MIDDLE_DOTS

Functions

normalize_text(→ str)

全角→半角 + 空白压缩 + 中点符号归一化,用于名称匹配。

_parse_date(→ datetime.date | None)

解析高德营业时间中的日期段,如 '04月01日' → datetime.date。成功返回 date,失败返回 None。

_parse_opentime_to_tw(→ tuple[int, int] | None)

解析高德营业时间字符串为时间窗元组。

get_poi_details(→ tuple[float, float, str, str, str, ...)

获取 POI 详细信息(坐标 + 营业时间 + 地址 + 省/市名 + 实际名称 + 行业分类)。

_get_driving_data(origin, destination[, max_retries])

调用高德驾车路径规划 API 获取距离、耗时、轨迹折线。

build_real_data(poi_names, coords[, delay])

调用高德 API 构建完整的驾车成本矩阵。

Module Contents

data.amap_loader._MIDDLE_DOTS
data.amap_loader.normalize_text(text: str) str

全角→半角 + 空白压缩 + 中点符号归一化,用于名称匹配。

用户输入与高德返回的名称常有空格/中点符号的细微差异, 归一化后做双向子串匹配,提高酒店/景点名称匹配成功率。

data.amap_loader._parse_date(date_str: str, year: int) datetime.date | None

解析高德营业时间中的日期段,如 '04月01日' → datetime.date。成功返回 date,失败返回 None。

data.amap_loader._parse_opentime_to_tw(opentime_str: str) tuple[int, int] | None

解析高德营业时间字符串为时间窗元组。

支持格式:'月-日:时段-时段'(如 "6-1:09:00-22:00"), 以及跨日期段 '月-日-月-日:时段-时段'。 仅返回与当天匹配的时段。

Args:

opentime_str: 高德 API 返回的营业时间字符串。

Returns:

Tuple[int, int] | None: (开始分钟, 结束分钟),解析失败返回 None。

data.amap_loader.get_poi_details(poi_name: str, city: str) tuple[float, float, str, str, str, str, str, str] | str

获取 POI 详细信息(坐标 + 营业时间 + 地址 + 省/市名 + 实际名称 + 行业分类)。

Args:

poi_name: 景点名称。 city: 城市名。

Returns:

tuple[float, float, str, str, str, str, str, str]: 成功返回 8 元组 第 8 项 poi_type 为高德行业分类(如 "住宿服务;宾馆酒店")。 str: 失败返回错误信息字符串。

data.amap_loader._get_driving_data(origin: tuple[float, float], destination: tuple[float, float], max_retries: int = 3)

调用高德驾车路径规划 API 获取距离、耗时、轨迹折线。

Args:

origin: (经度, 纬度) 起点坐标。 destination: (经度, 纬度) 终点坐标。 max_retries: 失败重试次数,默认 3。

Returns:

Tuple[float | None, int | None, str | None]: (距离 km, 耗时 秒, 折线字符串)。

Raises:

Exception: 网络请求异常时重试,重试耗尽后返回 (None, None, None)。

data.amap_loader.build_real_data(poi_names: list[str], coords: list[tuple[float, float]], delay: float = 0.4)

调用高德 API 构建完整的驾车成本矩阵。

利用对称性优化:A→B 与 B→A 使用相同 API 结果填充,减少一半请求量。 delay 参数用于控制 QPS,避免触发高德 API 限流。

Args:

poi_names: POI 名称列表(含酒店)。 coords: 坐标列表,与 poi_names 一一对应。 delay: API 调用间隔秒数,默认 0.4(高德 QPS 限制约 2-3 次/秒)。

Returns:

Tuple[np.ndarray, np.ndarray, dict]: cost_matrix(分钟)、dist_matrix_km、polylines_dict。

Raises:

Exception: 驾车 API 调用失败时输出警告,对应矩阵元素置为 -1 标记不可达。