1. 背景
知识图谱可以应用在多个业务场景中,对各类对象进行表示、建模。作为一类重要的知识,空间信息在应用中经常需要用到,由此知识图谱与时空关联成为一种重要的应用形式,具备较好的可视化展示效果。
一种典型应用场景是情报分析。对目标人物、目标组织和目标事件在时空上进行可视化呈现,查看目标人物的活动轨迹,分析事件发生的空间趋势,检索区域内的相关对象和事件,等等都是非常有用的功能。
传统上,一般采用GIS系统进行针对性设计,在空间对象上关联具体对象信息。Palantir是比较早地将知识图谱与GIS技术进行结合的,关系网络视图与地图视图完美结合。
基本概念:
POI:Point of interesting. 可以翻译为兴趣点,就是在地图上任何非地理意义的有意义的点:比如商店,酒吧,加油站,医院,车站等。不属于poi的是有地理意义的坐标:城市,河流,山峰
AOI:area of interest (AOI),the geographic bounds of the map sheet
对象:知识图谱中的主要知识信息,包括实体、事件、文档等。
2. 需求分析
简单地说,实现知识对象作为空间对象在地图(不管是二维还是三维地图)上进行展示。
知识对象包括知识图谱中的主要对象类型,包括实体、事件、文档等,实体包括人、机构、武器装备、军事基地等,事件包括冲突事件、交易时间、移动事件等,文档包括新闻报道、社媒博文等空间。
空间对象:POI和AOI,暂不考虑其他类型空间对象。
技术需求梳理如下:
- 支持常见的多种类型对象(POI)在地图点上显示
- 支持用户手工对地图点、线段或区域与知识对象进行关联和展示
- 支持圆形、矩形、多边形的区域内知识对象的检索
- 支持选中对线对象(比如公路、跑到)周边一定范围区域,并进行知识对象检索
- 提供地名-经纬度的双向映射解析,可搜索地名和空间对象
- 内置一套全球地名和空间对象库
3. 已有系统设计
3.1 GoIN系统设计
系统架构如下图所示:
技术选型:
- MongoDB:基础gis库
- ClickHouse 实例对象的关联
- PostGIS 空间对象、提供空间对象查询
- GeoServer 图层发布
- 前端Openlayers 前端操作、渲染
PG表设计:
PG表中通过geoid是空间对象标识,知识对象与空间对象是多对一的关系。geometry是坐标形状,geoserver利用这个字段可将这个表发布为一个图层。setid是区分不同的数据集,根据当前操作用户具有的数据集的权限即可查出不同的空间对象。
发布效果如下:
3.2 其他系统设计
可在地图上选择一个点(或区域),与知识对象进行手工关联。
后台基于第三方库reverse_geocoder实现经纬度-地点的解析。
4 重新设计
已有系统在系统架构上较为复杂,可简化。
关键技术:
- ES支持两种GEO类型,geo_point和geo_shape,简单的空间点POI一般采用geo_point,查询时使用geo_bounding_box(矩形区域)、geo_distance(圆形区域)和geo_polygon(多边形);复杂空间AOI采用geo_shape,ES提供intersects、disjoint、within、contains类型的区域关系检索。
- 基于现有Java/Python库进行SHP文件操作,可进行地图数据处理,可调用geoserver提供的API进行图层渲染
设计思路:
设计一套完整的空间信息管理服务的API,方便进行各类业务应用。提供一下接口:
- 提供基础空间信息的管理查询,支持新增、修改、删除,支持根据关键词(地名)进行检索,支持根据经纬度进行映射,支持geo_point查询和geo_shape查询
- 提供动态对象信息的管理查询的API,按照不同应用、用户,支持新增(实现关联)、删除(解除关联),支持根据知识对象ID和空间对象ID进行检索,支持geo_point查询和geo_shape查询
- 提供个人库API,支持个人
- 提供图元库管理API
参考链接
- https://gadm.org/download_world.html GADM地图数据下载
- 高效访问海量地图数据--GeoServer手动发布本地Shapefile地图 - 云+社区 - 腾讯云 GeoServer发布图层
- GeoServer使用CSS渲染地图 - 简书 GeoServer上CSS的样式渲染
- Elasticsearch地理信息存储及查询之Geo_Point - 知乎 ES的地理信息存储查询
- ES geo_shape查询__Heartbeat的博客-CSDN博客 ES的geo_shape查询