WebGIS工程师进阶训练营

WebGIS工程师进阶训练营

  • 1. WebGIS课程综述
  • 2. 多类情景部署SuperMap iServer
    • 2.1 Linux环境部署SuperMap iServer
    • 2.2 war包部署
    • 2.3 常见问题排查
  • 3. SuperMap iServer服务管理与服务发布
    • 3.1 服务装配
    • 3.2 删除服务
    • 3.3 计划任务
    • 3.4 服务实例动态化
    • 3.5 备份与恢复
  • 4. Rest API 开发思路
    • 4.1 rest简介
    • 4.2 认识SsuperMap iServer REST 资源
      • 1. iServer REST资源支持的HTTP方法
      • 2. 如何使用iServer REST资源
    • 4.3 了解REST的特点
  • 5. SuperMap iClient 产品介绍及开发API
    • 5.1 SuperMap iClient Javascript概览
    • 5.2 SuperMap iClient Javascript 地图库选型
    • 5.3 SuperMap iClient for Leaflet API详解
    • 5.4 项目框架介绍
  • 6. 坐标设置
    • 6.1 SueprMap iClient for Leaflet 坐标系设置
    • 6.2 SuperMap iClient for Leaflet 坐标转换
  • 7、 GIS功能开发思路
    • 7.1 GIS功能开发思路
    • 7.2 GIS开发功能实现
  • 8、 空间分析技术与开发思路
    • 8.1 空间分析概述及应用
    • 8.2 空间分析服务及开发API
    • 8.3 空间分析案例实现
  • 9、 网络分析技术与开发实践
    • 9.1 网络分析概述
    • 9.2 网络分析服务介绍
    • 9.3 网络分析功能实现
  • 10、 地址匹配服务
  • 11、 数据可视化开发方法
    • 11.1 数据聚合展示和热力图开发方法
    • 11.2 高效展示海量标记开发方法
    • 11.3 专题图展示开发方法
    • 11.4 第三方来源数据可视化
      • 11.4.1 可视化数据来源解读
      • 11.4.2 对接Elasticsearch实现数据可视化
  • 12. 基于VUE的二维WebGIS项目详解
    • 12.1 Vue 开发基础
    • 12.2 使用Vue搭建项目的方法
    • 12.3 基于Vue的二维GIS功能实现
  • 13. WebGIS性能优化
    • 13.1 WebGIS性能优化综述
    • 13.2 地图缓存优化策略
    • 13.3 开发优化策略
  • 14. 系统发布及部署
    • 14.1 Docker中部署SuperMap iServer
    • 14.2 WebGIS 系统部署介绍及服务部署优化
      • 1. 部署前准备工作
      • 2. 应用系统的部署
      • 3. 部署优化至集群
      • 4. 部署优化之多实例
      • 5. 部署优化之nginx代理
  • 15. 大数据开发详解
    • 15.1 大数据分布式分析全流程详解
      • 1 空间大数据存储
      • 2. 空间大数据引擎
      • 3. 空间大数据分析
      • 4. 流数据分布式分析算子——地理围栏
      • 5. 上层平台能力,底层核心基础
    • 15.2 流数据实时处理技术与应用实践
      • 1. 物联网
      • 2. 流数据服务应用行业
      • 3. 流数据处理
      • 4. 流数据存储
      • 5. 典型应用案例
      • 5. 常见问题
  • 16. SuperMap iServer扩展开发
    • 16.1 GIS服务结构深度解析
    • 16.2 扩展开发概述及开发流程
    • 16.3 扩展开发案例实现

1. WebGIS课程综述

  • 课程目标
    • 掌握不同操作系统以及中间件环境中部署GIS服务器的方法
    • 掌握并能够运用地图缓存策略,实现WebGIS系统性能调优
    • 掌握GIS服务器运维管理内容,分析并解决服务运行问题
    • 掌握调用REST各类GIS服务并获取其响应的能力的方法
    • 掌握GIS分析、可视化等相关接口,理解网络模型相关参数的含义
    • 掌握VUE常用API、Vue-cli、Element、Vuex、vue-router、以及MVVM原理
  • 预备知识
    • 具备GIS基本理论知识
    • 能够使用GIS平台发布适当的地理信息服务
    • 掌握HTML、CSS、Javascript的基本语法
    • 了解主流前端框架与开发工具
    • 能够运用客户端API实现简单GIS系统开发

2. 多类情景部署SuperMap iServer

  • 安装包的类型
    • Setup 包: 用于Win环境上的安装包
    • ZIP包: 用于Win环境的解压包
    • TAR包: Linux 解压包
    • WAR包: 部署在Web中间件的包(tomcat)
    • Deploy包: 不包含示例代码、范例数据、帮助文档以及客户端开发工具包
    • Mapping包: 细粒度分发包-Mapping分发包
    • Realspace包: 细粒度分发包-Realspace分发包
    • Analysis包: 细粒度分发包-Analysis分发包

