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. 记一次 .NET 某工控软件 内存泄露分析

    一:背景 1.讲故事 上个月 .NET调试训练营 里的一位老朋友给我发了一个 8G 的dump文件,说他的程序内存泄露了,一时也没找出来是哪里的问题,让我帮忙看下到底是怎么回事,毕竟有了一些调试功底也 ...

  2. Dubbo-服务暴露

    前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...

  3. git、docker、lunix、python、pycharm等常用命令整理

    git的使用 上传代码git clone ....git branch new_branchgit checkout branch_namegit add .git commit -m "& ...

  4. 前端知识之JS(javascirpt)

    目录 JS简介 JS基础 1.注释语法 2.引入JS的多种方式 3.结束符号 变量与常量 基本数据类型 1.数字类型(Number) 2.字符类型(string) 3.布尔类型(Boolean) 4. ...

  5. 精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景

    什么是事务消息 事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败.RocketMQ的事务消息提供类似 X/Open ...

  6. war包形式安装jenkins

    (1)下载war包 输入命令:java -jar jenkins.war --httpPort=8080,更改端口 重新登录之后,输入密码创建用户等完成设置 (2)结合Tomcat安装: 将jenki ...

  7. 解决MySQL Connector/ODBC驱动无法安装Error1918

    1.问题描述 我在一台windows服务器上安装好mysql之后,再安装mysql的ODBC连接驱动时,报错如下: 2.解决方法 之所以出现安装失败是由于缺少Miscrosoft Visual C++ ...

  8. [python] 基于matplotlib实现雷达图的绘制

    雷达图(也称为蜘蛛图或星形图)是一种可视化视图,用于使用一致的比例尺显示三个或更多维度上的多元数据.并非每个人都是雷达图的忠实拥护者,但我认为雷达图能够以视觉上吸引人的方式比较不同类别各个特征的值.本 ...

  9. Hadoop详解(10) - Hadoop HA高可用

    Hadoop详解(10) - Hadoop HA高可用 HA概述 HA(High Availablity),即高可用(7*24小时不中断服务). 实现高可用最关键的策略是消除单点故障.HA严格来说应该 ...

  10. python3进行3des的加密解密

    #秘钥长度正常24位,16位补齐第一个八位 import pyDes import base64 print('=======key1=======') keys='1234567890123456' ...