zoukankan      html  css  js  c++  java
  • 浅析OpenLayer3加载WMS一些问题

    前一段时间一直被一个问题所困扰,作为GIS开发我们的核心竞争力在哪,如果只是搞一些api可替代性太大了,毫不技术可言,问了好多人无果,说法各持一方,最近也感觉理论知识,用处真的很大,WebGIS并不只是做出来一些效果就证明你技术很厉害,需要理论的内涵支撑,废话不多说,开车开车。

    一、关于转换成tiff格式的一些问题

    geoserver不支持将png格式的图片发布为服务,需要将png格式图片通过arcmap 替换成tiff格式进行保存具体做法

    1、打开arcmap将图片拖入arcmap打开即可,

    2、在打开的图片上进行点击→数据框属性→地理坐标(给图片加上坐标系)→地理配准

    3、在图层框的你所加载的图片点击弹出对话框选择数据→数据数据导出(参数设置)→导出为tiff格式的

    note:栅格大小控制导出的数据大小

    二、关于Geoserver发布wms服务发布的问题

    发布的过程:点击打开链接

    SpecialNote:在定义坐标系的时候分为本机SRS和定义SRS两个设置框,本机SRS是图层本身自己坐标系无法更改,但是我们可以更改定义SRS,可以将其设为4326或者3857,因为这是OpenLayer支持的两个坐标系,当然你也可以选择不进行更改,选择默认的。如果选择默认就需要自己定义坐标系。

    三、设为3857或4326和选择默认坐标加载方式

    1、3857或4326

            var format = 'image/png';
            var untiled = new ol.layer.Image({
                source: new ol.source.ImageWMS({
                    ratio: 1,
                    url: 'http://localhost:8080/geoserver/unhpu/wms',
                    params: {
                        'FORMAT': format,
                        'VERSION': '1.1.1',
                        STYLES: '',
                        LAYERS: 'unhpu:1',
                    }
                })
            });
            var tiled = new ol.layer.Tile({
                visible: true,
                source: new ol.source.TileWMS({
                    url: 'http://localhost:8080/geoserver/unhpu/wms',
                    params: {
                        'FORMAT': format,
                        'VERSION': '1.1.1',
                        tiled: true,
                        STYLES: '',
                        LAYERS: 'unhpu:1', 
                    }
                })
            });
            var map = new ol.Map({
    
                target: 'map',
                layers: [
                  //untiled,
                  tiled
                ],
                view: new ol.View({
                    projection: 'EPSG:3857',
                    center:[10,10],
                    zoom:12
                })
            });

    2、选择默认坐标

            var format = 'image/png';
            var bounds = [-0.5, -16533.5,
                          22440.5, 0.5];
            var untiled = new ol.layer.Image({
                source: new ol.source.ImageWMS({
                    ratio: 1,
                    url: 'http://localhost:8080/geoserver/unhpu/wms',
                    params: {
                        'FORMAT': format,
                        'VERSION': '1.1.1',
                        STYLES: '',
                        LAYERS: 'unhpu:1',
                    }
                })
            });
            var tiled = new ol.layer.Tile({
                visible: true,
                source: new ol.source.TileWMS({
                    url: 'http://localhost:8080/geoserver/unhpu/wms',
                    params: {
                        'FORMAT': format,
                        'VERSION': '1.1.1',
                        tiled: true,
                        STYLES: '',
                        LAYERS: 'unhpu:1',
                        tilesOrigin: -0.5 + "," + -16533.5
                    }
                })
            });
            var projection = new ol.proj.Projection({
                code: 'EPSG:3857',//这里默认就不是3857,而是你默认的坐标系
                units: 'm',
                axisOrientation: 'neu',
                global: true
            });
            var map = new ol.Map({
    
                target: 'map',
                layers: [
                 // untiled,
                  tiled
                ],
                view: new ol.View({
                    projection: projection,
                })
            });
           map.getView().fit(bounds, map.getSize());//非常重要

    关于WMS这里选择两种加载方式

    方式一、ol.layer.Image+ol.source.ImageWMS

    方式二、ol.layer.Tile+ol.source+TileWMS

    四、成果

    五、总结

    刚开始的由于不同这个问题浪费了快一天的时间,都没法解决,问了周围的人他们也不知道,归根结底是基础知识还不扎实,还需要更多的学习。


  • 相关阅读:
    Exception和Error有什么区别?
    网络流量劫持的含义
    安全术语:
    加载相关
    10、接到任务后的整个测试前准备流程总结
    fiddler工具栏数据解释
    HTTP的请求头标签 If-Modified-Since
    VueStudyDemo
    Vue从入门到放弃
    TypeScript初体验
  • 原文地址:https://www.cnblogs.com/tuboshu/p/10752346.html
Copyright © 2011-2022 走看看