2.1 Linux环境部署SuperMap iServer

  1. 下载
    官网下载
  2. 解压
tar -zxvf supermap-iserverr-***-linux.tar.gz
  1. 依赖&许可(root用户下执行)

手动安装依赖库

# 1. 检查缺少的依赖
cd supermap-iserverr-***-linux/support/objectsjava
tar -zxvf bin.tar.gz
mv Bin bin
cd bin
export LD_LIBRARY_PATH=.
ldd libWrapjc* | grep not
# 然后根据提示缺少的rpm,手动安装依赖

自动一键安装脚本

cd supermap-iserverr-***-linux/support
./dependencies_check_and_install.sh install -y

许可驱动安装

cd supermap-iserverr-***-linux/suppor/Supermap_License/Support
tar -xvf *.tar
cd aksusbd-*
chmod +x dinst
./dinst

许可检查

# iserver根目录下执行
./licensetools.sh -s
  1. 启动
cd supermap-iserverr-***-linux/bin
./startup.sh
# 检查日志
tail -f ../logs/catalina.out

2.2 war包部署

这个流程比较简单,相对正常在tomcat环境下的war包部署,多了SuperMap 组件配置、和依赖许可配置

  • 下载
  • 解压
  • java环境配置
  • SuperMap 组件配置
  • 依赖& 许可配置
  • 中间件部署
  • iserver War部署
  • 启动

2.3 常见问题排查

  1. 启动后无法访问
    检查日志是否启动正常、防火墙是否关闭
systemctl status firewalld # 查看防火墙
firewall-cmd --list-all # 查看防火墙规则
firewall-cmd --permanent --add-port=8090/tcp # 开放端口8090
firewall-cmd --reload # 重启防火墙
netstat tulnp # 查看当前机器占用(需要安装net-tools)
  1. 查看许可状态报错
    安装许可驱动(dunst用于卸载许可驱动)
  2. 如何更换许可
    删除iserver-system.xml 下的license节点,再配置;
    正式许可会受到试用许可影响,删除干净试用许可
  3. 忘记supermap iserver 密码
    停止iserver然后在 bin 目录下执行 ./passwordreset.sh
    也可以删除iserver-security.db(sqlite文件型数据库) 数据库中user表下的admin用户记录
    如果用户不多,可以直接删除iserver-security.db文件,启动后会重新生成
  4. 日志文件存储
    根目录 logs下,可以在iserver管理页面更改日志保存目录和日志级别

3. SuperMap iServer服务管理与服务发布

本节主要讲了如何管理iserver服务,这里比较基础的没有记录,只记录一些新增特性和未使用过的功能

3.1 服务装配

可以对服务的配置信息进行修改。

3.2 删除服务

方法一: 删除服务管理中的服务,然后删除对应的服务组件、服务提供者(确保删除的服务组件和服务提供者没有被其他服务实例使用)
方法二: 利用工作空间选项卡,删除某个工作空间的所有GIS服务(该方法直接删除所有服务提供者、服务组件)

3.3 计划任务

SuperMap iServer服务器定时资源回收,iserver GIS 服务器自动重启的一个过程,防止资源释放不干净。

3.4 服务实例动态化

服务可以事先发布好,不去启用,只有需要用到的时候才会启用,发布的信息会保留着

3.5 备份与恢复

WebGIS工程师进阶训练营_第1张图片

4. Rest API 开发思路

4.1 rest简介

REST(Respresentational State Transfer 表述性状态转移)

  • 资源: 事物都被抽象为资源
  • URI:每个资源对应一个唯一的资源标识
  • CURD:使用标准方法(GET , POST , PUT , DELETE)
  • 格式:资源多重表述(png, html , rjson, …)
  • stateless: 无状态通信
    1) REST与SOAP的对比
  • SOAP:封装过的xml,逐渐过时
  • REST:表述性的日益流行
    2)REST的特点
  • rest是一种架构,而不是一个规范
  • 具有幂等性:可缓存,对于相同的请求,服务器返回的结果也是相同的
  • 服务器无状态:服务器不会保存任何与客户端的会话状态信息
  • 典型的C/S架构:服务器负责数据操作,客户端负责显示,开发简单
    3)REST风格的Web服务
  • 通过HTTP发送数据,最常见方式是把请求参数放在URL中,通过URL发送请求参数,通过JSON等格式向客户端返回结果
  • 每一个资源对应一个URI(统一资源标识符),在不严格情况下,URI可以理解为URL

4.2 认识SsuperMap iServer REST 资源

本节内容比较简单,查阅帮助文档查看具体的api接口文档。根据接口构建请求参数,发送GET / POST / PUT / DELETE请求。

1. iServer REST资源支持的HTTP方法

略…

2. 如何使用iServer REST资源

略…

4.3 了解REST的特点

略…

5. SuperMap iClient 产品介绍及开发API

