悦数图数据库

首页>博客>行业科普>地理空间数据怎么和图结合?图数据库在位置关联分析中的用法

地理空间数据怎么和图结合?图数据库在位置关联分析中的用法

地理空间图数据库

选址报告的第一页写着:候选点位三公里内常住人口十二万。三个备选点位,数字都在十一万到十三万之间,看上去差别不大,评审会上没人多问一句。后来有人在地图上量了一下——其中一个点位和那十二万人之间隔着一条江,最近的桥在三公里外,绕过去七公里。半径是几何问题,可达是图问题,而位置分析真正要回答的多数是后者——这正是图数据库在空间数据里的位置。

这篇要讲三件事:地理空间数据怎么进到图里,进图之后能回答哪些原来答不了的问题,以及哪些事仍然该交给 GIS。

一、半径算得出来,可达算不出来

位置上能问的问题,其实分三类,难度是递进的。

第一类是「离我最近的在哪」。给定一个坐标,找最近的十个门店。这是纯粹的几何问题,空间索引加 KNN,GIS 和带空间扩展的数据库都能做,百毫秒级。

第二类是「这个圈里有多少」。半径内有多少竞品、多少个小区、多少台设备。这是在几何之上再加一层聚合,也还算几何问题,只是数据量大了要预聚合。

第三类是「从这里能不能到」。十五分钟车程能覆盖哪些小区、哪些小区到站点要绕行、这个区域的居民到最近的社区医院要经过几个路口。这一类不是几何,是拓扑。

第三类问题的麻烦在于,它必须知道路。没有路网,只能拿直线距离乘以一个系数估算,而那个系数的误差在城区里可以到两三倍。隔着江、隔着铁路、隔着一条封闭快速路,直线一百米,实际两公里。

很多分析报告就停在这一步——用直线距离代替可达距离,然后在下结论时闭口不提这个替换。

问题类型 需要什么数据 谁擅长
最近的在哪 坐标 + 空间索引 GIS、空间数据库
圈里有多少 坐标 + 空间索引 + 聚合 GIS、空间数据库
能不能到 路网拓扑 + 权重 + 多跳遍历 图

二、可达是图问题,因为路网本来就是图

路口是点,路段是边,边的权重是通行时间而不是长度。这么一建,可达性就是带权最短路径,图上跑了二十年的东西。

权重取时间而不是长度,这个选择会影响后面所有建模。一条两公里的快速路和一条八百米的单行道,按长度排前者更远,按时间排后者更慢。更麻烦的是权重本身会变——早高峰和凌晨的同一段路,通行时间差三倍是常事。所以权重不能写死在边上,得按时间段分层,或者存多套权重、查询时选一套。这一层不做,算出来的可达关系在早晚会给出两个答案。

但图真正的价值不在算最短路。最短路 GIS 也能算,而且算得不错。图的价值在于:可达性可以和别的条件写在同一个查询里。

举个例子。要判断某个网格适不适合开新店,条件其实有三层叠在一起:这个网格三公里内竞品门店不超过五家、网格覆盖的小区常住人口过万、从最近的配送站十五分钟内可达。第一条是空间聚合,第二条是属性筛选,第三条是路网上的多跳可达。

在分离式架构里,这三条要拆给三个系统做:GIS 算第一条,数仓算第二条,路径规划引擎算第三条,最后靠网格 ID 把三份结果 join 起来。join 一次没问题,但这个分析要跑八千个候选网格,就是八千次跨系统往返。等结果出来,商圈可能已经变了。

在同一个引擎里,这是三段条件串在一条查询上,跑一次。

三、位置进图的三种建模法

地理空间数据怎么塞进图,有三种做法,代价完全不同。选错一种,后面所有查询都会别扭。

第一种:坐标作为点的属性。门店、设备、事件、站点都带上经纬度字段,查询时用空间条件筛。这是最省事的做法,适合「位置固定的实体」,也适合先用它把数据搬进来再优化。

它的局限在于位置之间没有关系。两个门店相距两百米,这件事在图上没有边,只能每次现算。

第二种:位置本身是点。把路口、站点、基站小区、网格都建成独立的点,实体与位置之间用边连接,边上带时间窗。设备驻留在哪个网格、订单从哪个站点发出、车辆经过哪些路口,全都变成边。

