使用天地图加载Geoserver的图层

一、写在前面

在项目中往往使用地图作为底图(比如 天地图卫星图等),再其上覆盖你的通过geoserver发布自定义图层。本文记录了我的实现方法。

二、过程

2.1 我遇到的难题

  • 遇到难题1:使用无人机拍摄制作的正射影像图有几百MB甚至1个G,直接展示图片方式会很卡顿。我的解决方法是,使用geoserver作为 GIS 地图服务,发布 GEO TIFF 图层,再在Openlayers 中展示。
  • 遇到难题2:geoserver 默认未开启跨域支持,需要修改web.xml配置文件开启跨域支持。
  • 遇到难题3:坐标系问题,无人机拍摄制作的正射影像图 是EPSG:4326 坐标系的,要注意在 geoserver中的选择这个配置。配合合适的底图来使用。
  • 遇到难题4:使用什么底图合适?无人机拍摄制作的正射影像图在地图展示会很突兀,在卫星图上展示比较合适,我选择了支持 EPSG:4326 坐标系的天地图

2.2 方法和步骤

整体来说,就是先制作 正射影像图,发布成图层,并在 Web 前端展示的过程。

过程如下图所示:

图层说明

制作 正射影像.TIFF 和发布图层 的步骤:

1、无人机飞行 拍摄得到 正射影像照片
2、使用 大疆智图 生成 正射影像图.TIF
3、Geoserver 发布Geo TIFF图层

使用Geoserver发布图层的操作步骤:

1、添加工作区(工作空间)
2、添加存储仓库(数据源)并发布
3、添加图层

完成后,就可以通过 WMS 服务来使用图层了。

WMS服务:Web Map Service,⽹络地图服务或者⼜叫动态地图服务,是利⽤具有地理空间位置信息的数据制作地图,其中将地图定义为地理数据的可视化表现,能够根据⽤户的请求,返回相应的地图,包括PNG、GIF、JPEG等栅格形式,或者SVG或者WEB CGM等⽮量形式。WMS⽀持HTTP协议,所⽀持的操作是由URL决定的。

WMS基础知识参考:https://www.osgeo.cn/geoserver-user-manual/services/wms/basics.html

2.3 使用geoserver发布tif栅格地图并使用openlayers加载

参考这篇文章:https://code84.com/739653.html

2.4 Geoserver 跨域的解决

我使用 jar 直接启动,仅修改 web.xml 即可。
参考这篇文章:https://www.bbsmax.com/A/QV5ZkjyZdy/

2.5 openlayers 作为客户端框架展示发布的图层

参考文章:
openlayers基础概念和使用:https://zhuanlan.zhihu.com/p/395609503?utm_id=0
openlayers快速开始:https://openlayers.org/doc/quickstart.html

三、我的代码

完整的代码参考如下:

import './style.css';
import {Map, View} from 'ol';
import {Tile as TileLayer} from 'ol/layer';
import {Image as ImageLayer} from 'ol/layer';

import OSM from 'ol/source/OSM';

import TileWMS from 'ol/source/TileWMS';
import ImageWMS from 'ol/source/ImageWMS'

import GeoTIFF from "ol/source/GeoTIFF";
import XYZ from "ol/source/XYZ";

var format = 'image/png';
var bounds = [102.98741086512345, 36.05409683075217,
              102.9959459772909, 36.063839197733444];

var tiandiKey = '你的天地图KEY';


var tiandiLayer = new TileLayer({
               visible: true,
               source: new XYZ({
                 visible: true,
                 url: `https://t7.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=${tiandiKey}`,
                 // url: 'https://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}'
               }),
               maxZoom: 19
             });

var untiled = new ImageLayer({
  source: new ImageWMS({
    ratio: 1,
    url: 'http://zyf:8080/geoserver/works/wms',
    params: {'FORMAT': format,
             'VERSION': '1.1.1',
          "STYLES": '',
          "LAYERS": 'works:massif_1667368218555_1',
          "exceptions": 'application/vnd.ogc.se_inimage',
    }
  })
});

var tiled = new TileLayer({
        visible: false,
        source: new TileWMS({
          url: 'http://zyf:8080/geoserver/works/wms',
          params: {'FORMAT': format,
                   'VERSION': '1.1.1',
                   tiled: true,
                "STYLES": '',
                "LAYERS": 'works:massif_1667368218555_1',
                "exceptions": 'application/vnd.ogc.se_inimage',
             tilesOrigin: 102.98741086512345 + "," + 36.05409683075217
          }
        })
      });



const map = new Map({
  target: 'map',
  layers: [
    // new TileLayer({
    //   source: new OSM()
    // }),
    tiandiLayer,
    untiled,
    tiled
  ],
  view: new View({
    projection: 'EPSG:4326',
    center: [102.98741086512345, 36.05409683075217],
    zoom: 2
  })
});

map.getView().fit(bounds, map.getSize());

四、参考

https://code84.com/739653.html
https://www.bbsmax.com/A/QV5ZkjyZdy/
https://openlayers.org/doc/quickstart.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容