当前位置: 首页 > news >正文

【Rust】使用开源项目搭建瓦片地图服务

本文通过获取在线和离线地图数据,使用开源Rust项目搭建瓦片地图服务,并使用DevExpress的MapControl控件使用自建地图服务

获取地图数据

获取地图数据有很多种方式,这里分别用在线和离线地图数据举例说明

在线下载瓦片地图

打开在线瓦片地图下载网站,【划范围】,勾选精度,【下载】

在这里插入图片描述

在这里插入图片描述

下载后得到压缩包“tiles.zip”

下载OpenStreetMap离线地图数据

OpenStreetMap是一个自由的街道级世界地图,它由日益壮大的绘图者团体创造。 任何人都可以编辑OpenStreetMap

数据下载地址:Geofabrik Download Server

在这里插入图片描述

下载后缀为“.bz2”格式的文件,使用开源项目工具bzip2处理

比如下载文件为“antarctica-latest.osm.bz2”,处理后得到文件“antarctica-latest.osm”

bunzip2 antarctica-latest.osm.bz2

接着处理.osm文件,使用maperitive,打开maperitive软件,打开文件“antarctica-latest.osm”

右下角【Map Sources】取消勾选“Web map”

在这里插入图片描述

在【Command prompt:】输入如下命令,maxzoom设置范围1-5,范围最大值越大,看到细节更多,Tiles文件夹体积也越大

generate-tiles minzoom=1 maxzoom=5

运行过后,在maperitive的安装目录下就会多一个Tiles文件夹

搭建开源瓦片地图服务

这里我使用本人用Rust开发的tiles_rs,启动服务的命令如下

tiles_rs.exe --tiles-dir=C:\Users\Tiles --host=0.0.0.0 --port=5000 --log_level=warn
  • tiles-dir: 为瓦片地图数据文件夹
  • host: 服务器IP地址
  • port: 端口
  • log_level: 日志级别

更多使用方式,查看help命令

tiles_rs.exe --help
================================================================================
Overview
================================================================================
Tiles_rs is an open-source project that aims to provide a fast and reliable tile map server implementation using Rust.
Built on top of the Actix web framework, this project offers a modern approach to serving map tiles,
catering to the needs of developers working on geographic information systems (GIS) and web mapping applications.# Examples‍```sh
tiles_rs.exe --tiles-dir=C:\Users\Tiles --host=0.0.0.0 --port=5000 --log_level=warn
‍```# Api- /tiles/{z}/{x}/{y}{z} - The current zoom level.
{x} - The horizontal (X) index of the requested tile.
{y} - The vertical (Y) index of the requested tile.Usage: tiles_rs.exe [OPTIONS]Options:--tiles-dir <TILES_DIR>Directory containing tile images[default: Tiles]--host <HOST>Host to bind the server to[default: localhost]--port <PORT>Port to bind the server to[default: 5000]--log-level <LOG_LEVEL>Log level (error, warn, info, debug, trace)[default: info]-h, --helpPrint help (see a summary with '-h')-V, --versionPrint version

使用地图数据

这里使用DevExpress v24.1的MapControl控件,项目代码在Github,只需要修改一行代码,修改使用地图的数据接口模板

provider.TileUriTemplate = "http://IP:PORT/tiles/{1}/{2}/{3}";
  • {1} - The current zoom level.
  • {2} - The horizontal (X) index of the requested tile.
  • {3} - The vertical (Y) index of the requested tile.

使用刚刚在线下载的瓦片地图数据,效果显示如下

在这里插入图片描述

参考

  1. 下载OpenStreetMap离线地图数据并搭载瓦片服务器_openstreetmap瓦片下载-CSDN博客
  2. OpenStreetMapDataProvider.TileUriTemplate Property | WinForms Controls | DevExpress Documentation
  3. https://github.com/DevExpress-Examples/winforms-map-connect-to-openstreetmap.git
  4. http://maperitive.net/
  5. https://github.com/VinciYan/tiles_rs.git
  6. https://github.com/philr/bzip2-windows.git
http://www.lryc.cn/news/425073.html

相关文章:

  • 【面试宝典】mysql常见面试题总结(上)
  • 第1章 初识C语言
  • 【考研数学】定积分应用——旋转体体积的计算(一文以蔽之)
  • PHP移动端商城分销全平台全端同步使用
  • TLE8386-2EL:汽车级DC-DC转换器中文资料书
  • EasyRecovery17中文mac苹果电脑版数据恢复软件 永久免费破解版下载
  • Ubuntu 22.04 安装 VirtualBox7
  • NPM使用教程:从入门到精通
  • 模电实验3 - 单电源集成运放交流耦合放大器
  • 海对外经贸大学学报
  • 数字化营销在公域场景中的无限可能
  • 聚观早报 | 一加13配置细节曝光;谷歌首推人工智能手机
  • C++ 11相关新特性(lambda表达式与function包装器)
  • FastAPI部署大模型Llama 3.1
  • C++拾趣——编译器预处理宏__COUNTER__的应用场景
  • 使用HTML和cgi实现网页登录功能
  • Java流程控制01:用户交互Scanner
  • 什么是回滚
  • Java项目通过IDEA远程debug调试
  • Python 绘图入门
  • RK3568平台(背光篇)背光驱动代码分析
  • 华为od统一考试B卷【比赛】python实现
  • Prometheus 监控接入规范
  • 优化 SQL 查询性能:深入理解 EXPLAIN 命令
  • @Mapper报红
  • shell综合小实验1-----查看系统硬件信息
  • 【过程管理】项目需求管理规程(Word原件)
  • C# 不使用 `async` 和 `await` 的常见场景
  • adb目录笔记《adb更新、进入开发者模式,adb查询packages、adb开启应用,查询进程、强制删除进程》
  • VS2022 C++ EasyX EGE 吃豆人升级版