1. 投影

    常用的投影坐标系:

    • CGCS2000_3_Degree_GK_CM_111E
    • CGCS2000_3_Degree_GK_Zone_37
    • CGCS2000_GK_Zone_19
    • Beijing_1954_3_Degree_GK_CM_111E
    • Xian_1980_3_Degree_GK_Zone_111E

    注释:

    • CGCS2000、Beijing_1954表示地理坐标系
    • 3_Degree表示三度带,默认六度带
    • GK表示高斯-克吕格投影:Gauss Kruger
    • CM表示中央子午线:Central Meridian
    • Zone_xxx表示带号
    • E表示东经

    参考资料:

  2. 坐标系

    我国常见地理坐标系:

    • 北京54
    • 西安80
    • 2000国家大地坐标系(CGCS2000:China Geodetic Coordinate System 2000
    • WGS-84(World Geodetic System

    注释:

    ​ 地理坐标系(三维球体,不同坐标系代表着不同的椭球体参数)-->选择合适的投影方式(常用高斯-克吕格投影)-->投影坐标系(投影坐标系由地理坐标系+投影方式)

    ​ 高德地图使用的坐标系是GCJ-02;百度地图使用的坐标系是BD-09

    我国常用投影方式

    • 通用横轴墨卡托投影(UTM)-->横轴等角割圆柱投影

      • UTM投影=0.996高斯投影
      • 遥感中常用
    • 墨卡托投影(Mercator)-->正轴等角圆柱投影
    • 兰伯特投影(Lambert)-->等角圆锥投影
      • 无角度变形
    • 阿伯斯投影(Albers)
    • Web墨卡托投影(Web Mercator)

    参考资料:

  3. 地图切片

    • 地图切片:采用预生成的方法存放在服务器端,然后根据用户提交的不同请求,把相应的地图瓦片发送给客户端的过程,它是一种多分辨率层次模型,从瓦片金字塔底层到顶层,分辨率越来越低,但表示的地理范围不变

    • 地图缓存:又称地图瓦片,是一个包含了不同比例尺下整个地图范围的地图切片的目录,即一个缓存的地图服务就是能够利用静态图片来快速地提供地图的服务

    • 矢量切片:将矢量数据以建立金字塔的方式,像栅格切片那样分割成一个个描述性文件,以GeoJson格式或者PDF等自定义格式组织,然后在前端根据显示需要按需请求不同的矢量瓦片数据进行Web绘图

    • 优缺点:

      ​ 1)速度快,预先配色,显示效果佳,满足高并发访问,适合做底图

      ​ 2)瓦片地图缓存非常高效,如果你曾经查看过某一区域的瓦片,当你再次查看该区域的瓦片时,浏览器可能使用之前缓存的相同的瓦片,而不用重新下载一次

      ​ 3)瓦片地图可以渐进加载。中心区域的瓦片可能优先于边缘区域的瓦片加载,你可以移动或定位某一点,即使当前地图边缘区域还未加载

      ​ 4)简单易用。所以很容易在服务器、网络、桌面或移动设备上实现技术集成

      ​ 5)需要额外占用磁盘空间,需要预先生成切片,无法自定义地图

      资料参考:

  4. ol加载地图

    加载内部封装的地图:

    <div id="map" class="map"></div>
    
    <script type="text/javascript">
    var map = new ol.Map({
    target: 'map',
    layers: [
    new ol.layer.Tile({
    source: new ol.source.OSM()
    })
    ],
    view: new ol.View({
    center: ol.proj.fromLonLat([37.41, 8.82]),
    zoom: 10
    })
    });
    </script>

    利用XYZ加载:

    <div id="mymap"></div>
    <script>
    var openStreetMapLayer = new ol.layer.Tile({
    source: new ol.source.XYZ({
    url: 'http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png'
    })
    });
    var map = new ol.Map({
    layers: [
    openStreetMapLayer
    ],
    view: new ol.View({
    center: [12570904.1896, 3269680.4449],
    projection: 'EPSG:3857',
    zoom: 10
    }),
    target: 'mymap'
    });
    </script>

    加载矢量地图:

            <div id="mymap"></div>
    <script type="text/javascript">
    var style = new ol.style.Style({
    stroke: new ol.style.Stroke({
    color: "green",
    width: 3
    })
    })
    var map = new ol.Map({
    target: "mymap",
    layers: [
    new ol.layer.Tile({
    source: new ol.source.OSM()
    })
    ],
    view: new ol.View({
    projection: "EPSG:4326",
    center: [0, 0],
    zoom: 2
    })
    })
    var vectorSource = new ol.source.Vector({
    url: "./data/data/geojson/buildings.geojson",
    format: new ol.format.GeoJSON()
    })
    var vectorLayer = new ol.layer.Vector({
    style: style,
    source: vectorSource
    })
    map.addLayer(vectorLayer)
    </script>

    加载WMS:

    <div id="map"></div>
    
    <script>
    
        var projection = ol.proj.get('EPSG:4326');//地图投影坐标系
    var map = new ol.Map({
    target: 'map',
    view: new ol.View({
    center: [0, 0],
    zoom: 2,
    }),
    layers: [
    new ol.layer.Tile({ source: new ol.source.OSM() })]
    }); var wmsLayer = new ol.layer.Tile({
    source: new ol.source.TileWMS({
    url: 'https://ahocevar.com/geoserver/wms',
    params: { 'LAYERS': 'topp:states' }
    })
    });
    map.addLayer(wmsLayer) </script>

    加载WMTS:

        <div id="map"></div>
    
        <script>
    var projection = ol.proj.get("EPSG:4326"); var projectionExtent = projection.getExtent();
    var size = ol.extent.getWidth(projectionExtent) / 256; var resolutions = [];
    for (var z = 2; z < 19; ++z) {
    resolutions[z] = size / Math.pow(2, z);
    }
    var map = new ol.Map({
    layers: [
    new ol.layer.Tile({
    source: new ol.source.WMTS({
    url: "http://t{0-6}.tianditu.gov.cn/vec_c/wmts?tk=1d109683f4d84198e37a38c442d68311",
    name: "中国矢量1-4级",
    layer: "vec",
    style: "default",
    matrixSet: "c",
    format: "tiles",
    wrapX: true,
    tileGrid: new ol.tilegrid.WMTS({
    origin: ol.extent.getTopLeft(projectionExtent), resolutions: resolutions,
    matrixIds: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
    })
    }),
    })
    ],
    target: "map",
    view: new ol.View({
    center: [120.14805, 30.26971],
    projection: projection,
    zoom: 3,
    maxZoom: 17, minZoom: 1
    })
    }); </script>

    加载WFS:

        <div id="map"></div>
    
        <script>
    
            var projection = ol.proj.get('EPSG:3857');//地图投影坐标系
    var map = new ol.Map({
    target: 'map',
    view: new ol.View({
    center: [-8908887.277395891, 5381918.072437216],
    zoom: 12,
    }),
    layers: [
    new ol.layer.Tile({ source: new ol.source.OSM() })]
    }); var vectorSource = new ol.source.Vector();
    var vector = new ol.layer.Vector({
    source: vectorSource,
    style: new ol.style.Style({
    stroke: new ol.style.Stroke({
    color: 'rgba(0,0,255,1.0)',
    width: 2,
    }),
    }),
    }); var vectorSource = new ol.source.Vector({
    format: new ol.format.GeoJSON(),
    url: function (extent) {
    return (
    "https://ahocevar.com/geoserver/wfs?service=WFS&" +
    "version=1.1.0&request=GetFeature&typename=osm:water_areas&" +
    "outputFormat=application/json&srsname=EPSG:3857&" +
    "bbox=" +
    extent.join(',') + ',EPSG:3857'
    );
    },
    strategy: ol.loadingstrategy.bboxStrategy,
    });
    var vector = new ol.layer.Vector({
    source: vectorSource,
    style: new ol.style.Style({
    stroke: new ol.style.Stroke({
    color: 'rgba(0, 0,255,1.0)', width: 2,
    }),
    }),
    }); map.addLayer(vector) </script>
  5. 地图切片格式

  6. WMS、WMTS的区别

    WMTS相比WMS,牺牲掉灵活性来换取性能,返回的都是基础地图,所有静态数据的范围框和比例尺统统被限定在各个图块(瓦片)中。然后这些图块集使得对WMTS的实现只需要一个仅仅返回简单已有文件的web服务器即可。WFS与两者都不同,返回的是矢量数据,用于增删改操作。

    参考资料:

  7. OGC服务

    开放地理空间信息联盟 (Open Geospatial Consortium-OGC)

    OGC服务:

  8. 大量数据的加载问题

    数据量过大、刷新会卡顿、肉眼可见是有限的->点聚合

    openlayers聚合参考:Dynamic clusters (openlayers.org)

    聚合算法参考:地图点聚合优化方案 - zhanlijun - 博客园 (cnblogs.com)

