-
Notifications
You must be signed in to change notification settings - Fork 2
License
OrangeMoonOrange/Trace
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published