5.1 SuperMap iClient Javascript概览

GIS平台统一的Javascript客户端。
WebGIS工程师进阶训练营_第2张图片

5.2 SuperMap iClient Javascript 地图库选型

WebGIS工程师进阶训练营_第3张图片

  • leaflet
    • 轻量级 & mobile-friendly
    • 实践多,社区有很多经验
    • Mapbox.js
  • MapBox GL JS
    • 只支持3857 4326等几种坐标系,不支持自定义坐标系
    • WebGL 立体呈现
    • Vector Tiles 矢量瓦片对接
    • Map Box Styles
  • OpenLayers5/6
    • H5-WebGL
    • Vector Layers
    • OL3+Cesium(二三维联动)

1. 地图库选型对比
WebGIS工程师进阶训练营_第4张图片

2.WebGIS组件库

  • Vue MapBoxGL
  • Vue Leaflet
  • React MapboxGL

5.3 SuperMap iClient for Leaflet API详解

查阅文档即可,略…

5.4 项目框架介绍

略…

6. 坐标设置

6.1 SueprMap iClient for Leaflet 坐标系设置

1. 常用坐标系

  • 高德./火星坐标
    • gcj02坐标,在原始坐标的基础上进行偏移得到的坐标
  • 百度坐标
    • bd09II坐标,在火星坐标的基础上进行二次加密
  • 常规坐标
    • 如WGS_1984,叠加火星坐标或百度坐标数据存在错位现象
  • 地方坐标
    • 如:广州地方坐标系、NJ08坐标系
      2. 坐标系与EPSG Code
  • EPSG Code 理解为坐标系的编号,由EPSG也就是欧洲石油调查组织发布
  • 常用坐标系
    • WGS84。 EPSG CODE:4326
    • CGCS2000。 EPSG CODE:4490
    • 北京54。 EPSG Code: 4214
    • 西安80。 EPSG Code: 4610
      3. 常见问题
  • Leaflet地图中心设置仅支持经纬度
  • Leaflet开发,叠加点线面对象仅支持经纬度
  • Leaflet开发,可视化展示仅支持经纬度

6.2 SuperMap iClient for Leaflet 坐标转换

1. 坐标转换方法

  • L.Proj.CRS方法
// 地理坐标系转投影坐标系
Point = L.Proj.CRS.project(<Latlng> latlng);
// 投影坐标系转地理坐标系
LatLng = L.proj.CRS.unproject(<Point> point);
  • transform 方法
result = L.supermap.Util.transform(feature, sourceCRS, targetCRS);

**2. 需要进行坐标转换的情况 **

  • 不同坐标系地图叠加显示
  • 用于分析的数据见坐标不一致
  • 进行查询的数据坐标不一致

7、 GIS功能开发思路

7.1 GIS功能开发思路

1.GIS功能分类

  • 地图显示
    • 地图浏览
    • 基础操作,如缩放等。
  • 带有属性结果的GIS功能
    • 查询
    • 交通网络分析
    • 空间分析

7.2 GIS开发功能实现

1. 常见问题

  • 如何与数据集的外部信息进行关联查询
    • joinItems: 关联查询项数组
    • linkIntems: 外部表的关联信息,目前只支持SQLServer和Oracle类型
  • 如何同时查询多个图层,且每个图层查询条件不同?
	var param = new L.supermap.QueryBySQLParameters({
		queryParams: [{
			name: "",
			attributeFilter: ""
		},{
			name: "",
			attributeFilter: ""
		}]
	})

8、 空间分析技术与开发思路

8.1 空间分析概述及应用

1. 空间分析概述

空间分析是基于地理对象位置和形态空间数据的分析技术,其目的在于提取和传输空间信息。强大的空间分析能力是GIS的主要特征。

2. 矢量分析——缓冲区分析
缓冲区分析(buffer)是IGS的基本空间操作功能之一,是指根据指定的距离,在点、线、面几何对象周围自动建立一定宽度的区域的分析方法。
WebGIS工程师进阶训练营_第5张图片

3. 矢量分析——叠加分析
叠加分析是在统一空间参考系统下,通过对两个数据集进行的一系列集合运算,生成新数据集,提取用户需要的新的空间几何信息。同时,通过叠加分析,还可以对数据的各种属性信息进行处理。

  • 叠加分析的两个数据必须有相同的投影信息
  • 源数据可以是点、线、面,但叠加数据只能是面。

4. 矢量分析——临近分析(泰森多边形)
泰森多边形是基于点、线、面对象根据指定的距离,在点、线、面集合对象周围建立一定宽度的区域的分析方法
WebGIS工程师进阶训练营_第6张图片
5. 矢量分析——动态分段
动态分段技术是在地图上动态显示线性参考要素的过程,是线性参考技术的应用。它在不改变要素原有空间数据结构的条件下,建立线性要素上任意路段与多重属性信息之间关联关系。
应用: 广泛应用于公路、铁路、河流等线性特征的数据采集、公共交通系统管理、路面质量管理一级通讯和分配网络(如电网、电话线路、电视电缆、给排水管)模拟等领域
WebGIS工程师进阶训练营_第7张图片
** 6. 栅格分析——表面分析**
WebGIS工程师进阶训练营_第8张图片

