完整资料进入【数字空间】查看——搜索"writebug"
一、目的
近年来,随着我国城市化进程的加快,不少城市的规模在扩大、人口在增加、道路在延伸,城市的公交线路也在不断地增加。在城市中,选择合适的公交车前往目的地就成为与广大普通市民出行密切相关的一个问题。地理信息系统(GIS)作为一门融计算机图形和数据库于一体,储存和处理空间信息的边缘综合性学科,能把地理位置和相关属性有机结合起来,根据实际需要准确真实、图文并茂地输出给用户,满足不同部门、不同用户对空间信息的要求,并借助其空间分析能力和可视化表达,用于各种辅助决策。
PostGIS 是对象关系型数据库系统 PostgreSQL 的一个扩展,PostGIS 提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS 遵循 OpenGIS 的规范。
由此,我们通过使用 PostGIS 来存储公交车位置信息,并借助 socket.io 来实现在谷歌地图上实时显示公交车位置,借此来展示 PostgreSQL 的特性,为用户出行节省时间。
二、内容与设计思想
1.为什么选择 PostgreSQL 而不用 MySQL?
PostGIS的GIS功能相比MySQL强大太多,PostGIS有几百个操作函数, 对GIS支持强大。PostGIS为 PostgreSQL 提供了存储、查询和修改空间关系的能力,如空间对象、空间索引、空间操作函数和空间操作符等。PostGIS最大的特点是符合并且实现了OpenGIS的一些规范,是最著名的开源GIS数据库。
2.实现公交车位置实时更新功能
node.js一直以异步io著称,其语言特性尤其擅长于在realtime应用中。本系统主要需要实时更新插入等功能,而nodejs+socket.io在实时应用中具有较好的表现能力。本实验中,PostgreSQL通过触发器监听是否有数据采集终端将新坐标写入或者更新,然后在触发器中notify消息,数据库一旦广播了消息,服务器端监听,并继续以socke.io广播到客户端实时展示。
3.用户查询公交车位置
用户可以通过指定公交线路查询,数据库接收到用户请求,只返回用户需求的那些公交车,然后动态更新。
4.通过聚类算法帮助用户更好选择公交线路
对数据库中的所有车辆进行聚类,按照每类中车辆的数量区分等级,如果用户查询的公交车等级靠前,说明此辆公交的附近车辆较多,有堵车的可能,推荐用户选择其他公交线路。
三、使用环境
使用VMware,虚拟机环境如下:系统centos7,2GB内存、20GB硬盘、i7处理器。