OSM地图本地发布(一)-----概述

article/2025/7/22 2:51:40

目录

一、前言

二、开源GIS介绍

1.前端GIS框架

2.后端技术

3.空间数据库

4.地图服务器

4.GIS软件

三、技术选型

四、文章目录

1.OSM本地发布(一)-----概述

2.OSM本地发布(二)-----数据准备

3.OSM本地发布(三)-----自定义图层提取

4.OSM本地发布(四)-----Geoserver发布自定义地图

5.OSM本地发布(五)-----Geoserver发布海洋图层


一、前言

        随着互联网技术不断发展,WebGIS领域也有了更好的发展前景;一直想弄清楚在线地图如何发布,实现类似百度地图、高德地图的在线地图服务;由于国内一直以来有这样大型地图服务公司提供地图服务,再者有Esri、SuperMap这样大型GIS公司他们有成熟的技术和解决方案,很少有人去折腾用开源技术如何发布自己的地图服务,提供定制化的地图;网上能找到的资源或教程零零散散没有一个完整的技术路线和解决方案,现从GIS五大功能数据采集与输入、空间数据管理、地图提取、地图制图、数据输出一步一步实现OSM地图本地发布。

       在探索过程中,《WebGIS开发学习路线》、GIS兵器库的文章《我的开源GIS解决方案之路》对开源技术选取有所帮助;think8848的系列文章《Geoserver发布OSM地图》、 GIS兵器库的文章《如何实现OSM地图本地发布并自定义配图》对地图服务发布流程有所了解;不睡觉的怪叔叔提供了关于WebGIS相关技术的《文章汇总》。

二、开源GIS介绍

       当前商业GIS软件的使用和维护费用越来越高,例如包含客户端与服务器端一整套的ESRI ArcGIS软件售价约为70万元人民币。而且其销售策略是,若购买了服务器端软件则必须购买客户端软件,其理由是用户既然使用了其服务器端软件来发布服务,那必然就需要使用其客户端软件来处理数据。这对一些比较小的WebGIS应用来说,远远超出了其可承受的范围。并且众多商业软件GIS的数据和操作并非完全能够转换和共享,造成一些信息孤岛。

        不过在商业GIS软件的对面活跃着开源GIS。OGC成立于1994年,致力于研究和建立开放地理数据交互操作标准,使用户和开发者能进行互操作。国际地理空间开发基金会(Open Source Geospatial Foundation)成立于2006年2月,其使命是支持开源地理信息软件和遥感软件的开发及推动其更广泛的应用,并对其支持的项目提供组织、法律和财政上的帮助,促进OSGeo基金会基于地理信息开发标准软件及其互操作技术的开发、推广和普及。OSGeo中国中心于2006年9月成立,帮助中国地区的用户和开发者更好地使用OSGeo基金会提供的源代码、产品和服务。

1.前端GIS框架

Openlayers:一个前端UI库,用于使用javascript创建基于Web的空间应用程序。 它支持各种图层源和后端。 例如,可以从GoogleMaps或自定义磁贴源中提取地图图块。这带来的优势在于它使开发人员能够重用诸如tile源之类的元素,而是将注意力集中在其应用程序的更独特方面,例如“业务逻辑”。平铺源等默认组件可以在以后轻松换出。 它支持位图和矢量图层,包括点,线和多边形。 其最广泛使用的功能之一是能够在基本地图上叠加数据层。推荐的第三方库:ol-ext是对 Openlayers 的功能扩展,很全面;包括编辑相关的打断、移动、撤销要素等。

官方网站:http://openlayers.org

Leaflet:一个Javascript库,强调前端UI。 它支持多种基础层和几何类型的组合。 它覆盖了与OpenLayers有些相似的领域,但功能略有减少。 相对于OpenLayers而言,它的优势在于其对移动设备的出色支持,卓越的产品价值,简洁的简约设计以及对性能的强烈关注。一个小而轻量级的 WebGIS 框架,主要移动端项目比较多;强大的插件扩展,让这个框架功能更丰富;麻雀虽小,但五脏俱全。

官方网站:http://leafletjs.com/

Mapbox GL:这个框架是近年来比较火的一个 WebGIS 框架;它是一个 JavaScript 库,使用 WebGL 技术和 Mapbox 样式渲染交互式地图,在渲染速度上比OpenlayersLeaflet要好。它是 Mapbox生态系统的一部分;其中包括 Mapbox Mobile,它是用 C ++ 编写的兼容渲染器,具有针对台式机和移动平台的绑定。Mapbox 2.0版本后,必须使用官网申请的token使用,它会记录你的使用次数,超过次数要进行收费。