7. 栅格分析——插值分析

插值分析利用已知的样点去预测或者估计未知样点的数值,包括内插和外推两种插值方式。内插是通过一直点的数据推求统一区域未知点的数据。外推是通过已知区域,推求其他区域的数据。
8. 栅格分析——密度分析

  • 简单密度分析
    • 计算每个点的指定领域形状内的每单位面积值
  • 核密度分析
    • 使用核函数计算点或线邻域范围内的每单位面积量值。

应用: 计算人口密度、建筑密度、获取犯罪情况报告、旅游区人口密度检测、连锁店经营情况分析。

8.2 空间分析服务及开发API

1. 空间分析服务发布

iserver中快速发布——工作空间——选择空间分析服务
详细操作过程略

2. 各类空间分析功能API

服务类: SpatialAnalystService

  • 缓冲区分析: bufferAnalysis
  • 叠加分析: overlayAnalysis
  • 插值分析:interpolationAnalysis
  • 泰森多边形分析:thiessenAnalysis
  • 表面分析: surfaceAnalysis
  • 点密度分析: densityAnalysis
  • 动态分段分析: generaterSpatialData

8.3 空间分析案例实现

实现功能:

  • 利用缓冲区分析获取道路扩建范围
  • 利用sql查询实现道路高亮显示
  • 利用离散点实现插值分析

9、 网络分析技术与开发实践

9.1 网络分析概述

网络分析是在网络模型的基础上通过分析解决实际问题的过程

  • 最佳路径分析
  • 最近设施查找
  • 选址分析
  • 旅行商分析
  • 多旅行商分析(物流配送)
  • 服务区分析

1. 基本概念

  • 网络数据集
    • 可以通过iDesktopX制作> 拓扑构建网络数据集;
    • 网络数据集包括弧段和节点
  • 权值(正、逆)
    • 通过某一弧段时的耗时(时间耗费、距离耗费等);
    • 弧段本身是有方向的,因此权值分为正向权值和逆向权值。通常用一个属性字段表达每个弧段的正(逆)权值。
  • 障碍弧段、节点
    • 表示不通过的弧段或者节点
    • 短暂性的障碍。比如 临时施工道路,可以通过设置障碍弧段的方法避让,如果弧段或者节点长期不通达,可以直接通过转向表表达。
  • 转向表数据集
    • 转向是从一个弧段经过中间节点抵达另一个邻接弧段的过程。
    • 转向表用来存储转弯耗费值。一般有起始弧段字段(FromEdgeID), 终止弧段字段(ToEdgeID),节点标识字段(NodeID)和转弯耗费字段(TurnCost)四个字段。
    • 转弯耗费有方向性,负耗费一般为禁止转向。

2. 主要接口

NetworkAnalystService

  • 最佳路径分析: findPath
  • 最近设施查找: findClosesFacilities
  • 选址分析: findLocation
  • 旅行商分析: findTSPPaths
  • 多旅行商分析:findMTSPPaths
  • 服务区分析:findServiceAreas

9.2 网络分析服务介绍

发布时选择 网络分析服务,网络分析服务配置可以自动读取到,也可以手动选择。
可以在服务提供者进行进一步配置。在高级设置中设置交通规则、转向表数据集、障碍等。

注意: TransportationAnalystParameter障碍弧段和障碍点的设置优先于iServer交通网络分析服务提供者的相应参数值。

9.3 网络分析功能实现

需求:基于Chengdu数据源中的网络模型数据network模拟生鲜物流配送,在地图上任意添加目标点,查询目标迪安周边三公里范围内最近的生鲜零售门店,并在地图上高亮显示从门店到目标点的配送路线。

功能逻辑: 发布网络分析服务-》 查询获取设施集合 -》 设置待分析事件集合 -》 进行最近设施分析。

10、 地址匹配服务

地址匹配流程:导入地址词典(属性 转词典) -》 生成地址索引 -》 发布地址索引 -》 前端调用地址匹配服务进行做正向匹配和反向匹配

iDesktpX支持对地址词典的管理: 导入、导出、更新等

  • 支持创建地址ICi点库,可通过逐个添加词汇或导入文本文件进行创建
  • 支持对已有词典进行添加或删除等编辑操作
  • 支持导出地址词典库,或导出为文本文件

1. 地址索引文件结构

  • *.tim : 内容以汉字分块,每块存储不同关键字的信息
  • *.tip: 记录每个字信息在tim文件中的起始位置
  • *.fdt:原始每条记录的信息,点坐标、完整地址等
  • *.fdx: 记录每条记录在fdt文件的起始位置
  • *.dct: 地址词典文件

