1.引入gps路径匹配开源项目barefoot
克隆仓库
git clone https://github.com/bmwcarit/barefoot.git
打开项目执行mvn命令将项目打包到maven仓库
mvn install -DskipTests
在自己的maven项目中引入barefoot依赖
<dependency><groupId>com.bmw-carit</groupId><artifactId>barefoot</artifactId><version>0.1.5</version></dependency>
下载地图数据
手动划定深圳市范围,下载osm.pbf格式数据
下载地址:https://extract.bbbike.org/
overpass api可下载指定城市或区域的地图
2.安装PostgreSql数据库及相关支持
安装PostgreSql
安装用于导入osm.pbf格式地图数据的工具osmosis,下载下来直接解压,并将其bin目录路径添加到环境变量path中即可。
下载地址:https://bretth.dev.openstreetmap.org/osmosis-build/
用osmosis将osm.pbf文件解压为.osm格式文件
osmosis --read-pbf shenzhen.osm.pbf --write-xml shenzhen.osm
下载安装对应ArcGIS版本的osm编辑插件,然后在插件中用load osm file将.osm文件导入到ArcGIS中,导入的时间可能会比较长,放在那等一下地图就会自己加载出来了
参考文章:https://support.esri.com/en/technical-article/000023329
3.将osm.pdf(或osm)地图数据导入到pg数据库
参考文章:PostgreSQL+PostGIS安装以及用Osmosis导入openstreetmap地图数据
首先在pgadmin4界面中新建一个数据库sz_osm,然后打开命令行终端,先运行两个给数据库安装扩展的命令,然后运行一个sql文件建表,注意sql文件路径中不能有中文或空格。
psql -U postgres -d sz_osm -c "CREATE EXTENSION postgis;"
psql -U postgres -d sz_osm -c "CREATE EXTENSION hstore;"
psql -U postgres -d sz_osm -f D:\IdeaProject\barefoot\map\osm\pgsnapshot_schema_0.6.sql
最后导入下载的osm.pbf地图数据
osmosis --read-pbf file=C:\Users\syc\Desktop\road_data\Road_data_download\shenzhen.osm.pbf --write-pgsql user=postgres database=sz_osm password=post
如果是osm格式的则将–read-pbf改为–read-xml。或者用如下命令将osm改为osm.pbf格式
osmosis --rx mainRoadByMerk.osm --wb mainRoadByMerk.osm.pbf
4. 使用barefoot库提供的脚本将pg数据库中的数据转换为bfmap格式
准备并启动python2.7环境,以下所有命令都要在python2.7环境中运行!!!!
安装三个Python库
conda install Psycopg2
conda install NumPy
conda install Python-GDAL
Python-GDAL这个库可能找不到,可安装gdal代替。安装时可能会出现环境无法解决的错误,解决方案可参考:https://blog.csdn.net/qq_27377201/article/details/107009927
conda install gdal
运行如下命令开始转换数据,注意新表名不要和原表名冲突
python D:\IdeaProject\barefoot\map\tools\osm2ways.py --host localhost --port 5432 --database sz_osm --table bf_ways --user postgres --slim
python D:\IdeaProject\barefoot\map\tools\ways2bfmap.py --source-host localhost --source-port 5432 --source-database sz_osm --source-table bf_ways --source-user postgres --target-host localhost --target-port 5432 --target-database sz_osm --target-table bfmap_ways --target-user postgres --config D:\IdeaProject\barefoot\map\tools\road-types.json
总结
使用开源库时一定要严格按照使用文档来,特别是软件包需要的版本,不能随意