地址 POI 精确定位(模糊地址 → C1–C5 决策)
接口说明
模糊/脏地址落到可解释 POI:C1–C5 分类码 + 选用 POI + 坐标 + 判定理由;宁可诚实拒落不静默错点
请求地址
鉴权方式
在 HTTP Header 中携带你的 API Key:
X-API-Key: 你的API-Key
每个 API Key 绑定已购接口与流量豆,调用成功扣减对应流量豆;调用失败(参数错误等)不扣流量豆。未开通该接口返回 403,流量豆不足返回 429。
请求参数
本接口为 POST 请求:以下参数以 JSON 对象放在请求体中提交(Content-Type: application/json),不拼接在 URL 上。
| 参数 | 必填 | 说明 | 示例 / 默认值 |
|---|---|---|---|
address |
必填 | 待定位地址文本(可为脏地址/口语别名,≤512 字符) | 广东省广州市黄埔区广本 |
corrected_address |
可选 |
可选的校正地址(≤512 字符):流程中已由人工修订或上游系统校正过的更干净地址(错字修正、补全楼名/公司全称等)
传入后不会覆盖 address——原地址始终作为第一路主查询检索;接口会额外并发发起第二路检索(校正地址),两路候选一起交给规则引擎打分分类,可显著提升 C1/C2 命中率。与 address 去空白后相同时自动忽略、不发起第二路检索;不传时照常只按 address 检索
|
— |
city_hint |
可选 | 限定城市(市名或 adcode),提供时检索启用 citylimit | — |
match_mode |
可选 | 匹配模式。exact=精确匹配(默认):C4/C5 诚实拒落不给点;fuzzy=模糊匹配:C4/C5 且有召回时采用地图检索首位回填 poi(decision=采用检索结果) | exact |
请求示例
curl -X POST \
-H "Content-Type: application/json" \
-H "X-API-Key: 你的API-Key" \
-d '{"address": "广东省广州市黄埔区广本", "match_mode": "exact"}' \
"https://cloud.dtbgis.com/api/v1/address/poi-resolve"
import requests
resp = requests.post(
"https://cloud.dtbgis.com/api/v1/address/poi-resolve",
json={"address": "广东省广州市黄埔区广本", "match_mode": "exact"},
headers={"X-API-Key": "你的API-Key"},
)
print(resp.status_code, resp.json())
fetch("https://cloud.dtbgis.com/api/v1/address/poi-resolve", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "你的API-Key",
},
body: JSON.stringify({"address": "广东省广州市黄埔区广本", "match_mode": "exact"}),
})
.then(r => r.json())
.then(console.log);
返回结果说明
本接口返回统一 JSON 信封结构:
{
"code": 200,
"msg": "success",
"data": { ... },
"quota_remaining": 9999
}| 字段 | 说明 |
|---|---|
code | 业务状态码,200 表示成功 |
msg | 状态描述,成功为 success |
data | 查询结果对象,字段见下方「data 字段说明」 |
quota_remaining | 本次调用后剩余可用流量豆数量 |
顶层信封另含 attribution(数据来源声明)。坐标为 GCJ-02(location 为 lng,lat 文本,lng / lat 为拆好的数值)。status=upstream_error 时不计费、retryable=true,可安全重试。match_mode=fuzzy(模糊匹配)时 C4/C5 若有召回则采用地图检索首位回填 poi(class_code 保持 C4/C5,decision=采用检索结果),计费口径与 exact 相同。
响应示例
{
"code": 200,
"msg": "success",
"quota_remaining": 98765,
"attribution": "POI 候选来自高德开放平台关键词检索;分类判定为地图帮规则引擎结果,C2/C3 为代理/上卷点,落库前请按业务口径抽检",
"data": {
"class_code": "C1",
"class_name": "精确匹配",
"decision": "采纳",
"poi": {
"id": "B00FWZ0EXH",
"name": "广汽本田汽车有限公司",
"address": "广本路1号",
"location": "113.448792,23.121623",
"lng": 113.448792,
"lat": 23.121623,
"type": "公司企业;公司;公司",
"adname": "黄埔区",
"cityname": "广州市"
},
"score": 110.0,
"why": "exact_c;alias~q",
"reason": "候选「广汽本田汽车有限公司」与查询地址强一致",
"status": "resolved",
"retryable": false,
"trace_id": "9f2c1a7b3e5d4a08",
"candidates": null,
"source_pois": [
{
"name": "广汽本田汽车有限公司",
"address": "广本路1号",
"location": "113.448792,23.121623",
"type": "公司企业;公司;公司",
"adname": "黄埔区",
"cityname": "广州市"
}
]
}
}
data 字段说明
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
class_code | string | C1–C5 决策码,各码判定口径见下方「class_code 判定原理」;upstream_error 时为 null;fuzzy 兜底不升级仍为 C4/C5 | C1 |
class_name | string | 分类中文名;fuzzy 模式 C4/C5 兜底时为「模糊无法找到 · 采用地图检索首位」/「无法找到 · 采用地图检索首位」 | 精确匹配 |
decision | string | 采纳 / 未找到 / 不采纳;fuzzy 模式 C4/C5 兜底时为「采用检索结果」 | 采纳 |
poi | object | 选用 POI;C4 / C5 为 null(match_mode=fuzzy 且有召回时回填检索首位) | — |
id | string | POI 唯一 ID | B00FWZ0EXH |
name | string | POI 名称 | 广汽本田汽车有限公司 |
address | string | POI 地址 | 广本路1号 |
location | string | 经纬度 lng,lat(GCJ-02) | 113.448792,23.121623 |
lng | float | 经度(数值) | 113.448792 |
lat | float | 纬度(数值) | 23.121623 |
type | string | POI 分类(大类;中类;小类) | 公司企业;公司;公司 |
adname | string | 区县名称 | 黄埔区 |
cityname | string | 城市名称 | 广州市 |
score | number | 规则引擎打分(可解释审计用) | 110.0 |
why | string | 打分特征标签(exact_c;alias~q 等);fuzzy 模式 C4/C5 兜底时为 source_first | exact_c;alias~q |
reason | string | 人可读判定理由(质检/客服友好) | 候选「广汽本田汽车有限公司」与查询地址强一致 |
status | string | resolved / upstream_error(不计费可重试) | resolved |
retryable | bool | 仅 upstream_error 为 true | false |
trace_id | string | 审计追踪 ID,客诉排查时请一并提供 | 9f2c1a7b3e5d4a08 |
candidates | array | options.return_candidates=true 时返回打分候选摘要(≤5,各含 name/source/score/why);默认 null | [{name, source, score, why}] |
source_pois | array | 上游关键词检索原始 POI,按召回顺序最多 10 条;已去掉厂商 POI id(含嵌套 children/parent)及 photos/childtype 原始字段。始终返回列表,无召回时为空数组 | [{name, address, location, type}] |
name | string | 原始 POI 名称 | 广汽本田汽车有限公司 |
address | string | 原始 POI 地址 | 广本路1号 |
location | string | 经纬度 lng,lat(GCJ-02) | 113.448792,23.121623 |
type | string | POI 分类(大类;中类;小类) | 公司企业;公司;公司 |
class_code 判定原理
分类码是决策层结论(检索 → 打分 → 分类判定),不是又一次地理编码; status=upstream_error 时为 null(不计费可重试)。判定顺序:先在全部候选 (address 第一路 + 校正地址第二路)中取最高分者(同分时行政锚点类型优先, 再取距离更近者),再按下表原理归类。
| 代码 | 名称 | decision | 是否回填 poi | 判定原理 |
|---|---|---|---|---|
| C1 | 精确匹配 | 采纳 | 是 | 候选得分越过主阈值,且与查询侧强一致——名称/别名/地址与传入的 address 对齐;或校正侧名称一致且无更强的近似/冲突信号。可直接落库。 |
| C2 | 近似匹配 | 采纳 | 是 | 同样越过主阈值,但一致性来自近似信号:近字匹配(错字);行政区前缀 不同、企业本体相同(如「广东三韩电子」→「东莞三韩电子」);或仅校正 地址侧地址对齐、名称未对齐(同址代理点)。此外得分未过主阈值但达到 近似下限、且带近字/地址对齐/本体同名等弱信号时也归 C2。建议抽检。 |
| C3 | 模糊地址-取上一级 | 采纳 | 是(上一级锚点) | 无法直接命中目标本体,改为上卷可靠的上一级锚点:最高分候选本身是 政府机关/居委会/村委会/乡镇级等行政锚点类型且查询并非精确同名; 查询含多地标/修饰成分(如「大三巴威尼斯」)时取与查询核心词公共前缀 足够长的主地标;C5 在默认 rollup_enabled=true 下上一级行政锚点上卷 成功时也转 C3。建议抽检。 |
| C4 | 模糊地址-无法找到 | 未找到 | 否(fuzzy 有召回时回填检索首位,码不升级) | 存在相关候选但都不够唯一(多解/冲突);或仅校正页部分命中且前导 限定词与候选属地不符(典型如串镇同名连锁)——宁可保守不乱选。 C4 的多解冲突不会被上一级上卷覆盖;exact 下「诚实拒落」本身就是结论。 |
| C5 | 无法找到 | 不采纳 | 否(fuzzy 有召回时回填检索首位,码不升级) | 检索无任何候选,或候选均无合理本体/同名污染,连「相关但不够唯一」 都算不上。默认先尝试上一级行政锚点上卷(成功则转 C3),仍失败才落 C5。 |
公交站/地铁站默认不作为采纳落点(options.reject_transit_stops 可关闭); options.rollup_enabled 默认 true,仅 C5 会尝试上一级行政锚点上卷。
match_mode=fuzzy(模糊匹配)下 C1–C3 与 exact 完全一致;仅最终仍为 C4/C5 且 source_pois 非空时用检索第一条回填 poi,class_code 保持 C4/C5 不升级,decision=采用检索结果。
落库建议:C1 可直接落库;C2/C3 为近似/上卷点,建议按业务口径抽检; C4/C5 在 exact(精确匹配)下明确拒落——「这个地址不能可靠落点」 本身就是有价值的结论,可转人工复核或改用 fuzzy 兜底。
错误码
错误以统一结构返回:{"detail": {"code": 429, "msg": "..."}}
| HTTP | 含义 | 常见原因 / 处理 |
|---|---|---|
400 | 参数错误 | 缺少必填参数或格式不合法 |
401 | 鉴权失败 | API Key 缺失、不存在、已停用或已过期 |
403 | 权限不足 | 该 API Key 未开通此接口,请购买流量豆 |
429 | 流量豆不足 / 限流 | 流量豆用完需续费;或超过速率(60 秒 200 次) |
404 | 资源不存在 | 路径错误,或查询对象无数据 |
503 | 服务暂时不可用 | 服务暂时异常,请稍后重试 |
完整错误码见 文档首页 · 错误码总览。