跳到主要内容
基础概念8 分钟阅读

什么是 POI 数据?什么样的 POI 数据集才真的能用?

一条 POI 记录就是一个名称、一个类别、一组坐标。POI 数据全部的难处,都藏在这三个字段里。

作者
HuiTu Technology
发布时间
更新时间

POI 是 point of interest 的缩写,中文叫兴趣点。一个 POI 就是一个以坐标形式记录、并挂上属性的具体地点:一家餐厅、一间药店、一所学校、一台 ATM、一个公交站、一根充电桩。POI 数据集就是这些地点组成的一张表。乍看之下,它是最简单的一类地理空间数据。

但实际上,POI 数据造成的分析事故比几乎任何其他数据集都多,因为它的错误在地图上看不出来。重复的门店看起来就是一家门店。被错分类的咖啡馆看起来就是一家餐厅。已经关掉的店看起来还在营业。等到同一个市场的两份分析结论对不上、又没人说得清哪份才对,你才会发现问题。

一条 POI 记录到底包含什么

一条最小可用的记录需要三样东西:标识符、位置、类别。其余都算属性增强——不过恰恰是其中一部分增强,决定了这份数据有没有商业价值。

一份典型的 POI 字段结构
字段类型为什么重要
poi_idstring稳定主键。没有它,你无法跨批次追踪同一个地点。
namestring给人看的名称,同时也是多数去重键的一半。
categorystring它决定了你之后用这份数据算出的每一个数字。
source_categorystring原始标签。保留它,类别判定才可复查。
latitude / longitudefloatWGS 84 十进制度数。小数点后超过六位的部分是噪声。
address componentsstring分列存储而非拼成一串,关联与校验才做得起来。
statusenum营业中、暂停营业、永久关闭。缺了它,计数必然是错的。
collected_atdate新鲜度。没有日期的 POI 数据集,只是一句没有时效的断言。

类别问题

向三个来源要同一座城市的咖啡店,你会拿到三个不同的数字,有时相差超过三分之一。差异不是来自覆盖范围,而是来自:一个来源把它叫咖啡馆,另一个叫咖啡店,第三个把它归进餐厅、再打上一个咖啡标签。

凡是涉及计数的事,这一点都足以致命:市场规模测算、竞争密度、人均渗透率。解决办法不是挑一个数字最好看的来源,而是自己定一套类别体系,把每一个来源标签都显式映射上去,并把映射表随数据一起交付。

  • 按你要做的决策来定义类别,而不是照抄来源恰好公布的分法。
  • 永远把原始来源标签单独留一列。
  • 映射表随数据集一起交付,任何一次判定都可以复查,也可以回退。
  • 确实模糊的标签,抽样人工看一遍再定,不要硬套规则。

重复记录,以及它为什么不显眼

把两个 POI 来源合起来,大约会有 15% 到 30% 的记录重复。重复很少是完全一致的:同一家店会以「Joe's Coffee」「Joes Coffee Co」「Joe's Coffee - Main St」几种写法出现,坐标还相差 20 米——因为一个来源打的是入口,另一个打的是楼体中心。

一套能用的去重规则,是文本归一化匹配加空间阈值:先把名称转小写、去标点、去掉常见后缀完成归一化,然后只有落在距离阈值以内的记录才进入合并候选,而阈值要按当地的密度来定。

-- Candidate duplicate pairs: similar names within 50 m
SELECT a.poi_id, b.poi_id,
       similarity(a.name_normalised, b.name_normalised) AS name_score,
       ST_Distance(a.geom::geography, b.geom::geography) AS metres
FROM poi a
JOIN poi b
  ON a.poi_id < b.poi_id
 AND ST_DWithin(a.geom::geography, b.geom::geography, 50)
WHERE similarity(a.name_normalised, b.name_normalised) > 0.6
ORDER BY name_score DESC;

50 米对密集的市中心是个合理的默认值,对零售园区就太紧了——同一家店可能被记在一栋建筑的两端。阈值是一个决定,而这项工作里的每一个决定,都该写进文档。

信任一份 POI 数据集之前的五项检查

  1. 坐标合理性:没有零值,没有经纬度颠倒,没有落在研究范围外接矩形之外的点。
  2. 坐标堆叠:统计坐标完全相同的记录数。大量记录挤在同一个点,说明地理编码退化成了邮编或行政区的中心点。
  3. 类别分布:和一个已知基准比对。如果某一个类别占了 60% 的记录,映射大概是错的。
  4. 重复率:要测,也要报。不公布去重率,跨市场比较就没有意义。
  5. 状态字段覆盖率:有多少记录带关停状态?把永久关闭的门店算成在营,下游每一个指标都会虚高。
标准化之后的 POI 图层,按类别着色
  • 餐厅 · 34
  • 咖啡馆 · 22
  • 零售 · 26

POI 数据真正擅长回答什么

数据一旦干净,POI 就能回答一些换别的办法很难回答的问题:某个品类里一共有多少经营者、分布在哪;相对人口规模,一个市场的供给密度如何;哪些片区有需求却没有供给;以及只要按固定节奏重新采集,上面这些又是怎么随时间变化的。

它不擅长告诉你这些生意做得好不好。评分和评价数量是有用的热度代理指标,但终究只是代理,而且偏向那些顾客恰好爱写评价的店。把它们当信号看,不要当成营收。

更多文章

继续阅读

下一步

比起了解方法,更想直接把事做完?

如果文章里描述的问题正好是你遇到的,把具体情况发来,我们会给出工作范围与固定报价。