11、 数据可视化开发方法

11.1 数据聚合展示和热力图开发方法

1. 数据聚合展示

  • 聚合图:Leaflet.markerCluster
  • 蜂巢图: L.supermap.MapVLayer

基于Leaflet.markerCluster展示数据

实现思路: 引入聚合图插件 -》 创建聚合图层,添加到地图中 -》 向聚合图层添加数据

基于L.supermap.MapvLayer展示数据

实现思路: 引入MapV -》 构建蜂巢数据数组 -》 设置蜂巢风格 -》 创建蜂巢图层,并添加到地图中

2. 热力图展示

  • Leaflet.heatLayer
  • L.supermap.HeatMapLayer
  • Echarts + L.supermap.EchartsLayer

基于 Leaflet.heatLayer制作热力图

实现思路: 引入热力图插件 -》 构建heatPoint数组 -》 创建热力图层添加到地图中

基于L.sueprmap.HeatMapLayer制作热力图

实现思路: 实例化HeatMapLayer -》 定义客户端要素专题图 -》 将热力图添加到地图中

基于Echarts + L.supermap.EchartsLayer制作热力图

需求: 基于csv格式的地震数据,以热力图形式展示2008 - 2017年的地震情况

11.2 高效展示海量标记开发方法

1. 海量标记展示性能问题
采用marker 标记海量点数据浏览器卡死

2. 高效点图层开发方法实现思路

设置渲染器类型 -》 定义要素类的样式 -》 构建 Graphic要素类 -》 创建高效图层,并添加到地图中 -》 设置图层交互事件

11.3 专题图展示开发方法

1. 专题图类型

  • 服务端专题图(支持大数据量;不能交互)
    • 点密度专题图
    • 等级符号专题图
    • 统计专题图
    • 分段专题图
    • 单值专题图
  • 客户端专题图(少量要素数据,支持交互)
    • 单值专题图
    • 等级符号专题图
    • 标签专题图
    • 图标专题图

2.客户端专题图

生成原理

  • 在客户端图层绘制专题要素 - 矢量要素;
  • 客户端专题图具备两个重要特征;
    • 专题要素可交互
    • 专题展示样式可自定义扩展

开发思路: 创建客户端专题图图层 -》 获取/创建矢量要素 -》 设置 专题图显示风格 -》 加载要素到专题图层 -》 设置专题要素交互

主要接口:

  • 客户端胆汁专题图: UniiqueThemeLayer
  • 客户端专题图风格类: ThemeStyle
  • 设置客户端专题图的相关接口

3. 服务端专题图

主要接口: ThemeService专题图服务类 -》 ThemeParameter 专题图参数类

生成原理:

  • 设置专题图: 设置专题图参数、数据集名称 、风格等
  • 服务端处理, iServer服务端处理请求
  • 图片加载, 将图片添加到Layer上显示

11.4 第三方来源数据可视化

11.4.1 可视化数据来源解读

1. 数据可视化实现方式

  • 与数据分析服务对接并可视化结果数据
    • 桌面分析结果,web端可视化展示
    • iServer分布式空间分析作业分析结果可视化
      • 点密度分析、叠加分析、密度分析、和密度分析等
  • 直接与数据存储进行对接,利用iclient自身的分析运算渲染能力可视化数据
    • 从supermap数据引擎层获取数据——iServer查询服务
    • 直接与数据存储ES对接——search操作
    • 实时数据可视化。获取实时流——dataflow
      • kafaka、websocket、TCP/IP等

11.4.2 对接Elasticsearch实现数据可视化

  • 利用GIS软件,对接elasticsearch中的数据,实现数据 可视化效果
  • 实验将针对全球航班数据,展示各个时段飞行热力图

Elasticsearch数据分析
参数: _index 索引;_type 类型; _source 对象属性;

实现步骤: 启动elasticsearch数据库 -》 es跨域配置 -》 根据iclient API 编写查询代码 -》 将查询结果根据需求渲染在地图上

Elasticsearch配置跨域

# 修改 elasticsearch.yml 文件,添加如下内容
http.cors.enabled: true
http.cors.allow-origin: "*"
# 配置网络连接端口
network.host : IP

修改完成之后重启es数据库

12. 基于VUE的二维WebGIS项目详解

12.1 Vue 开发基础

12.2 使用Vue搭建项目的方法

推荐 ts(javascript)、vite、vue-router、axios、pinia 、 +element-plus

12.3 基于Vue的二维GIS功能实现

使用 Javascript Api 实现自定义功能
需求: 根据属性信息查找并定位队形
功能需求:

  • 设置查询语句输入框与查询按钮
  • 通过地图SQL查询获取复合查询条件的对象并显示到地图上

实现步骤: 1. 实现地图加载; 2. 制作查询面板 ; 3. 添加查询组件; 4. 实现对地图进行SQL查询