这种做法的好处是位置获得了拓扑。两个门店之间的距离,变成「门店 A→所属网格→相邻网格→门店 B」的路径长度;一台设备去过哪些地方,变成沿边走一遍。

代价是点多。一个城市的精细路网就是几百万个路口点,加上网格、站点、基站,规模会比业务实体本身大一个量级。

第三种:网格化降维。把连续坐标按固定边长离散成网格 ID,用 ID 建边,坐标只作展示用。精度损失换来了剪枝能力——空间上的邻近判断退化成 ID 相等或相邻,快一个量级。

这种做法的边界很清楚:网格边长决定了能分辨的最小尺度。做商圈分析用五百米网格没问题,做门店门口的人流分析就不够。

建模法 适合什么 代价 什么时候别用
坐标作属性 位置固定的实体,快速接入 位置之间无拓扑 要算可达、要算邻近关系
位置建点 轨迹、驻留、覆盖、路网 点数量放大一个量级 只需要「离我最近」
网格降维 大范围聚合、商圈分析 精度受限,跨网格关系变粗 需要米级精度

这里有个关键点容易被忽略:这三种做法不互斥。实践中常见的是混用——门店用坐标属性,路网用位置建点,商圈分析用网格。同一张图里三种并存,只要点的类型分清楚,查询时各取所需。

四、三张网叠起来才有判断力

单个位置维度的判断力很有限,真正有判断力的是几层关系叠在一起。

门店选址。要叠三张网:竞品门店网(谁在哪、开了多久)、小区人口网(人在哪、多少人)、路网(从店到小区要多久)。任何一张单独给不出结论——竞品少的地方可能没人,人多的地方可能已经饱和,人多的饱和区可能恰好缺一条直达路径。

配送分区。要叠站点、小区、路网三张网。分区调整时真正要看的是「跨越边数」——一条新边界切断了多少个小区到原站点的最短路径。这个数字在纯几何的泰森多边形划分里根本算不出来,因为多边形不知道路。

设备巡检。要叠设备网、线路网、故障点三张网。同一个故障点附近三公里内有多少台同型号设备、它们挂在同一条线路上吗、上一次检修是哪个班组去的。空间条件负责缩范围,关系条件负责判断是否同批同源。

场景 三张网 缺一张会怎样
门店选址 竞品门店 + 小区人口 + 路网 只算半径,选到江对岸
配送分区 站点 + 小区 + 路网 分区几何上均衡,实际绕行严重
设备巡检 设备 + 线路 + 故障点 只按距离派单,漏掉同批次隐患

这三张网里,前两张是关系数据,第三张是空间数据。要让它们同时生效,就得让空间条件和关系条件进同一个执行计划,这也是下一节要说的分工问题。

五、什么交给 GIS,什么该放进图

到这里必须说清楚一件事:图数据库不替代 GIS,也不该替代。

该交给 GIS 的:栅格计算、缓冲区分析、地图投影转换、图层渲染、栅格影像处理、轨迹抽稀与平滑。这些是空间计算的本行,图数据库做不了,做了也不划算。

该放进图的:多跳可达、关联约束、社群切分、路径还原、以及「空间条件 + 关系条件必须同时成立」的那类判断。这些是关系计算的本行,GIS 做不了。

两边真正的结合点在查询层:空间谓词作为过滤条件,图遍历作为判据,两者写在一起。

悦数图数据库在这件事上的做法,是把地理空间作为点和边的一种原生属性类型,与标量属性、向量、全文、时间并列。点可以带空间属性,边也可以带——一条路段的几何线、一段驻留的范围,都挂在边上而不是另存一张表。混合检索把图、向量、全文、地理位置几类条件放在同一个引擎内执行,不需要把数据先拆到几套系统再拼结果。多模融合在工程上的具体做法,当 AI 遇上图数据库:多模数据融合的创新实践有过展开,本篇只取其中的空间这一路。

这个设计的实际意义在于:拆开拼的时候,空间条件只能当预过滤用,过滤完再进图遍历,中间结果集一旦大了,性能就塌了。写在同一个计划里,优化器可以先按跳数收敛,再在收敛后的候选集上算空间距离,顺序可以自己选。

