构造GIS Web(瓦片地图)服务器

本文介绍了如何在内网构建瓦片地图服务器,满足离线查看地图的需求。通过下载Tomcat,获取OpenStreetMap数据,使用Maperitive转换并生成瓦片,然后部署到Tomcat服务器,最后使用前端JS(如openlayer)调用地图服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求场景

web页面需要制作离线地图,无法获得公开的瓦片地图地址。此时需要我们在内网中发布瓦片地图服务器

思路

瓦片地图的本质就是图片集合,其实就是搭建一个图片服务器

1.服务器使用tomcat

2.获取瓦片数据,放到tomcat中

3.使用前端代码绑定tomcat服务器瓦片地图地址

1.tomcat下载

Apache Tomcat® - Welcome!  使用官网链接找到对应的下载链接下载即可

2.瓦片数据下载

瓦片数据网上大家说的比较多,这里说一种自己尝试且成功的方式

1.下载OpenStreetMap离线地图数据 Geofabrik Download Server   

    主要是从这个网站下载osm 数据,选择区域后,下载即可

2.处理osm数据 使用Maperitive 这个软件处理osm数据 Maperitive

    运行exe程序,左上角 file->open map sources 找到下载的osm文件打开。

    此时右下角Map Sources 有两个地图数据源,将原生的取消。剩下的就是下载下来的地图。

3.使用命令行工具生成瓦片地图。

     左边部分 Commander ,打开,这个是个命令行工具

     在下方的Command prompt 可以输入指令。

     输入: (这里将zoom 范围设置的1~3)

        generate-tiles minzoom=1 maxzoom=3

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

实际上如果没有硬性要求,直接使用Maperitive原生的地图也可以导出。

3.数据部署

将tiles目录拉取到tomcat的webapp目录下,启动tomcat(默认端口8080)

使用url访问tiles下的资源   localhost:8080/tiles/1/2/3 (1,2,3这个目录才能访问,这里举个例子)

如果浏览器访问以上地址成功,则说明服务器搭建成功,前端可以使用相应的api调用即可

4.使用js进行调用

作者简单使用openlayer进行对瓦片服务的调用,并展示地图(暂时没有修改,应该是修改source部分 改为连接地址即可)

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <link rel="stylesheet" href=".\css\ol.css" type="text/css">   
    <script src=".\lib\ol.js"></script>  
    <title>Accessible Map</title>
  </head>
  <body>

        <div id="map" class="map" style="height:500px;width:700px"></div>  
    <script>          
      var extent=[-180,-90,180,83.62741851011907];//BBOX范围值          
      var map = new ol.Map({  
        layers: [
			new ol.layer.Tile({
				source: new ol.source.OSM()
			}),
			],
        target: 'map',  
        view: new ol.View({  
            center:[116.28, 39.54], //<1>设置固定中心点  
            zoom: 3
        })  
      });  
        
      //map.getView().setCenter(ol.extent.getCenter(extent));    // <2>动态设置中心点  
    </script>  
  </body>
</html>

### 瓦片地图服务的实现与应用 瓦片地图是一种通过将大范围的地图分割成许多小图片(称为“瓦片”),从而优化网络传输和客户端渲染的技术。这种技术广泛应用于地理信息系统(GIS)、在线地图平台以及移动设备导航等领域。 #### 实现原理 瓦片地图的核心在于分层存储机制,即将整个地球表面划分为多个缩放级别(zoom levels)。每一级由若干个小图像组成,这些图像是按照固定的网格结构排列的。当用户请求特定区域的地图时,服务器只需返回该区域内对应的几个瓦片即可[^1]。 #### 下载瓦片地图 为了创建离线瓦片地图服务,第一步是从公开数据源或者商业提供商处获取所需的瓦片文件。通常可以利用开源工具如`GDAL`或专门用于抓取瓦片服务程序来完成这一过程。需要注意的是,在下载过程中要遵循版权规定并确认所使用的底图是否允许离线部署。 #### 搭建本地/局域网瓦片地图服务 一旦获得了足够的瓦片素材之后,则需要将其转换为适合Web标准的形式,并设置HTTP接口供前端调用。以下是两种常见的方法: - **使用GeoServer**: GeoServer是一款强大的开源GIS服务器软件,支持发布多种类型的地理空间数据集,其中包括基于MBTiles格式封装好的瓦片包。配置完成后可以通过WMS/WMTS协议访问已发布的资源。 - **轻量级解决方案 - TileStache 或 MapProxy**: 如果项目规模较小且不需要复杂的管理功能的话,可以选择TileStache或MapProxy这样的框架快速启动简单的瓦片服务实例。它们易于安装维护并且性能良好适用于内部测试环境下的演示用途。 #### QGIS中的展示方式 QGIS作为一款流行的桌面端GIS应用程序提供了丰富的插件生态系统以便于集成外部地图服务链接。对于自定义构建的离线瓦片地图而言,主要依赖XYZ Tiles选项卡手动输入相应的URL模板地址指向到自己的托管位置上去加载预览效果。 ```python # 示例 Python 脚本片段:生成 XYZ URL 地址模式字符串 base_url = "http://localhost/tiles/{z}/{x}/{y}.png" print(base_url.format(z=0, x=0, y=0)) ``` 上述代码展示了如何动态构造一个典型的XYZ样式路径表达式,其中变量部分会被实际坐标数值替换掉最终形成完整的GET请求命令串发送给后台处理单元解析执行检索操作得到目标像素块内容反馈回来呈现画面上去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵湖映北辰

年轻人,要讲武德!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值