GIS若干相关的概念的更多相关文章

  1. 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念

    本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...

  2. linux设备驱动归纳总结(二):模块的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...

  3. linux设备驱动归纳总结(一)内核的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...

  4. 一、HTML概述 二、web相关的概念 三、HTML的常用标签

    一.HTML概述###<1>概念 HTML:Hypertext Markup Language,超文本 标记语言,用来描述网页的一种语言. 非编程语言,由浏览器直接解释运行. ###< ...

  5. WiFi相关基础概念

    转自:https://blog.csdn.net/lbaihao/article/details/73250798 一.WiFi相关基础概念 1.什么是wifi 我们看一下百度百科是如何定义的: Wi ...

  6. (转载)小白的linux设备驱动归纳总结(一):内核的相关基础概念---学习总结

    1. 学习总结 小白的博客讲的linux内核驱动这一块的东西比较基础,因此想通过学习他的博客,搭配着看书的方式来学习linux内核和驱动.我会依次更新在学习小白的博客的过程的感悟和体会. 2.1 内核 ...

  7. 【Linux开发】linux设备驱动归纳总结(二):模块的相关基础概念

    linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10.04 开发平台:S3C2440开发板 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  8. 【Linux开发】linux设备驱动归纳总结(一):内核的相关基础概念

    linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  9. Linux kernel驱动相关抽象概念及其实现 之“bus,device,driver”

    bus,device,driver三个很重要的概念贯穿Linux内核驱动架构,特转载一篇博文: (转载自http://blog.csdn.net/gdt_a20/article/details/642 ...

  10. kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式 【转】

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4808877&uid=14528823 一.概念及基本原理 TLB ...

随机推荐

  1. Python:灵活的开发环境

    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/WTl7BPAhX5VuK-gmHaErMg 本文大概 1667 个 ...

  2. node版本管理工具fnm踩坑

    我建议是直接不要用fnm,还是老老实实用nvm吧 fnm下下来电脑防火墙会报毒(用github上推荐的cargo install fnm方式下载,并非第三方安装) Trojan.Generic.HgE ...

  3. Python:多进程并行编程与进程池

    Python的并行编程可以采用multiprocessing或mpi4py模块来完成. multiprocessing是Python标准库中的模块,实现了共享内存机制,也就是说,可以让运行在不同处理器 ...

  4. python之yaml文件读取封装

    import os import yaml from yamlinclude import YamlIncludeConstructor YamlIncludeConstructor.add_to_l ...

  5. JavaWeb项目编译前后的目录结构

    JavaWeb项目编译前后的目录结构 编译前 页面和视图都放在webapp目录下 编译后 webapps WEB-INF

  6. [深度学习]DEEP LEARNING(深度学习)学习笔记整理

    转载于博客http://blog.csdn.net/zouxy09 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之中的一个. ...

  7. Redis缓存何以一枝独秀?(2) —— 聊聊Redis的数据过期、数据淘汰以及数据持久化的实现机制

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 上一篇文章中呢,我们简单的介绍了下Re ...

  8. [硬核] Bootstrap Blazor Table 综合演示例子

    知识点: 1.导入导出 2.分页功能 3.增删改查 4.批量删除 5.批量编辑(审核) 6.列排序与列搜索 7.顶部搜索实现所有列搜索 8.高级搜索实现多条件搜索 9.顶部与刷新与视图列 10.实现文 ...

  9. VUE基础之:visible.sync-模态框显示隐藏、elementUI dialog组件报错或者visible属性不生效问题

    VUE基础之:visible.sync-模态框显示隐藏.elementUI dialog组件报错或者visible属性不生效问题 这篇文档存成草稿2年了,最近终于有时间拉出来写完了.... 我们日常开 ...

  10. (22)go-micro微服务kibana使用

    目录 一 kibana介绍 二 Kibana主要功能 三 Kibana侧边栏 四 Kibana安装 1.拉取镜像 2.运行命令 3.查看是否运行 五 Kibana使用 六 Kibana图形化界面 七 ...