官方网站:https://www.mapbox.com/

Cesium:一个用于显示三维地球和地图的开源js库。它可以用来显示海量三维模型数据、影像数据、地形高程数据、矢量数据等等。三维模型格式支持gltf、三维瓦片模型格式支持3d tiles。矢量数据支持geojson、topojson格式。影像数据支持wmts等。高程支持STK格式。

官方网站:https://www.cesium.com/

2.后端技术

GeoTools:一个开源的 Java GIS 工具包,可利用它来开发符合标准的地理信息系统。GeoTools 提供了 OGC(Open Geospatial Consortium)规范的一个实现来作为他们的开发。GeoTools 被许多项目使用,包括 Web 服务,命令行工具和桌面应用程序。目前的大部分基于Java的开源GIS软件,如udig,geoserver等都是调用GeoTools库来进行空间数据的处理。

官方网站:https://geotools.org/

3.空间数据库

PostGIS:PostgreSQL数据库的扩展,它支持空间查询。PostgreSQL既是关系数据库又是对象数据库,被广泛认为是最先进的开源数据库,与Oracle和MS-SQL 类似。 PostGIS支持各种空间查询,包括邻近度,半径,边界框,碰撞/重叠检测等。 它是Web GIS项目中经常使用的非常有用的工具。

官方网站:PostGIS — Spatial and Geographic Objects for PostgreSQL

4.地图服务器

GeoServer:OpenGIS Web 服务器规范的 J2EE 实现,利用 GeoServer 可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以比较容易的在用户之间迅速共享空间地理信息。兼容 WMS 和 WFS 特性;支持 PostgreSQL、 Shapefile 、 ArcSDE 、 Oracle 、 VPF 、 MySQL 、 MapInfo ;支持上百种投影;能够将网络地图输出为 jpeg 、 gif 、 png 、 SVG 、 KML 等格式;能够运行在任何基于 J2EE/Servlet 容器之上;嵌入 MapBuilder 支持 AJAX 的地图客户端OpenLayers;除此之外还包括许多其他的特性。

官方网站:http://geoserver.org/

MapServer:由美国明尼苏达大学和美国太空总署(NASA)开发的一个开源的WebGIS软件。MapServer作为WebGIS解决方案,它是面向对象的,基本配置文件MapFile和MapScript模块的API组织都是基于对象的。MapServer通过支持OGC协会的若干标准,支持分布和互操作。MapServer是基于胖服务器/瘦客户端模式开发的webgiS平台,读取地理数据,并利用GD库绘制好jpg/png/gif格式的图片后再传回客户端浏览器。MapServer支持在Windows、UNIX、Linux等多种平台。MapServer支持OGC的WMS/WFS服务规范。MapsServer本身是由C语言编写的程序,提供了两种开发模式,一种是基于CGI的,另一种是MapScript方式。MapScript支持的语言:PHP,Perl,Python,java,Tcl,C#等。MapServer可以看作是两个独立模块的统称:MapServer CGI模块和MapScript模块。在服务器端可以使用任一模块,编写WebGIS程序。功能上MapServer弱于GeoServer,效率上Mapserver对WMS的支持更为高效,而Geoserver则更擅长于结合WFS规范的属性查询。

官方网站:https://mapserver.org/

4.GIS软件

QGIS:一个用户界面友好的开源桌面端软件,支持数据的可视化、管理、编辑、分析以及印刷地图的制作,并支持多种矢量、栅格与数据库格式及功能。可运行在Linux、Unix、Mac OSX和Windows等平台之上。QGIS是基于跨平台的图形工具Qt软件包、使用C++开发的跨平台开源版桌面地理信息系统。目标是成为一个使用简单的GIS,提供了常见的功能。QGIS是开源GIS的集大成者,整合了GRASS、SAGA GIS等多个开源桌面软件工具。

官方网站:https://www.qgis.org/en/site/