13. WebGIS性能优化

13.1 WebGIS性能优化综述

1. WebGIS服务请求过程
WebGIS工程师进阶训练营_第9张图片

2. 优化策略

1.提升数据生产效率

  • 性能检查工具: 地图 -》 制图 -》 性能诊断

    • 定制性能指标
    • 定位问题图层
  • 数据重复

    • 数据重复主要是指空间数据或属性数据存在一定的重叠,推荐使用如下方法进行数据冗余的检查:
      • 使用拓扑检查中的无重复点、线线无重叠、面面无重叠等拓扑规则对数据集进行检查,或使用distinct方法检查数据集中坐标信息的唯一性
      • 使用过distinct方法检查属性中字段重复的情况,尽可能避免字段值相同但并非同一对象的情况,若发生此类情况推荐使用数据融合。
  • 数据复杂

    • 数据复杂主要包括两方面:节点过多、子对象过多。
    • 在节点过多问题上,线数据集可直接进行重采样,面数据及推荐先拓扑转线再对线进行重采样,再重新拓扑构面。
    • 在子对象过多的问题上,推荐对几何对象进行分解,在分解前需要排查图层中的对象,避免分解岛洞多边形。
  • 2.缓存技术提交效率

3. 数据优化方法

  • 空间索引
  • 字段索引
  • 数据抽稀
  • 数据集类型
  • 数据集编码
  • 影像金字塔

13.2 地图缓存优化策略

缓存技术是一种非常有效的提高服务访问效率的方式,用空间来换取事件的存储方式

  • 空间数据较为复杂
  • 地图或者地图的某个范围会被较为频繁访问
  • 返回客户端的地图结果相对固定
    1. 缓存策略
    缓存策略: HTTP缓存、请求缓存、地图缓存

2.HTTP缓存

  • HTTP缓存:请求结果保存在内存中
  • 缓存生命周期: 1分钟
  • 支付服务模块:rest地图服务,rest三维服务

3. 请求缓存

  • 覆盖全功能服务的请求缓存
  • 请求缓存结果存在客户端本地
  • 各服务支持请求缓存的资源

4. 地图缓存

  • 地图缓的分类
    • 栅格瓦片: 地图中所有图层切分并存储为栅格格式的地图瓦片
      • 目前使用最广,技术成熟的底图技术
    • 矢量瓦片: 矢量图层以矢量瓦片的形式进行切分和存储
      • 矢量瓦片创建效率高
      • 矢量瓦片传输和渲染速度快
        WebGIS工程师进阶训练营_第10张图片
        5.常用的栅格瓦片
        WebGIS工程师进阶训练营_第11张图片
        6. 栅格瓦片的生产
  • 瓦片地图缓存可以提升客户端地图呈现的显示效率,但是生成瓦片地图缓存也是一项耗费时间的工作
  • 地图的显示性能直接影响生产瓦片地图缓存的时间
    • 生产缓存前对GIS地图进行性能优化
  • 生产方法
    • iDesktop产品直接生成UGC缓存 或者mongodb瓦片
    • iServerr分布式切图生成UGCV5缓存或者 分布式存储缓存Mongodb

注意:使用iserver开启多进程切图之后,要重启iserver才能生效

7. iServer分布式切图常见问题
1) 分布式切图时候推送数据成功,但是切图速度为0
在 桌面重新以只读方式打开数据源,保存工作空间,重启iServer重新创建切图任务
2) 使用分布式切图服务时有的子节点不切图
检查子节点的地图数据,如果使用的是文件型数据源,需要保证子节点的地图数据与父节点的数据具有相同的路径。一般出现这种情况时加入了其他服务器的iServer,这个服务器时没有切图数据的,需要copy过来,正常情况主节点会自动部署。

8. MVT矢量瓦片
矢量瓦片(*.mvt),包含要素的几何形状与属性信息
样式文件(style.json), 要素的风格样式
WebGIS工程师进阶训练营_第12张图片
9. 矢量瓦片典型应用
1) 预切图(多进程),适用于静态数据(非频繁更新)
2) 动态生成(iServer) , 适用于动态数据(频繁更新)
3) 实时切图(HBase), 适用于大数据

13.3 开发优化策略

1. 客户端开发提升效率策略
1) 呈现地图使用缓存
场景: 专题图变化、空间数据变化、图层控制、在线编辑
策略: 切换地图、自动化更新缓存、图层叠加
2) 合理设置返回信息
查询/分析结果分批传回:QueryBySQLParameters.expectCount、 startRecord
设置合理的查询结果类型: 设置查询结果分会类型,包括只返回属性、只返回几何实体以及返回属性和几何实体。

3) 海量数据的显示要充分利用客户端SDK优势进行呈现(减少服务端计算)

  • 矢量点代替marker
  • Turf.js —— 客户端空间分析
  • 热点图——高频事件客户端计算
  • 聚合图 —— 海量点数据聚散显示
  • 矢量瓦片——矢量数据的快速交互
  • 高性能矢量渲染图层
  • 第三方可视化库——Echarts、MapV等

