【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.
使用刚刚在线下载的瓦片地图数据,效果显示如下

参考
- 下载OpenStreetMap离线地图数据并搭载瓦片服务器_openstreetmap瓦片下载-CSDN博客
- OpenStreetMapDataProvider.TileUriTemplate Property | WinForms Controls | DevExpress Documentation
- https://github.com/DevExpress-Examples/winforms-map-connect-to-openstreetmap.git
- http://maperitive.net/
- https://github.com/VinciYan/tiles_rs.git
- https://github.com/philr/bzip2-windows.git
相关文章:
【Rust】使用开源项目搭建瓦片地图服务
本文通过获取在线和离线地图数据,使用开源Rust项目搭建瓦片地图服务,并使用DevExpress的MapControl控件使用自建地图服务 获取地图数据 获取地图数据有很多种方式,这里分别用在线和离线地图数据举例说明 在线下载瓦片地图 打开在线瓦片地…...
【面试宝典】mysql常见面试题总结(上)
一、MySQL 中有哪几种锁? MySQL中的锁机制是数据库并发控制的重要组成部分,它用于管理多个用户对数据库资源的访问,确保数据的一致性和完整性。MySQL中的锁可以根据不同的分类标准进行分类,以下是一些常见的分类方式及对应的锁类…...
第1章 初识C语言
第1章 初识C语言 1.1 C语言概述 1.1.1 C语言的发展历史 C语言的原型为ALGOL 60语言(也称A语言)。 1963年 剑桥大学将ALGOL 60语言发展成为GPL语言。 1967年 剑桥大学的Matin Richards简化GPL,产生了BGPL语言。 1970年 美国贝尔实验室的Ken…...
【考研数学】定积分应用——旋转体体积的计算(一文以蔽之)
目录 一、如何计算旋转体体积?思考一个小例子 二、旋转体体积的二重积分表达式 三、用真题,小试牛刀 定积分的应用中,有一类题是求解旋转体的体积问题。 相较于记忆体积计算公式,有一种通法求解体积更不容易出错:二重…...
PHP移动端商城分销全平台全端同步使用
📱【掌中购物新纪元:探索移动端购物商城系统的无限魅力】🛍️ 🚀 随时随地,购物自由新体验 在这个快节奏的时代,移动端购物商城系统彻底颠覆了传统购物方式,让消费者享受到了前所未有的便捷与…...
TLE8386-2EL:汽车级DC-DC转换器中文资料书
描述 TLE8386-2EL是一款具有内置保护功能的低端感应升压控制器。该器件的主要功能是将输入电压升高(升压)到更大的输出电压。开关频率可从100kHz调整至700kHz,并可与外部时钟源同步。 TLE8386-2EL的独特功能可将关断电流消耗降至 <2μA。该…...
EasyRecovery17中文mac苹果电脑版数据恢复软件 永久免费破解版下载
🎉 数据丢失不再是噩梦!EasyRecovery17中文版来拯救你的硬盘啦! 各位小伙伴们,有没有遇到过重要文件一不小心就消失无踪的尴尬情况?别担心,今天就给大家种草一款神奇的工具——EasyRecovery17中文版&#x…...
Ubuntu 22.04 安装 VirtualBox7
Ubuntu默认库为VirtualBox-6版本 # 安装 VirtualBox-6 sudo apt update sudo apt install virtualbox# 卸载 VirtualBox-6 sudo apt remove --purge --auto-remove virtualbox virtualbox-6.1 1. 安装 VirtualBox-7 # 导入软件包密钥 curl https://www.virtualbox.org/downl…...
NPM使用教程:从入门到精通
NPM使用教程:从入门到精通,掌握Node.js包管理神器 引言 随着Node.js的流行,JavaScript已经成为服务器端开发的主力军。NPM(Node Package Manager)作为Node.js的官方包管理工具,为开发者提供了一个庞大的代…...
模电实验3 - 单电源集成运放交流耦合放大器
实验目标 学习集成运放的单电源使用。掌握交流耦合单电源集成运放放大器的测试方法。了解交流耦合单电源集成运放放大器的特点。 实验器材 ADALM2000 1kΩ 电阻 (1/4 W) x 1 10 kΩ 电阻 (1/4 W) x 1 100kΩ 电阻 (1/4 W) x 3 0.1μF电容 x 1 1μF电容 …...
海对外经贸大学学报
《上海对外经贸大学学报》创刊于1994年,原名为《世界贸易组织动态与研究》(上海对外贸易学院学报),随原上海对外贸易学院更名为上海对外经贸大学,自2014年起更为现名,现为综合性社科类双月刊,为中文社会科学引文检索&a…...
数字化营销在公域场景中的无限可能
在如今的商业领域,公域场景为企业提供了广阔的发展空间,而数字化营销则成为了企业在这些场景中脱颖而出的关键利器。 一、电商平台营销 当企业在淘宝、京东等大型电商平台开设店铺,数字化营销便开始大显身手。 企业不仅能踊跃参与像双十…...
聚观早报 | 一加13配置细节曝光;谷歌首推人工智能手机
聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 8月15日消息 一加13配置细节曝光 谷歌首推人工智能手机 MONA M03汽车即将上市 iPhone SE 4将升级8GB运行内存 R…...
C++ 11相关新特性(lambda表达式与function包装器)
目录 lambda表达式 引入 lambda表达式介绍 lambda表达式捕捉列表的传递形式 lambda表达式的原理 包装器 包装器的基本使用 包装器与重载函数 包装器的使用 绑定 C 11 新特性 lambda表达式 引入 在C 98中,对于sort函数来说,如果需要根据不同的比较方式实现…...
FastAPI部署大模型Llama 3.1
项目地址:[self-llm/models/Llama3_1/01-Llama3_1-8B-Instruct FastApi 部署调用.md at master datawhalechina/self-llm (github.com)](https://github.com/datawhalechina/self-llm/blob/master/models/Llama3_1/01-Llama3_1-8B-Instruct FastApi 部署调用.md) …...
C++拾趣——编译器预处理宏__COUNTER__的应用场景
大纲 生成唯一标识符调试信息宏展开模板元编程代码 在C中,__COUNTER__是一个特殊的预处理宏,它主要被用来生成唯一的整数标识符。这个宏是由一些编译器(如GCC和Visual Studio)内置支持的,而不是C标准的一部分。它的主要…...
使用HTML和cgi实现网页登录功能
0.HTML文件结构 一.HTML文件 1.test.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>菜鸟教程(runoob.com)</title></head><body><!-- 将结果提交给/cgi-bin/test.cgi下 --><form actio…...
Java流程控制01:用户交互Scanner
本节教学视频链接:https://www.bilibili.com/video/BV12J41137hu?p33&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p33&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 Scanner 类用于扫描输入文本从字符串中提…...
什么是回滚
回滚(Rollback)是指当程序或数据出现错误时,将程序或数据恢复到最近一个正确版本或上一次正确状态的行为。回滚机制在软件开发、数据库管理、系统部署等多个领域都有广泛应用,旨在保证系统的稳定性和数据的完整性。以下是关于回滚…...
Java项目通过IDEA远程debug调试
前言 在我们真实项目开发过程中,又是经常会发现一种问题,就是我们在开发环境功能是正常的,在测试环境可能也不太容易发现问题。 结果到了生产环境,由于数据量大,且数据类型变多后,就产生了一些比较难复现…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