udig:一个开源的桌面引用程序框架,构建在Eclipse RCP和GeoTools(一个开源的Java GIS工具包)上的桌面GIS;是一款开源桌面GIS软件,基于Java和Eclipse平台,可以进行shp格式地图文件的编辑和查看;是一个开源空间数据查看器/编辑器,对OpenGIS标准,关于互联网GIS、网络地图服务器和网络功能服务器有特别的加强。uDig提供一个一般的java平台来用开源组件建设空间应用。操作没QGIS友好,数据量大了容易崩溃,但生成的样式是GeoServer支持的SLD格式。

官方网站:http://udig.refractions.net/

SLDEditor:编辑地图样式的 Java 桌面应用程序,允许使用图形用户界面以交互方式创建和编辑OGC 样式层描述符。该项目的目的是开发一个应用程序,使SLD文件的生成,其中用户可以完全控制OGC SLD标准的所有方面。

官方网站:https://github.com/sldeditor/sldeditor

Maputnik:Mapbox样式规范的开源可视化编辑器,它和Mapbox的mapbox studio、百度地图的个性化地图编辑器、高德地图的自定义地图编辑器是类似的东西,都是用来编辑矢量瓦片地图样式,属于在线地图制图工具。相关文章《让maputnik支持geoserver》。

官方网站:https://github.com/maputnik

三、技术选型

      基于OSM本地地图发布,我使用的技术组合方案:Openlayers + GeoServer + PostGIS。

数据采集与输入、空间数据管理、地图提取

      在Geofabrik Download Server中下载OSM数据,使用osm2pgsql工具导入PostGIS数据库。

地图制图

     使用udig、SLDEditor、maputnik工具调节样式生成SLD文件,导入Geoserver。

数据输出

    使用Openlayers加载Geoserver发布的地图服务。

 OSM地图发布流程图

四、文章目录

1.OSM本地发布(一)-----概述

2.OSM本地发布(二)-----数据准备

3.OSM本地发布(三)-----自定义图层提取

4.OSM本地发布(四)-----Geoserver发布自定义地图

5.OSM本地发布(五)-----Geoserver发布海洋图层


http://chatgpt.dhexx.cn/article/uH97DkMs.shtml

相关文章

中国省份/城市OSM地图数据

下载访问地址 网站截图

数据分享|2023年OSM道路数据(全国,分省,分市)

道路数据是我们在各项研究中经常使用的数据!道路数据虽然很常用,但是却基本没有能下载最近年份道路数据的网站,所以很多人不知道如何获到道路数据。 本次我们为大家推荐的下载道路数据的网站是Open Street Map!我们先来了解下Open Street Map,其简称为OSM,是一个开源的地…

基于 OSM 构建全球瓦片地图(一):概述

一、什么是OSM 开放街道地图(英语:OpenStreetMap,缩写为OSM),其概念启发自维基百科网站,是一个建构自由内容之网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。 从2007年…

Python实现OSM地图数据解析——OSM2GMNS

目录 1. 开源地图OSM2. 数据解析方法对比3. OSM2GMNS3.1 关于GMNS数据格式3.2 安装方法3.3 使用方法3.3.1 地图数据下载3.3.2 数据解析 3.4 输出文件 4. 可视化5. 总结参考 1. 开源地图OSM OpenStreetMap(www.openstreetmap.org)是一款知名的开源地图数…

利用微信网页录音接口实现语音搜索