2. 几种常见的可视化渲染
1) 热力图
动态栅格图的一种,亮色代表事件发生频率较高或者事务分布密度较大,暗色反之,能够明显的表现地图中事件发生频率或者事物分布密度。
2)格网图
在格网区域内显示地理数据的统计信息,并根据格网内数据呈现不同的渲染效果
特点:数据分层优化; 直观的区域展示; 清晰的区域划分对比
应用: 地域对比性的信息分析,比如人口密度; 区域性的数据统计对比
3)聚散显示
聚散显示是指将一定范围内的点要素聚合显示至一个点
优化客户端数据呈现效果

3. 矢量图——矢量数据的快速交互
矢量图是将地理数据以瓦片的分块方式发给浏览器的一种方式;
矢量化瓦片和栅格瓦片相似;
适用于矢量数据快速交互的需求

4.高性能可视化库
1) SuperMap GraphicLayer 100万 +, 可交互,可传递属性
2) EchartsLayer 1000万+,增量渲染,但不支持交互与传递属性

14. 系统发布及部署

14.1 Docker中部署SuperMap iServer

镜像地址:https://hub.docker.com/r/supermap/iserver/tags
熟悉docker即可,过程略

14.2 WebGIS 系统部署介绍及服务部署优化

1. 部署前准备工作

  • 安装iServer
  • 发布GIS服务
  • 修改应用系统中GIS服务的地址

2. 应用系统的部署

常见的Web服务器: Tomcat、apache、jboss、resin、weblogic
过程略

3. 部署优化至集群

iServer集群搭建

4. 部署优化之多实例

开启多实例
iServer服务管理 ——“集群” ——“单机多进程”,重启iserver,进程数根据cpu核数设置

5. 部署优化之nginx代理

应用: http转发为https;
负载均衡

15. 大数据开发详解

15.1 大数据分布式分析全流程详解

1 空间大数据存储

1) 资源汇聚
WebGIS工程师进阶训练营_第13张图片
WebGIS工程师进阶训练营_第14张图片

2. 空间大数据引擎

WebGIS工程师进阶训练营_第15张图片

3. 空间大数据分析

WebGIS工程师进阶训练营_第16张图片
WebGIS工程师进阶训练营_第17张图片

4. 流数据分布式分析算子——地理围栏

功能介绍: 实时动态判断哪些目标落入围栏,支持计算进入、保持、退出等细化状态
输入数据类型: 点、地理围栏(面)
适用场景: 空管中心、运钞车、油罐车等目标实时监控和围栏边界

5. 上层平台能力,底层核心基础

WebGIS工程师进阶训练营_第18张图片
WebGIS工程师进阶训练营_第19张图片
WebGIS工程师进阶训练营_第20张图片

15.2 流数据实时处理技术与应用实践

1. 物联网

WebGIS工程师进阶训练营_第21张图片

2. 流数据服务应用行业

1) 具有物联网数据生产的行业

  • 传感器设备(环保、水文、气象、市政等行业)检控数据
  • 时间序列化、短时间、格式化更新
    2) 基于实时移动目标的动态监测
  • 基于位置的移动目标进行实时检测交通运输、军事、民航以及船舶等相关行业
  • 空间或者属性过滤、地理围栏
    3) 基于海量历史数据的分析挖掘
  • 接收物联网数据
  • 存储管理,深度挖掘分析
  • 客流量统计,车流量(智能红绿灯)


WebGIS工程师进阶训练营_第22张图片

3. 流数据处理

  • 属性过滤
  • 空间过滤
  • 属性映射
  • 空间映射(地理状态标记器)

4. 流数据存储

iServer Datastore -> elasticsearch

5. 典型应用案例

1) 传感器实时监测—— 城市空气检测
主要业务:
空气质量实时监控;
环境指标统计;
污染物分析。
2)动态目标监控—— 船舶监控(动态目标、历史分析)
主要业务:
GPS实时监控;
地理围栏预警
轨迹重建、大数据聚合

5. 常见问题

1) 数据来源——UDP协议
Receiver层自定义扩展:
用户可以基于com.supermap.bdt.streaming.jar的类型开发自定义i类型,添加到流数据实时处理的运行模型中,用于扩展功能,定制功能的目的。
2) 流数据分析处理扩展——信令数据与基站信息融合
手机信令数据传递回来的信息只有手机号,基站对应区域及编码,须关联基站信息(地理位置等)WebGIS工程师进阶训练营_第23张图片

16. SuperMap iServer扩展开发

16.1 GIS服务结构深度解析

1. Supermap iServer GIS服务的结构

