APP下载

基于GIS的城市违停管理数据库设计与应用

2019-06-09钟凯黄义忠谭荣建马义超王恒煊

软件导刊 2019年4期
关键词:数据可视化

钟凯 黄义忠 谭荣建 马义超 王恒煊

摘 要:为了提高温州市鹿城区城市管理与行政执法局执法效率,采用数据库技术与地理位置相结合的方式,设计并开发了温州市鹿城区违停管理系统,以取代传统的手工Excel记录方式。通过数据分析和功能分析明确系统功能,并进一步给出设计方向、实现方法与关键技术,包括SQL查询、Excel表数据添加、图层属性查看、查询统计、密度分析与热力图显示等。开发设计出的基于GIS的城市违停管理数据库系统,可以将历史违停数据与地理位置信息相结合,形成可视化的数据综合统计分析平台,从而对未来形势进行预判,并为今后的停车场选址提供依据。

关键词:GIS;车辆违停管理;SQL查询;统计查询;热力图;数据可视化

DOI:10. 11907/rjdk. 182019

中图分类号:TP319文献标识码:A文章编号:1672-7800(2019)004-0127-06

0 引言

随着机动车数量的不断增长,城市道路的承载量日趋增大,泊车位呈现过饱和状态,城市违停现象时有发生,对此,本文以温州市鹿城区为例进行研究。吴益[1]和陈志利[2]从公共管理角度论证了温州市鹿城区的违停状况与解决违停问题的必要性;吴鎏鹏[3]采用B/S架构和Java语言设计开发了一套违停信息管理系统,但其研究未将违停数据与地理位置信息相结合进行可视化展示。因此,本文采用数据库技术以及C#结合ArcEngine二次开发技术,设计一套城市违停管理数据库系统[4-5],可实现违停数据的快速导入并关联地理位置信息,生成可视化的违停数据矢量图,并能快速查询违停数据,实现密度分析并生成可视化的违停数据热力图,从而实现对违停状况的分析与管理。

1 需求分析

城市违停管理数据库系统包含数据库与管理系统两部分[6]。

1.1 数据库需求分析

数据库部分应包含以下3个功能,分别为:

(1)数据导入。本项目数据源为Excel表格,包括历史记录表格数据与通过网络自动生成的实时表格数据。通过新建查询功能或操作员的手动操作,将数据导入数据库系统。

(2)数据统计与关联。完整的数据库系统包括地理基础空间数据、车辆违停历史数据、违停实时数据、路段数据以及中队数据,本系统包含的地理空间数据为地名坐标文件数据。通过查询语句将缺少空间坐标的违停记录与地址坐标数据相关联,生成一个包含X/Y空间坐标数据的新表,从而完成数据关联。

(3)数据导出。根据数据库的稳定性需求以及大数据环境的现实情况,需要将数据库中关联的数据定时导出备份,并入库存档。数据导出类似于数据导入。

1.2 管理系统需求分析

管理系统应包含以下5个功能,分别为:

(1)图层加载功能。本系统基于ArcEngine技术进行二次开发,所以基础数据需要通过“加载图层”功能实现。

(2)表数据加载功能。表数据即为导出备份的Excel表数据,以及其它历史违停数据。通过该功能将表中一条条独立记录以X/Y坐标数据形式结合空间参考文件生成统计点,自动添加至图层窗口,作为统计分析的主体。

(3)右键菜单查看属性功能。将生成的统计点数据添加至图层窗口后,图层名自动添加至图层列表,然后通过图层列表右键菜单调出“查看属性表”选项,打开属性表窗口,可以查看选中图层的完整属性。

(4)统计查询功能。类似于GIS中的按属性查询,是本系统的核心功能。通过筛选关键数据信息,实现分时段统计、分路段统计与分中队统计等查询统计功能,并能实时显示在窗口,十分快速、准确。

(5)密度分析与热力图显示功能。通过数据可视化分析技术生成热力图,能直观了解点的分布规律及分布形式,从而帮助管理者快速理解数据,找出海量数据中的规律并从中提取有用信息,为决策分析提供了便利。

2 总体架构

一个完整的管理信息系统应包括软硬件支持层、数据层、应用层3部分[7-8]。本系统总体架构如图1所示。

2.1 软硬件支持层

软硬件支持层是平台运行的主要环境支撑,包括数据库服务器、应用服务器、网络设备、操作系统软件等设施,可为违停大数据分析平台建设提供软硬件支持。

2.2 数据层

数据层主要负责存储与管理数据,包括数据存储、数据读写、数据备份等功能。数据层由数据库软件、数据处理语言与数据表组成,其中包含地理空间数据、车辆违停历史数据、车辆违停实时数据、路段数据、中队数据等。

2.3 应用层

應用层是面向用户提供各类业务功能与交互的界面层,将服务层提供的各类服务通过友好的功能界面进行封装,提供给用户使用,并与用户进行交互操作,主要包括地图加载切换功能、数据加载功能、实时统计分析功能、属性表查询功能、密度分析与热力图显示功能等。

3 数据库结构与查询

3.1 数据库结构

违停数据库中主要存储基础地理数据与违停数据。数据结构如图2所示。