微信网页接口有3个录音相关接口 开始录音接口 wx.startRecord();停止录音接口 wx.stopRecord({ success: function (res) { var localId res.localId; } });监听录音自动停止接口 wx.onVoiceRecordEnd({ // 录音时间超过一分钟没有停止的时候会执行 complete 回调 complete…

Unity WebGL基于js通信实现网页录音

Unity WebGL基于js通信实现网页录音 由于Unity发布WebGL后无法使用Unity中的Microphone,所以无法进行录音,只能借助与网页进行录音操作,因此基于Unity新版页面对接方式jslib实现页面录音。可以将录音数据回传至unity,并在unity中进行播放。理…

php录音功能,h5做出网页录音功能

这次给大家带来h5做出网页录音功能,h5做出网页录音功能的注意事项有哪些,下面就是实战案例,一起来看一下。 得益于前辈的分享,做了一个h5录音的demo。效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: …

java 网页 录音_Java+FlashWavRecorder实现网页录音并上传【新】

【注意】 【说明】 1.在线录音并直接上传到服务器中 【使用】 1.运行 1.请下载本项目,并导入myeclipse中 2.跑起项目,访问http://localhost:8080/recorder-online-upload查看效果 2.定制 1.打开WEB-INF/view/index.html 2.只有两段html注释中的代码是需要…

java 网页 录音_Java+FlashWavRecorder实现网页录音并上传

【注意】 【前言】 肯定有需求要网页录音,并且要上传。这奇葩需求。 然后找到了FlashWavRecorder, 【原始版本号】 1.下载 在上面的地址下载zip解压之后,目录里面有个index.html。打开之后这效果: 2.录音权限 必须保证你的电脑有麦…

10.WebRTC实现网页录音功能

一、概述 通过WebRTC,实现在页面上进行录音,并将录音结果转换为.wav格式进行播放 二、录音实现 检测是否有麦克风权限 navigator.mediaDevices.enumerateDevices().then(function(devices) {// 检测视频输入let video devices.find((device) > {…

uniapp中使用网页录音并上传声音文件(发语音)——js-audio-recorder的使用【伸手党福利】

uniapp中上传音频只能在app或小程序当中实现,如何使用网页完成语音的录制和上传则成为了困扰前端童鞋的重点。 本文着重解决: js-audio-recorder报 error:浏览器不支持getUserMedia ! 的问题。 js-audio-recorder报 NotFoundError : Requested device no…

前端实现在浏览器网页中录音

一、整体实现的思想 页面中实现录音需要使用浏览器提供的MediaRecorder API,所以要实现页面录音就需要浏览器支持MediaStream Recording相关的功能,即浏览器能够获取浏览器的录音权限。 页面内容,需要一个记录录音开始和结束的按钮,以及一个用…

基于神经网络的自适应最优控制

《 N e u r a l n e t w o r k a p p r o a c h t o c o n t i n u o u s − t i m e d i r e c t a d a p t i v e o p t i m a l c o n t r o l f o r p a r t i a l l y u n k n o w n n o n l i n e a r s y s t e m s 》 D r a g u n a V r a b i e ∗ , F r a n k L e w …

堆排序(排升序为啥建大堆,排降序为啥建小堆)

简介: 之前对堆排序认识的不是很透彻,今天回过头来再把堆排序的知识整理整理!以及排升序为什么要建大堆,排降序要建小堆。 正文: 首先我们要知道:   ①堆的逻辑是一颗完全二叉树;   ②它使…

残差网络Residual Networks-残差网络的创建、训练、测试、调参

残差网络的创建、训练、测试、调参加粗样式 在Keras中实现残差网络模型的创建,并通过模型来实现对图片的分类。 残差网络的预备知识 网络越深越好? 随着网络层级的不断增加,模型精度不断得到提升,而当网络层级增加到一定的数目…

堆排序,为什么升序排列要建大堆,降序排列要建小堆

堆排序中用到了建立大小堆和向下调整的内容,对这些内容有些不了解的同学可以去补一补专门写堆的博客,方便更好的理解堆排序数据结构之堆(Heap),堆的相关操作,用堆模拟优先级队列。 如果把待排序序列分为未排…

操作系统——动态分配算法(首次适应算法,最佳适应算法,最坏适应算法及回收)

操作系统——动态分配 写的时间早了,有些许漏洞和不足,请大家不要介意 分配方式可分为四类:单一连续分配、固定分区分配、动态分区分配以及动态可重定位分区分配算法四种方式,其中动态分区分配算法就是此实验的实验对象。动态分区分配又称为…

pandas中对列进行排序(单列/多列)/(升序/降序)/(多列升序,降序控制)

前言 我想把数据分析刻进DNA里 如下面的数据,对price,要进行最简单的升序操作: 这个好整: import pandas as pdshop pd.read_csv("data/shop.csv", index_colid)shop.sort_values(byprice, inplaceTrue)结果: 如果你想整活(被迫)要把数据进行降序排列: 按照降序,传…

最先适应法、最佳适应法、下次适配法、最差适配法

题: 分析: 1. 首先分析是不是最差适配法,最差适配法意思是首先找到最大的内存空间进行分配, 对于请求的5K存储空间,首先找到地址200K容量为56K的地方进行分配,然后剩余51K。 再对请求的15K进行分配&…

自适应滤波器更新算法-EP1

自适应滤波器更新算法-EP1 自适应滤波器是回声消除系统中非常重要的一个功能模块,而对于自适应滤波器来说,如果更新滤波器系数则是关键所在。本文将介绍几种现有的滤波器更新算法,并附上Matlab测试代码。 1、LMS算法 1.1算法原理 LMS算法即…