WebGIS工程师进阶训练营_第24张图片
服务接口: 基于某些标准或者基于某种通讯协议的服务接口
服务组件: 依赖注入方式调用服务提供者,不在程序中固定所调用的服务提供者; 封装成易于客户端应用的模块
服务提供者: GIS服务代理;将各种类型的GIS服务的GIS功能进行统一

2. 服务提供者
WebGIS工程师进阶训练营_第25张图片
WebGIS工程师进阶训练营_第26张图片

WebGIS工程师进阶训练营_第27张图片
WebGIS工程师进阶训练营_第28张图片
3. 服务组件
对不同服务提供者提供的服务能力进行组合并封装成 已于客户端应用的模块
类型:
- 地图服务组件
- 数据服务组件
- 空间分析服务组件
- 交通网络分析服务组件
- 三位服务组件
- 三维网络分析
- 空间建模服务组件
- 动态标绘服务组件
- 地址匹配服务组件
- 用户自定义服务组件

4. 服务接口
将服务组件按照不同服务规范发布成不同类型的网络服务,该层决定了所有支持发布的服务类型
类型:
- rest
- rest/jsr(空间分析、交通换乘分析、三维网络分析)
- wms
- wmts
- wfs
- wcs
- wps
- handler(对接使用iserver java 2008 开发的应用程序)
- 用户自定义服务接口
5. 服务提供者与服务组件的对应关系
服务提供者:服务组件 = N : 1
WebGIS工程师进阶训练营_第29张图片
**6.服务组件和服务接口的关系 **
WebGIS工程师进阶训练营_第30张图片

16.2 扩展开发概述及开发流程

1. SuperMap iServer 空间服务分类
分类两大类:
1) 通用空间服务(Generric Spatial Service , GSS),如地图服务、空间数据服务、空间分析服务、网络分析服务等,SuperMap iServer 默认提供了这类服务
2) 领域空间信息服务(Domain Spatial Service,DSS),用户根据行业特定的业务逻辑,自行构建出的与空间信息相关的服务。

2. SuperMap iServer 服务扩展

  1. 服务接口扩展
    构建新标准的服务接口或者对已有的服务接口扩展,如: 对JaxrsServletForJersey、RestServlet进行扩展,定制新的REST资源实现,可以很好的对接领域组件或者提供者的功能。
  2. 服务组件扩展
    扩展GIS功能需求,可以调用服务提供者功能进行扩展,从而封装或者组合更适用的功能
    还可以直接再服务组件层调用其他接口及服务,供服务接口层调用
  3. 服务提供者扩展
    可以扩宽SuperMap iServer java的GIS功能来源

3. SuperMap iServer 扩展配置文件
服务组件配置信息 + 服务提供者配置信息: supermap-iserver-*/webapps/iserver/WEB-INF/iserver-services.xml
服务接配置信息: supermap-iserver-*/webapps/iserver/WEB-INF/iserver-services-interfaces.xml

4. 扩展开发流程
1) 分析需求,确定业务构建层次是 Interface、Componet还是Provider层
2) 实现DSS组件

  • 领域空间信息服务SPI
    • SueperMap iServer为用户构建领域空间信息服务组件提供了一系列接口
  • SPI提供什么
    • 自动读取配置文件的上下文信息
      • 与上层组件间的调用关系
      • 自身组件需要获取的配置参数信息
    • 自动实现依赖注入的三层组件间动态调用
      WebGIS工程师进阶训练营_第31张图片
      WebGIS工程师进阶训练营_第32张图片

3)服务提供者层的扩展

WebGIS工程师进阶训练营_第33张图片

// 服务提供者层的实现形式
public class SampleProvider implements ProviderContextAware{
	public void setProviderContext(ProviderContext context){
		SampleProviderSetting sampleProviderSetting = context.getConfig(SampleProviderSetting.class);
		//......
	}
}
  1. 服务组件层的扩展
    WebGIS工程师进阶训练营_第34张图片
// 服务组件层的实现形式
@Component(providerTypes={MapProvider.class},optional=false,type="SampleType")
public class SampleComponent implements ComponentContextAware{
	// ......
	public void setComponentContext(ComponentContext context){
		SampleComponentConfig config = context.getConfig(SampleComponentConfig.class);
		List<MapProvider> mapproviders = context.getProviders(MapProvider.class);
	}
}
  1. 服务接口层的扩展
    WebGIS工程师进阶训练营_第35张图片
// 服务接口层的实现形式
@Interface(componentTypes = { com.supermap.services.components.Map.class} , optional = false, multiple = false)
@Protocol(names = {"SampleInterface"})
public class SampleServlet extends HttpServlet implements InterfaceContextAware{
	public void setInterfaceContext(InterfaceContext context){
		//......
		SampleInterfaceConfig sampleConfig = context.getConfig(SampleInterfaceConfig.class);
		List components = context.getComponents(Map.class);
	}
}

16.3 扩展开发案例实现

1. 需求: 实现一个新的组件,一个新的服务接口

你可能感兴趣的:(前端,vue.js,javascript)