Tile38
开源的实时地理空间和地理围栏项目
info项目简介
Tile38是一个开源(MIT许可)的内存地理位置数据存储、空间索引和实时地理围栏服务器。它使用Go语言编写,具有高性能和跨平台兼容性,专为处理实时地理空间数据而设计。
stars主要功能
category支持的对象类型
public应用场景
settings技术特点
cloud_download部署方式

Tile38 对象类型详解
地理空间数据类型与使用方法
category核心对象类型
点 (Point)
表示地球上的一个精确位置,由纬度和经度坐标定义。是最基本的地理对象类型。
边界框 (Bounds)
由最小和最大纬度、经度定义的矩形区域,用于表示地理范围。
圆形 (Circle)
由中心点和半径定义的圆形区域,半径单位可以是米、千米、英里或英尺。
多边形 (Polygon)
由三个或更多点组成的封闭区域,用于表示不规则形状的地理区域。
map高级对象类型
GeoJSON
支持完整的GeoJSON规范,包括Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon和GeometryCollection。
Geohash
Geohash是一种将地理坐标编码为字符串的方法,用于快速区域查询和索引。
QuadKey
微软Bing地图使用的瓦片坐标系统,用于表示地图上的特定区域。
线串 (LineString)
由两个或更多点组成的线段,用于表示路径、道路或边界线。
search空间查询方法
Tile38 支持的对象类型
多种地理空间数据格式支持
纬度/经度点
最基本的地理对象类型,使用经纬度坐标表示地球上的一个点。支持单个点或点集合。
边界框
由两个对角点定义的矩形区域,用于表示地理上的矩形范围。常用于区域搜索和地理围栏。
XYZ瓦片
基于Web墨卡托投影的瓦片坐标系统,使用X. Y、Z三个参数表示地图上的一个瓦片区域。✅
Geohashes
将地理坐标编码为字符串的地理编码系统,精度取决于字符串长度。适合快速区域查询。
GeoJSON
基于JSON的地理空间数据交换格式,支持点、线、多边形等多种几何类型,是地理空间数据的标准格式。
QuadKey
微软Bing地图使用的瓦片编码系统,将瓦片坐标编码为字符串,支持不同缩放级别的地图瓦片。
code对象类型使用示例
Tile38 对象类型详解
支持的地理空间对象类型及其使用方法
place基本地理对象类型
点 (Point)
由经纬度坐标表示的地理位置点,是最基本的地理对象类型。
边界框 (Bounds)
由最小和最大经纬度定义的矩形区域,用于表示地理范围。
圆形 (Circle)
由中心点和半径定义的圆形区域,单位为米、千米、英里或英尺。
线串 (Linestring)
由一系列经纬度点连接而成的线段,用于表示路径或边界。
category高级地理对象类型
多边形 (Polygon)
由一系列经纬度点定义的封闭区域,可以表示复杂形状的地理区域。
GeoJSON
支持标准GeoJSON格式,可以表示各种复杂的地理空间数据结构。
XYZ瓦片
使用Web墨卡托投影的瓦片坐标系统,常用于地图服务。
Quadkeys
微软Bing地图使用的瓦片索引系统,是一种层级网格编码。
grain空间索引系统
Geohashes
将经纬度编码为字符串的地理编码系统,精度随字符串长度增加。
对象特性
所有地理对象类型都支持附加字段,可以存储额外的元数据。
search查询与搜索方法
Tile38 地理围栏功能详解
静态地理围栏的创建、监控与事件处理
fence地理围栏概念
什么是地理围栏
地理围栏是虚拟的地理边界,当移动对象进入或离开这些边界时,系统会触发预设的事件或通知。
工作原理
Tile38持续监控对象位置,当对象与预定义的地理区域产生交互时,触发相应事件并通过Webhook或Pub/Sub发送通知。
支持的区域类型
支持所有Tile38地理对象类型作为围栏区域,包括点、边界框、圆形、多边形、GeoJSON、线串等。
触发条件
可设置多种触发条件,如进入、离开、穿越、交叉等,并可根据对象属性进行过滤。
build设置地理围栏
创建地理区域
首先使用SET命令创建一个地理区域,作为围栏的基础。
设置地理围栏
使用SETCHAN命令创建地理围栏,指定监控的区域和触发条件。
配置通知方式
设置Webhook或Pub/Sub通道,用于接收地理围栏事件通知。
event事件类型与触发条件
事件过滤
可以使用WHERE子句根据对象属性过滤事件,只有满足条件的对象才会触发通知。
事件节流
可以使用DURATION参数控制事件通知的频率,避免短时间内收到过多通知。
code地理围栏命令
创建地理围栏通道,监控指定区域内的对象移动。
删除已创建的地理围栏通道。
列出所有活动的地理围栏通道。
通过Pub/Sub订阅地理围栏事件通知。
public实际应用场景
Tile38 地理围栏功能详解
静态地理围栏的创建、监控与事件处理
fence地理围栏概念
什么是地理围栏
地理围栏是虚拟的地理边界,当移动对象进入或离开这些边界时,系统会触发预设的事件或通知。
工作原理
Tile38持续监控对象位置,当对象与预定义的地理区域产生交互时,触发相应事件并通过Webhook或Pub/Sub发送通知。
支持的区域类型
支持所有Tile38地理对象类型作为围栏区域,包括点、边界框、圆形、多边形、GeoJSON、线串等。
触发条件
可设置多种触发条件,如进入、离开、穿越、交叉等,并可根据对象属性进行过滤。
build设置地理围栏
创建地理区域
首先使用SET命令创建一个地理区域,作为围栏的基础。
设置地理围栏
使用SETCHAN命令创建地理围栏,指定监控的区域和触发条件。
配置通知方式
设置Webhook或Pub/Sub通道,用于接收地理围栏事件通知。
event事件类型与触发条件
事件过滤
可以使用WHERE子句根据对象属性过滤事件,只有满足条件的对象才会触发通知。
事件节流
可以使用DURATION参数控制事件通知的频率,避免短时间内收到过多通知。
code地理围栏命令
创建地理围栏通道,监控指定区域内的对象移动。
删除已创建的地理围栏通道。
列出所有活动的地理围栏通道。
通过Pub/Sub订阅地理围栏事件通知。
public实际应用场景
Tile38 复制功能详解
领导者/追随者复制机制与高可用部署
sync复制机制概述
领导者/追随者模式
Tile38采用主从复制架构,领导者节点处理所有写操作,追随者节点复制领导者的数据并提供读服务,实现高可用性。
实时同步
领导者节点的所有写操作会实时同步到追随者节点,确保数据一致性,同步延迟在毫秒级别。
故障转移
当领导者节点发生故障时,可以手动或自动将追随者节点提升为新的领导者,确保服务连续性。
灵活扩展
支持一个领导者和多个追随者节点,可以根据需求水平扩展读能力,提高系统整体性能。
settings复制配置步骤
启动领导者节点
使用默认配置启动Tile38作为领导者节点,监听默认端口9851。
启动追随者节点
使用-follow参数启动追随者节点,指定领导者节点的地址和端口。
验证复制状态
使用INFO REPLICATION命令查看复制状态,确认数据同步正常。
code复制相关命令
查看复制状态信息,包括角色、连接状态、同步延迟等。
设置或获取追随者节点连接的领导者主机地址。
停止追随者模式,使节点成为独立节点。
管理AOF(Append Only File)持久化,用于数据恢复。
security高可用性与故障转移
public实际应用案例
物流车队管理系统
大型物流公司使用Tile38复制功能部署高可用集群,确保7×24小时不间断跟踪数千辆车辆位置,即使单个节点故障也能保证服务连续性。
外卖配送平台
外卖平台使用Tile38复制功能在多个数据中心部署节点,实现地理分布式架构,降低延迟,提高骑手位置查询和地理围栏通知的响应速度。
安全监控系统
大型活动安保系统使用Tile38复制功能构建高可用地理围栏监控平台,确保在活动期间人员位置监控不中断,保障活动安全。
宠物追踪应用
宠物追踪应用使用Tile38复制功能确保服务高可用,即使在系统维护或故障期间,也能持续监控宠物位置,及时发送漫游地理围栏通知。