数据和同步这条路也要提前想清楚。空间数据的来源通常很杂:路网来自测绘或地图服务商的矢量文件,门店与设备地址来自业务库,车辆和设备的实时位置来自物联网平台,三份数据的坐标系、精度、更新节奏都不一样。悦数支持 CSV、JSON、ORC、Parquet、SST 文件导入,也支持从 HBase、MySQL、PostgreSQL、Oracle、ClickHouse、Neo4j 等数据源直接导入,Pulsar、Flink 做实时接入,结果可导出至 HDFS。多源数据进图时那条路径查询的性能瓶颈,多源异构数据构建企业图谱有过专门讨论。

位置数据本身是流式的。实时接入这条通道不设计进去,后面就只能靠批量补,补出来的时间属性一定有偏差,而位置分析的所有判据都建立在时间上。

规模侧的口径是:支持千亿点万亿边,百亿点千亿边量级下点精确查询小于 1 秒、边精确查询小于 1 秒、5 度关系查询小于 5 秒,结果集为千万级。对城市级路网加业务实体这种规模,这个量级是够用的。

六、落地清单与两个误区

把前面的东西收成一张清单,按顺序做。

# 动作 交付物 验收标准
1 分清要答哪类问题 问题分类表(最近/圈内/可达) 每类问题都能对应到一种建模法
2 确定点的粒度 点类型清单 路口、网格、站点的取舍写清楚
3 坐标以数值存 字段类型确认 不是字符串,能建空间索引
4 路网权重用时间 权重来源与更新频率 区分工作日与高峰
5 位置变更留时间 边上的起止时间 不覆盖,只追加
6 空间条件与关系条件同查 关键查询清单 至少三条核心查询不跨系统
7 划清 GIS 与图的边界 分工表 栅格计算不进图

两个误区值得单独说。

其一,把坐标存成字符串。「116.404,39.915」这样存进去,读取的时候还得拆,空间索引建不上,空间谓词退化成字符串比较,性能差两个数量级。这个错误在建表阶段就该拦住,事后改要重灌数据。

其二,位置覆盖更新。设备换了个网格,就把设备上的网格 ID 改掉——这一步下去,历史全丢了。以后要问「这台设备上个月在哪个片区」,答不出来,因为那个片区已经在字段里被覆盖了。

位置数据天生带时间。正确的做法是把位置建成边,边上带进入时间和离开时间,换位置就是新加一条边、老边补上离开时间。历史留住了,代价是边会一直长——这才是需要分区和归档策略的地方,而不是靠覆盖更新省事。

回到开头那个选址报告。三个点位人口差不多,这个结论没错,只是回答错了问题。真正想知道的是这三个点各自能覆盖多少能走到的人,而那需要先有路,再有图。

相关阅读

常见问题(FAQ)

Q1:悦数图数据库是一款什么样的产品?

A:悦数图数据库是杭州悦数科技自主研发的企业级原生分布式图数据库,100% 国产自研、自主可控,原生支持 ISO-GQL 国际标准,采用存算分离与 Shared-Nothing 架构,面向千亿点万亿边规模的关系数据存储与查询,内置图算法库,并支持图、向量、全文、地理空间的原生多模融合检索。

Q2:图数据库能替代 GIS 吗?地理空间数据一定要放进图里吗?

A:不能替代,也不必要。栅格计算、缓冲区分析、地图投影与渲染是 GIS 的本行,图数据库做这些既不擅长也不划算。图数据库解决的是另一类问题:多跳可达、关联约束,以及空间条件与关系条件必须同时成立的判断。判断标准很简单——如果一个问题只需要空间计算,交给 GIS;如果需要「从这里能不能到那里,并且满足某个关系条件」,那就该进图。

Q3:悦数图数据库在技术积累与标准化方面有哪些进展?

A:悦数图数据库已累计获得 60 余项国家发明专利,2024 年 11 月全球首发原生支持 ISO-GQL 39075 国际标准,公司技术专家为 ISO GQL 标准委员会成员;2025 年 3 月与复旦大学共建「先进金融图技术校企联合研究中心」。产品全项通过中国信通院可信数据库图数据库产品能力测试,并连续两年入选信通院《中国数据库产业图谱》图数据库「领航者」;据 IDC 2024 年中国图数据库市场份额报告,悦数位列第二。