Skip to content

yy2lyx/Trace

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

说明:

(1)项目需求:1)从GPS轨迹中提取道路路网;2)使用从GPS轨迹数据提取的道路网络补充OSM路网,实现增量更新OSM道路路网

(2)数据分析:
	真实数据来源于昆山巡检的轨迹数据,这里使用测试数据,testdb.csv(testData文件夹下)作了简化,实际查询一样
	数据格式:GID,PATROLERID,UPTIME,PATROLTRACE1,PATROLTRACE2,分隔符号:‘;’
	其中PATROLTRACE1的格式:

	
	测试数据库说明:
	trace数据库
		表一:data:作为数据源头
		表二:
			base_roadnet_nod:初始地图点存储
			base_roadnet_lin:初始地图边存储
			full_roadnet_nod:增量地图点存储
			full_roadnet_lin:增量地图边存储


(3) 环境搭建
使用anaconda 2.7 搭建 (anaconda环境导入参考文章:https://blog.csdn.net/li1014269733/article/details/93880580)
配置环境的yaml文件:env.yaml
切换环境脚本:activate.bat
环境构建脚本:bulid.bat
(4)项目结构
Trace:
    docs:配置文件目录
    pylib:一些依赖
    src:
        app:resultful接口
        conf:配置管理类
        Dao:数据库连接
        evaluation:算法精度评价
        kde:算法程序
        preprocessing:预处理程序
        test:测试文件夹
        utils:工具类
    testdata:测试数据
(5)主要类说明
kde.py 产生kde图像:kde.png
skeleton.py 从kde图像产生骨架化图像:skeleton.png
graph_extract.py 从skeleton.png图像中提取初始地图:skeleton_map_1m.db
graphdb_matcher_run.py 将skeleton_map_1m.db和原始的道路轨迹进行地图匹配,产生匹配的轨迹
process_map_matches.py 处理地图匹配后的轨迹,主要是用作后续去掉道路的依据
JDBCHelper.py JDBC辅助类
genTrip.py 从数据库获取轨迹辅助类,初始轨迹的预处理类
ogr_write.py 将db数据写成shp文件格式
utils.py 工具类
viterbi.py viterbi算法

(6)文件夹说明
所有的中间结果存在配置文件 default中:prefix=../../temp/ 目录下。
temp文件夹:所有中间输出和结果
temp/bounding_boxes:数据边界框
temp/db:db文件;其中initdb:初始地图,initdb_bak:初始地图备份;updatedb:本次增量轨迹生成的db
temp/matched_trips_directory_1:HMM匹配后的所有轨迹点
temp/newTripOut:匹配后的中断点,作为kde 的输入
temp/shapefile:shp文件,before:initdb的shp文件;update:本次输入的轨迹的shp文件;after:最终initdb的shp文件;
    shp文件中用fclass字段 来表示道路的等级,0表示为initdb 道路,1表示为本次更新的道路
temp/skeleton_images:中间图

(7)pipeline逻辑说明(算法入口)

src.pipeline.run.createInitMap(from,end):生成初始地图,
    从数据库查询时间段from-end的轨迹,作为输入,;整个流程:
    kde.py->skeleton.py->graph_extract.py->graphdb_matcher_run.py->process_map_matches.py

src.pipeline.run.fromTimeDataUpdateBaseMap(from.end):增量更新地图;逻辑:
    将from-end的轨迹和初始地图进行匹配,产生中断点轨迹,这部分你轨迹就是增量的轨迹,然后将增量轨迹作为方法:
    src.pipeline.run.createInitMap的输入,然后需要对后序的地图进行拓扑的修整


类kde.pipeline 作为整个算法的入口
函数1:src.kde.pipeline.runFullData2Map,作用:产生全量地图

函数2:src.kde.pipeline.runUpdateData2Map(from_time,end_time),作用在:初始地图的基础上,使用时间段(from_time,end_time)
来更新初始地图
输出说明:
    会在$/temp/db/initdb 目录下生成初始地图(时间段为"2019-01-01", "2019-08-01",待改进)
    会在$/temp/db/updatedb 目录下生成你输出的时间段(from_tim,end_time)来更新初始地图的结果

 可视化输出:在$/temp/shapefile 对应的目录下会生成 before.shp,update.shp,after.shp
 分别表示:初始地图,此次更新的地图,最终合并的地图





(8)待完成清单
a.实际这部分应该从其他来源,且应该存入数据库,直接获取构建,
b.增量地图得拓扑修整
c.完成数据最终存储






About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%