其中,基础地理数据包含中队数据、路段数据、地名统计数据等涉密敏感数据,所以本文未作收录,也不作演示,但本文在数据库中模拟了一份临时地名地址数据作为基础地理数据,包含3个字段:地名、X坐标、Y坐标。

违停数据包括历史违停数据与实时数据。历史数据为历史时间段的违停记录,可关联地理坐标数据,是完整的违停数据记录,数据量庞大且涉密;实时数据是通过多渠道实时接收到的违停记录数据,包括实时更新的涉密数据以及一份采取去密操作后的样例数据。实时数据只包含违停记录的地址或位置信息,而缺少对应坐标信息。样例数据包含以下7条记录:记录编号、录入时间、道路编号、路段编号、违规项、中队编号及车牌号。

3.2 SQL查询

样例数据与临时地名地址数据之间相互独立,且数据量较大,要为样例数据增添地理位置坐标,可以通过在两张Excle表数据之间建立SQL查询加以实现[9-14]。在数据库中,违停样例数据为表wt,而临时地名地址数据为表loc,现需要通过查询,将表loc中的坐标信息通过地址字段值关联至表wt中的每一条记录。

查询思路如下:如果wt的地址字段值(H_Address)出现了对应表loc中的地址记录,意味着该违停记录有了对应的位置信息(WEITING_poi_x,WEITING_poi_y),否则,在wt表与本记录之外的其它违停记录中查找:“是否有对应的道路及其路段(h_roadid,H_RoadSectionId)相同的其它记录,且其地址(H_Address)也在loc中的地址(H_Address)出现”,如果有满足该条件(condition1)的记录r2,则取出r2的地址,并替换r1的地址,r1.h_address=r2.h_address。如果以上两点都不满足,即意味着表wt中该项记录的地址字段值在表loc中不存在完全对应的记录。继续用地址(r1.h_address)在loc中寻找地址记录,观察r1.h_address的前部是否与其一致。例如 r1.h_address=“瓯江大厦南门”在loc中有loc.h_address=“瓯江大厦”的记录,则r1.h_address=“瓯江大厦”。如果上述查找都失败,则说明该地址无法(直接或间接)找到匹配的地址位置信息,需要操作员手工筛选关联数据。

具体查询流程如图3所示。

4 功能设计与实现

4.1 图层加载

通过menuStrip菜单栏上的“文件”-“载入”,打开文件选择界面,选择并添加图层文件“温州市鹿城区历史违停栅格-矢量图”,实现图层加载功能,得到结果如图4所示。

打开。mxd文件关键代码如下:

System.Windows.Forms.OpenFileDialog open2 = new OpenFileDialog();

open2.Filter = "Arcgis mxddocument(*mxd)|*mxd";

open2.Multiselect = false;

open2.Title = "打开arcgis地图文档";

if (open2.ShowDialog() == DialogResult.OK)

{

if (axMapControl1.CheckMxFile(open2.FileName))

{

axMapControl1.LoadMxFile(open2.FileName);

axMapControl1.Refresh();

}

}

如果要实现分别加载栅格数据、矢量数据以及多种类地图文档,代码如下:

System.Windows.Forms.OpenFileDialog open1 = new OpenFileDialog();

open1.Filter = "shape文件(*.shp)|*.shp";

open1.Filter += "栅格数据(*.jpg,*.bmp,*.tiff)|*.jpg;*.bmp;*.tiff|";

open1.Filter += "地图文档(*.mxd,*.mxt,*.jmf)|*.mxd;*.mxt;*.jmf|";

open1.Multiselect = false;

open1.Title = "打开文件";

4.2 表数据添加

添加表数据也是本系统的核心功能之一,将Excel表数据转换为shapefile格式的空间点数据,并添加到MapControl中作为统计点数据用于后续统计查询。通过menuStrip菜单栏上的“文件”-“导入表数据”,打开导入表数据的弹框,在“选择数据源”中选中“样例.xls”文件;在“选择X/Y坐标数据”中,X坐标选择WEITING_poi_x(经度),Y坐标选择WEITING_poi_y(纬度);在“选择投影图层”中,选中CGCS2000坐标系;在“选择输出路径”中,选择保存路径即可。添加表数据界面如图5所示。

此时可得到新的结果,将温州市的栅格图层去掉,得到新的温州市鹿城区违停数据矢量图。如图6所示,图中紫色点为历史违停数据,绿色点为新增违停样例数据(彩圖见封二)。

导入数据窗体功能的实现分为3部分。第一部分为表数据选择,单击窗体上的“打开数据”按钮,激活系统窗口选择Excel文件,并读取其sheet数据和每一栏标题数据。关键代码如下:

OpenFileDialog file = new OpenFileDialog();

string[] SheetName;

file.Filter = "Excel03文件(*.xls)|*.xls|文本文件(*.txt)|*.txt";

file.Title = "选择数据表";

file.RestoreDirectory = true;

if (file.ShowDialog() == DialogResult.OK)

{

sheetcmbx.Items.Clear();

path.Text = @file.FileName;

if (System.IO.Path.GetExtension(file.FileName) == ".xls")

猜你喜欢

数据可视化
可视化:新媒体语境下的数据、叙事与设计研究
我国数据新闻的发展困境与策略研究