SuperMap iClient for MapLibreGL
主要介绍 SuperMap iClient for MapLibreGL 的入门用法,详细的接口参数请参考 API 页面。
准备
获取 MapLibreGL 和 SuperMap iClient for MapLibreGL
开发时需要引入 MapLibreGL 和 SuperMap iClient for MapLibreGL。其中,MapLibreGL 具体包括 CSS 文件和 JS 文件。你可以通过以下方式获取这些文件:
MapLibreGL
- 通过 MapLibreGL 官网 下载 CSS 文件
- 通过 MapLibreGL 官网 下载 JS 文件
SuperMap iClient for MapLibreGL
- 通过 SuperMap iClient JavaScript 官网 下载最新版本
- 在 SuperMap iClient for MapLibreGL 的 GitHub 中下载 release 版本
引入
我们提供了 文件方式引入 和 npm 方式引入 两种方式,您可以根据自身情况选择其中一种方式即可。
文件方式引入
以下详细介绍如何在线引入 MapLibreGL 文件,以及如何通过在线站点引入 SuperMap iClient for MapLibreGL。
新建一个 HTML 文件,在 <head> 标签中引入 MapLibreGL CSS 文件和 JS 文件,填入 UNPKG 的托管地址,如下:
引入 iclient-maplibregl CSS 文件和 JS 文件,填入 SuperMap iClient for MapLibreGL 在线站点地址:
模块化开发
我们分别提供了 ES6、CommonJS、AMD、CMD 模块化规范下的引入方式,您可以根据自身需求选择其中一种方式即可。
SuperMap iClient for MapLibreGL 使用了 ES6 语法,为了兼容不支持 ES6 语法的浏览器,需要在打包的过程中进行一些配置,如果您选择了 ES6 或 CommonJS 下的引入方式,引入后还需参考 打包配置 的内容。
ES6
开发前需使用 npm 安装依赖,然后通过 ES6 的 import 模块加载语法引入相应的模块。
我们提供了 按需引入 和 全模块引入 两种引入方式,按需引入可以减小项目的打包体积。您可以根据自身需求选择其中一种方式即可。
按需引入
1.安装 @supermapgis/babel-plugin-import:
2.在 .babelrc 中添加如下配置:
3.写入以下内容来引入部分组件,比如 QueryByBoundsParameters, QueryService
全模块引入
CommonJS
CommonJS 是基于 Node.js 环境的 JavaScript 模块化规范。开发前需使用 npm 安装依赖,然后通过 require 方法引入相应的模块。
我们提供了 部分模块引入 和 全模块引入 两种引入方式,您可以根据自身需求选择其中一种方式即可。
部分模块引入
全模块引入
AMD
以下例子利用 RequireJS 库实现,将通过 获取 MapLibreGL 和 SuperMap iClient for MapLibreGL 步骤得到的 maplibre-gl.js 和 iclient-maplibregl.js,放在 RequireJS 指定的入口主文件所在目录下。
全模块引入
CMD
以下例子利用 SeaJS 库实现,将通过 获取 MapLibreGL 和 SuperMap iClient for MapLibreGL 步骤得到的 maplibre-gl.js 和 iclient-maplibregl.js,放在 SeaJS 指定的入口主文件所在目录下。
全模块引入
打包配置
SuperMap iClient for MapLibreGL 使用了 ES6 语法,为了兼容不支持 ES6 语法的浏览器,需要在打包的过程中进行一些配置,包括语法转换的处理。
这里的打包配置是针对于 ES6 和 CommonJS 模块开发,对于 AMD 和 CMD 模块开发的项目, 不需要利用打包工具。
这里以 webpack4 为例,由于使用不同的包管理器会导致安装包的结构有所不同,所以下面分别介绍了 npm 和 cnpm 两种配置方式:
若您用 npm install
或者 cnpm install --by=npm
安装的依赖,那么您需要在
webpack.config.js 的配置文件的 module 中加入如下配置项:
若您用 cnpm install
安装的依赖,那么您需要在 webpack.config.js 的配置文件的 module 中加入如下配置项:
创建一幅地图
SuperMap iServer 发布的地图
在准备章节,已经新建了一个 HTML 页面,在页面 <body> 标签中添加代码以创建地图,如下:
以嵌入 SuperMap iServer 发布的中国地图为例,在 <script> 中继续添加如下代码,初始化地图信息:
运行效果
添加控件
通过向地图添加控件的方式,实现对图层的放大,缩小,全屏等交互操作,常用的控件包括:
控件 | 类名 | 简介 |
---|---|---|
导航 | maplibregl.NavigationControl | 默认位于地图左上角 |
比例尺 | maplibregl.ScaleControl | 默认位于地图左下角 |
全屏 | maplibregl.FullscreenControl | 默认位于地图右上角 |
定位 | maplibregl.GeolocateControl | 默认位于地图右上角 |
版权 | maplibregl.AttributionControl | 默认位于右下角 |
添加控件时,首先初始化地图,然后通过 addControl() 方法将控件添加到地图上,例如:
导航控件:
运行效果
比例尺控件:
运行效果
使用矢量瓦片
矢量瓦片是将矢量数据通过不同的描述文件来组织和定义,在客户端实时解析数据并完成绘制。使用 SuperMap iServer 提供的矢量瓦片示例如下:
运行效果
地物查询
SuperMap iClient for MapLibreGL 支持的地物查询功能主要包括:
- 指定 ID 查询
- 指定 SQL 查询
- 矩形范围查询
- 任意几何范围查询
- 距离查询
- 缓冲区查询
- 查询栅格信息
- 查询字段信息
指定 ID 查询
指定 ID 查询,即在数据集中查询符合指定 ID 的地理空间要素,并在客户端中展示出来。本示例为:在 World 数据服务中查询指定 ID 的要素。
使用接口 maplibregl.supermap.FeatureService 在数据集 “World:Countries” 中查询 ID 为 234 的地理空间要素。
运行效果
指定 SQL 查询
指定 SQL 查询,即在指定数据集集合中查找符合 SQL 条件的矢量要素,并在客户端中展示出来。本示例为:在 World 数据服务中查询指定 SMID 的要素。
使用接口 maplibregl.supermap.FeatureService 在数据集 “World:Countries” 中查询 SMID 为 234 的要素。
运行效果
矩形范围查询
矩形范围查询,即在指定数据集集合中查找符合矩形范围的矢量要素,并在客户端中展示出来。本示例为:在 World 数据服务中查询指定矩形范围的要素。
使用接口 maplibregl.supermap.FeatureService 在数据集 “World:Capitals” 中查找符合此矩形范围的矢量要素。
运行效果
任意几何范围查询
几何范围查询,即在指定数据集集合中查找符合几何范围的矢量要素,并在客户端中展示出来。本示例为:在 World 数据服务中查询任意几何范围的要素。
使用接口 maplibregl.supermap.FeatureService 在 “World:Countries” 数据集中采用相交空间查询模式查询符合此几何范围的矢量要素。
运行效果
距离查询
距离查询,即在地图服务中的指定图层中查找符合一定距离的矢量要素,并在客户端中展示出来。本示例为:在 World 地图服务中查询符合距离的矢量要素。
使用接口 maplibregl.supermap.QueryService 在图层 “Capitals@World.1” 中查找距离指定点为 10 度(地图坐标单位)的矢量要素。
运行效果
缓冲区查询
缓冲区查询,即在数据服务中的指定数据集集合中查找符合缓冲区的矢量要素,并在客户端中展示出来。本示例为:在 World 数据服务中查询指定缓冲区的要素。
使用接口 maplibregl.supermap.FeatureService 在数据集 “World:Capitals” 中查找符合此缓冲区范围距离为 30 度(地图坐标单位)的矢量要素。
运行效果
查询栅格信息
查询栅格信息,即在指定数据集集合中查找某一地理位置所对应的像素值信息,并在客户端中展示出来。
使用接口 maplibregl.supermap.GridCellInfosService 在数据集 “WorldEarth” 中查询栅格信息为例,示例代码如下:
运行效果
查询字段信息
查询字段信息,即在指定数据集集合中查询字段的信息,包括:字段名称、字段类型、字段别名、字段默认值等,并在客户端中展示出来。本示例为:在 World 数据服务中查询指定字段的信息,并做字段统计。
使用接口 maplibregl.supermap.FieldService,在数据集 “continent_T” 中查询字段名为 “SmID” 的详细字段信息,并对数据集中所有 SmID 值进行统计,求出平均值、最大值、最小值等。
运行效果
地物编辑
地物编辑
地物编辑功能可以实现在地图中添加或删除要素。使用接口 maplibregl.supermap.FeatureService 在数据集 “Capitals” 中添加地物信息。
运行效果
专题图
地图学中将突出而深入地表示一种或几种要素或现象,即集中表示一个主题内容的地图称为专题地图。在 SuperMap 中,专题图是地图图层的符号化显示,即用各种图形渲染风格(大小,颜色,线型,填充等)来图形化地表现专题要素的某方面特征。
服务端专题图
服务端专题图是由服务器进行专题图的制作,即客户端向服务器发送专题图参数,如数据集名称、风格等,服务器根据参数制作专题图,返回给客户端,由客户端进行展示。
SuperMap iClient for MapLibreGL 支持的服务端专题图包含:
- 点密度专题图
- 单值专题图
- 分段专题图
- 等级符号专题图
- 标签专题图
- 统计专题图
点密度专题图
点密度专题图用一定大小、形状相同的点表示现象分布范围、数量特征和分布密度。点的多少和所代表的意义由地图的内容决定。点密度专题图使用点的数目或者密集程度来反映一个区域或范围所对应的专题值。
SuperMap iClient for MapLibreGL 实现点密度专题图的主要代码如下:
运行效果
单值专题图
单值专题图是将专题值相同的要素归为一类,为每一类设定一种渲染风格,如颜色或符号等,专题值相同的要素采用相同的渲染风格,从而用来区分不同的类别。
SuperMap iClient for MapLibreGL 实现单值专题图的主要代码如下:
运行效果
分段专题图
分段专题图是指按照某种分段方式被分成多个范围段,要素根据各自的专题值被分配到其中一个范围段中,在同一个范围段中的要素使用相同的颜色,填充,符号等风格进行显示。 分段专题图所基于的专题变量必须为数值型,分段专题图一般用来反映连续分布现象的数量或程度特征,如降水量的分布,土壤侵蚀强度的分布等。
SuperMap iClient for MapLibreGL 实现分段专题图的主要代码如下:
运行效果
等级符号专题图
等级符号专题图根据各要素的某个数量特征,按照一定的分类方法用一组等级符号表示在地图上,以呈现要素间该数量特征的相对关系。
SuperMap iClient for MapLibreGL 实现等级符号专题图的主要代码如下:
运行效果
标签专题图
地图上的必要的标注是必不可少的,不仅帮助用户更好地区分地物要素,同时也显示了要素的某些重要属性,如行政区划、河流、机关、旅游景点的名称、等高线的高程等。在 SuperMap 中,通过制作标签专题图,用户可以轻松实现地图标注。
SuperMap iClient for MapLibreGL 实现标签专题图的主要代码如下:
运行效果
统计专题图
统计专题图是通过为每个要素或记录绘制统计图来反映其对应的专题值的大小。统计专题图可以基于多个变量,反映多种属性,即可以将多个专题值绘制在一个统计图上,并且每个区域都会有一幅表示该区域各专题值的统计图。通过统计专题图可以在区域本身与各区域之间形成横向和纵向的对比。多用于具有相关数量特征的地图上,比如表示不同地区多年的粮食产量、GDP、人口等,不同时段客运量、地铁流量等。
SuperMap iClient for MapLibreGL 实现统计专题图的主要代码如下:
运行效果
空间分析
空间分析(Spatial Analysis)是基于地理对象的位置和形态特征的空间数据分析技术,其目的在于提取和传输空间信息。SuperMap iClient for MapLibreGL 支持的空间分析功能包括:
- 缓冲区分析
- 泰森多边形
- 叠加分析
- 最近距离计算
- 表面分析
- 点定里程
- 里程定点
- 里程定线
- 栅格代数运算
- 地形坡度计算
- 地形坡向计算
- 地形曲率计算
- 填挖方计算
缓冲区分析
缓冲区分析(buffer)是根据指定的距离在点、线和多边形实体周围自动建立一定宽度的区域范围的分析方法。例如,在环境治理时,常在污染的河流周围划出一定宽度的范围表示受到污染的区域;又如在飞机场,常根据附近居民的健康需要在周围划分出一定范围的区域作为非居住区等。
下面以京津数据为例,对“莲花池东路”进行半径为 300 米的圆头缓冲分析,缓冲区分析的接口使用方法如下:
设置缓冲区分析参数、缓冲区通用参数。
设置缓冲区分析服务对象,用于将客户端设置的缓冲区分析服务参数传递给服务端,并接收服务端返回的缓冲区分析结果数据。当向服务端发送请求并且服务端成功返回结果时,用户可对获得的缓冲区分析结果做相应处理。
运行效果
泰森多边形
泰森多边形是荷兰气候学家 A.H.Thiessen 提出的一种根据离散分布的气象站的降雨量来计算平均降雨量的方法,即将所有相邻气象站连成三角形,作这些三角形各边的垂直平分线,于是每个气象站周围的若干垂直平分线便围成一个多边形。用这个多边形内所包含的一个唯一气象站的降雨强度来表示这个多边形区域内的降雨强度,并称这个多边形为泰森多边形。泰森多边形又称为 Voronoi 图,是由一组连接两邻点直线的垂直平分线组成的连续多边形组成。
泰森多边形的特性为:
- 每个泰森多边形内仅含有一个离散点数据;
- 泰森多边形内的点到相应离散点的距离最近;
- 位于泰森多边形边上的点到其两边的离散点的距离相等。
泰森多边形的接口使用方法如下:
下面以数据集泰森多边形为例,设置泰森多边形服务对象,用于将客户端设置的泰森多边形服务参数传递给服务端,并接收服务端返回的泰森多边形分析结果数据。
运行效果
叠加分析
叠加分析是 GIS 中的一项非常重要的空间分析功能,是指在统一空间参考系统下,通过对两个数据集进行的一系列集合运算,产生新数据集的过程,其目的是通过对空间数据的加工或分析,提取用户需要的新的空间几何信息。同时,通过叠加分析,还将对数据的各种属性信息进行处理。
目前叠加分析广泛应用于资源管理、城市建设评估、国土管理、农林牧业、统计等领域。叠加分析在各领域中的作用:
- 资源管理主要应用于农业和林业领域,解决农业和林业领域各种资源(如土地、森林、草场等)分布变化、统计等问题;
- 城市建设评估主要应用于分析城市人口、经济、建设等的发展变化,统计变化趋势和变化规律;
- 土地和地籍管理涉及土地使用性质变化、地块轮廓变化、地籍权属关系变化等许多内容,借助 GIS 的叠加分析功能可以高效、高质量地完成这些工作;
- 生态、环境的管理评价用于区域生态规划的评价、环境现状评价、环境影响评价、污染物削减分配的决策支持等;
- 地学研究与应用中的地形分析、流域分析、土地利用研究、经济地理研究、空间统计分析、制图等都可以借助叠加分析来完成。
下面将京津地区的行政区域与临边地区的行政区域进行叠加分析,叠加分析接口使用方法如下所示:
设置叠加分析参数:
设置叠加分析服务对象,用于将客户端设置的叠加分析服务参数传递给服务端,并接收服务端返回的分析结果数据。当向服务端发送请求并且服务端成功返回结果时,用户可对获得的叠加分析结果做相应处理。
运行效果
最近距离计算
最近距离计算指的是在指定地图上,计算“被计算数据集”中每一个要素到“参考数据集”中在查询范围内的所有要素的距离中的最小值。“被计算数据集”目前仅支持二维点数据集,“参考数据集”可以是二维点、线、面数据集或二维网络数据集。
下面以长春数据为例,查找距离某一点最近的几何对象,其接口使用方法如下所示:
运行效果
提取等值线/面
提取等值线和提取等值面。等值线是将相邻的、具有相同值的点连起来的线,常用的等值线有等高线、等深线、等温线、等压线、等降水量线等。等值线的分布反映了栅格表面上值的变化,等值线分布越密集的地方,表示栅格表面值的变化比较剧烈。等值线分布较稀疏的地方,表示栅格表面值的变化较小。通过提取等值线,可以找到高程、温度、降水量等值相同的位置,同时等值线的分布状况也可以反映出变化的陡峭和平缓区。等值面是由相邻的等值线封闭组成的面,等值面的变化可以很直观地表示出相邻等值线之间的变化,诸如高程、降水、温度或大气压力等。通过提取等值面可以获得高程、降水、温度等值相同的地方。
本节将通过从全国平均气温采样点中提取等值线的功能来具体说明表面分析的接口使用。
设置表面分析参数、表面分析提取操作参数。
设置表面分析服务对象,用于将客户端设置的表面分析服务参数传递给服务端,并接收服务端返回的表面分析结果数据。当向服务端发送请求并且服务端成功返回结果时,用户可对获得的表面分析结果做相应处理。
运行效果
点定里程
点定里程是计算路由上某点到起始点的 M 值,实际应用情景例如:知道某事故发生的位置确定该点位于某路口距离。
下面以京津数据为例,计算一条路上发生交通事故的地点到该条路路口的距离,点定里程接口使用方法如下:
地图加载完成后进行点定里程分析服务,构造路由对象之后才能进行后续的点定里程操作。
运行效果
里程定点
里程定点是根据指定路由上的 M 值来定位点。应用情景与点定里程相反,如知道某事故距离某路口位置,需要确定其相对精确的坐标的时候使用。
下面以京津数据为例,确定一条发生交通事故的路上与路口距离为 6753 m 的事故点,里程定点的接口使用方法:
地图加载完成后进行里程定点分析服务,构造路由对象之后才能进行后续的里程定点操作。
运行效果
里程定线
里程定线是根据指定线的范围来确定路由上对应的线对象。应用场景如当知道某一路段发生阻塞,能够确定该路段相对精确的位置范围。
下面以京津数据为例,一条路在距离路口 1123-4489 m 之间的发生堵塞。
地图加载完成后进行里程定线分析服务,构造路由对象之后才能进行后续的里程定线操作。里程定线的接口使用方法如下:
运行效果
栅格代数运算
栅格代数运算是运用代数学的观点对地理特征和现象进行空间分析,即对一个或多个栅格数据进行数学运算和函数运算。同时,运算得出的结果栅格数据的像元值是由一个或多个输入栅格数据的同一位置的像元值通过代数运算得到的。
为了更好地实现栅格代数运算功能,SuperMap 提供了丰富的运算符、函数和运算表达式,除了常用的算术运算(如加、减、乘、除和取整等)方法,还支持通过用户自定义的表达式,来进行栅格的算术运算、条件运算、逻辑运算、函数运算(包括常用函数、三角函数等)和复合运算,用户可以通过栅格代数运算实现多种栅格分析需求。
栅格代数运算接口使用方法如下:
运行效果
地形坡度计算
坡度是表示地球面某一位置的高度变化率的量度,是重要的地形特征因子之一。地形坡度计算用于计算栅格数据集中各个像元的坡度值。坡度值越大,地势越陡峭;坡度值越小,地势越平坦。坡度分析提供了三种坡度表现形式:度数、弧度、百分比。由于计算点的坡度没有实际意义,因此在 SuperMap 中,坡度计算的是各像元平面的平均值。
下面以京津数据为例,计算各个像元的坡度值。在进行计算之前,需要先初始化地图,地图加载完成后进行地形坡度计算分析,其接口使用方法如下所示:
运行效果
地形坡向计算
坡向指的是坡度变化的方向,表示地表面某一位置斜坡方向变化的量度,坡向是重要的地形特征因子之一。坡向分析用于计算栅格数据集中各个像元的坡度面的朝向。坡向计算的范围是 0 到 360°,以正北方 0° 为开始,按顺时针移动,回到正北方以 360° 结束。平坦的坡面没有方向,赋值为 -1。
下面以京津数据为例,计算各个像元的坡向值。在进行计算之前,需要先初始化地图,地图加载完成后进行地形坡向计算分析,其接口使用方法如下所示:
运行效果
地形曲率计算
地形曲率计算用于栅格数据表面的曲率。曲率是表面的二阶导数,或者可称之为坡度的坡度,地形曲率是表达地形曲面结构的主要参数之一。输出结果为地形栅格每个像元的表面曲率,该值通过将该像元与八个相邻像元拟合而得。结果输出为栅格数据集,可输出曲率类型为:平均曲率、剖面曲率和平面曲率,平均曲率为必须输出的结果,剖面曲率和平面曲率为可选择输出。其中,剖面曲率是指沿最大斜率方向的曲率,平面曲率是指垂直于最大斜率方向的曲率。
高程缩放系数:计算曲率时,要求地形栅格值(即高程值)的单位与 x,y 坐标的单位相同,通常需要将高程值乘以一个高程缩放系数,使得三者单位一致。例如,X、Y 方向上的单位是米,而 Z 方向的单位是英尺,由于 1 英尺等于 0.3048 米,则需要指定缩放系数为 0.3048。如果设置为 1,表示不缩放。
在进行地形曲率计算处理之前,需要先初始化地图。
地图加载完成后进行地形曲率计算分析服务。
运行效果
填挖方计算
地表经常由于沉积和侵蚀等作用引起表面物质的迁移,表现为地表某些区域的表面物质增加,而某些区域的表面物质减少。在工程中,通常将表面物质的减少称为“挖方”,将表面物质的增加称为“填方”,将一种情况变为另一种情况时需要计算填/挖的面积和体积。 填挖方计算用于计算两个栅格数据集(填挖方前和填挖方后栅格数据集)之间体积和面积的变化,填挖方的计算结果由填挖方后的数据与填挖方前的数据相减得出。填挖方分析包含四种类型:栅格填挖方、选面填挖方、斜面填挖方和三维面填挖方。
下面以京津数据为例,采用填挖方分析计算某一区域内填充和挖掘的面积和体积,其接口使用方法如下所示:
运行效果
地址匹配
SuperMap iClient for MapLibreGL 支持地址匹配服务。地址匹配服务包含正向匹配与反向匹配两种方式,即,用户可通过地点名称找到地址位置,也可以找到指定位置上的地点。
正向地址匹配
正向地址匹配根据地点描述、城市范围返回对应的地理坐标和结构化的地址详细描述,支持中文模糊匹配。
运行效果
反向地址匹配
反向地址匹配通过输入地址坐标来获取对应的规范化的地址描述。
运行效果
大数据分析
SuperMap iClient for MapLibreGL 对接了 SuperMap iServer 的分布式分析服务,为用户提供大数据分析功能,主要包括:
- 密度分析
- 点聚合分析
- 单对象空间查询分析
- 区域汇总分析
- 矢量裁剪分析
- 属性汇总分析
- 拓扑检查分析
密度分析
SuperMap iServer 的分布式分析服务中的密度分析包括简单点密度分析和核密度分析两种:
- 简单点密度分析:用于计算每个点的指定邻域形状内的每单位面积量值。计算方法为点的测量值除以指定邻域面积,点的邻域叠加处,其密度值也相加,每个输出栅格的密度均为叠加在栅格上的所有邻域密度值之和。结果栅格值的单位为原数据集单位的平方的倒数,即若原数据集单位为米,则结果栅格值的单位为每平方米;
- 核密度分析:用于计算点、线要素测量值在指定邻域范围内的单位密度。简单来说,它能直观地反映出离散测量值在连续区域内的分布情况。其结果是中间值大周边值小的光滑曲面,栅格值即为单位密度,在邻域边界处降为 0。核密度分析可用于计算人口密度、建筑密度、获取犯罪情况报告、旅游区人口密度监测、连锁店经营情况分析等等。
下面对大数据进行简单点密度分析,网格面类型为四边形网格。其接口使用方法如下:
设置密度分析参数 kernelDensityJobParam,包括数据集、分析方法、分析类型、格网大小等。
向服务端提交密度分析的请求,获取服务端成功处理并返回的密度分析结果。
运行效果
点聚合分析
点聚合分析,是指针对点数据集制作聚合图的一种空间分析作业。通过网格面或多边形对地图点要素进行划分,然后计算每个面对象内点要素的数量,并作为面对象的统计值,也可以引入点的权重信息,考虑面对象内点的加权值作为面对象的统计值;最后基于面对象的统计值,按照统计值大小排序的结果,通过色带对面对象进行色彩填充。
目前支持的点聚合分析类型包括:网格面聚合和多边形聚合,其中网格面聚合图按照网格类型又可分为四边形网格和六边形网格。
下面进行点聚合分析,其中聚合类型为网格面聚合,网格面类型为四边形网格。其接口使用方法如下:
设置点聚合分析参数 summaryMeshJobParam,包括数据集、聚合类型、统计模式、格网大小等。
向服务端提交点聚合分析的请求,待服务端成功处理并返回点聚合分析结果后对其进行解析处理。
运行效果
单对象空间查询分析
空间查询是通过几何对象之间的空间位置关系来构建过滤条件的一种查询方式。例如:通过空间查询可以找到被包含在面中的空间对象,相离或者相邻的空间对象等。
SuperMap iServer 的分布式分析服务中的单对象空间查询,是指只支持查询对象数据集中的一个对象对被查询数据集做空间查询。如果查询对象数据集中有多个对象,则默认用 SmID 最小的对象对被查询数据集做空间查询。
该示例需要引入
下面进行单对象空间查询分析,其中空间查询模式使用“相交”。其接口使用方法如下:
设置单对象空间查询分析参数 singleObjectQueryJobsParam,包括源数据集、查询对象数据集、空间查询模式。
向服务端提交单对象空间查询分析的请求,待服务端成功处理并返回单对象空间查询分析结果后对其进行解析处理。
运行效果
区域汇总分析
区域汇总分析,是指针对线数据集和面数据集制作聚合图的一种空间分析作业。指通过网格面或多边形对地图线或面要素进行划分,然后,以标准属性字段或权重字段对每个网格单元内线或面要素进行统计,将统计结果作为该网格单元的统计值。最后按照网格单元统计值的大小进行排序,通过色带对网格单元进行色彩填充。
区域汇总分析的概念与点聚合分析的概念类似,不同的是点聚合分析是对点数据集进行统计计算,而区域汇总分析是对线数据集和面数据集进行统计计算。在区域汇总分析的概念里,网格单元的统计值有两种统计方式,以标准属性字段统计和以权重字段统计。
下面进行区域汇总分析,其中汇总类型为网格面汇总,网格面类型为四边形网格。其接口使用方法如下:
设置区域汇总分析参数 summaryRegionJobParam,包括数据集、汇总类型、网格面汇总类型等。
向服务端提交区域汇总分析的请求,待服务端成功处理并返回区域汇总分析结果后对其进行解析处理。
运行效果
矢量裁剪分析
矢量裁剪分析为对矢量数据集进行裁剪。包括内部裁剪和外部裁剪。内部裁剪指被裁剪的矢量数据集在裁剪区范围内的部分被保留到结果数据集中;相反,使用外部裁剪,则保留不在裁剪区范围内的那部分数据到结果数据集中。
SuperMap iServer 的分布式分析服务中的矢量裁剪分析,只支持裁剪对象数据集中的一个对象对源数据集做矢量裁剪。如果裁剪数据集中有多个对象,则默认用 SmID 最小的对象对源数据集做矢量裁剪。
该示例需要引入
下面进行矢量裁剪分析,裁剪矢量分析模式使用内部裁剪。其接口使用方法如下:
设置矢量裁剪分析参数 vectorClipJobsParam,包括源数据、裁剪对象数据集、裁剪分析模式。
向服务端提交矢量裁剪分析的请求,待服务端成功处理并返回矢量裁剪分析结果后对其进行解析处理。
运行效果
属性汇总分析
属性汇总统计,指的是对输入的数据集中所选择的属性进行汇总统计。通过对输入的数据集设定分组字段、属性字段以及对属性字段需进行的统计模式,从而得到汇总统计的结果。
SuperMap iServer 的分布式分析服务中的属性汇总分析,默认将对所有对象进行属性汇总统计,也可使用逗号","分隔,设置多个字段,对对象进行分组后,每组分别进行属性汇总。属性汇总分析支持的统计模式有:max、min、average、sum、variance、stdDeviation。
下面进行属性汇总分析,统计模式使用 sum。其接口使用方法如下:
设置属性汇总分析参数 summaryAttributesJobsParameter,包括属性汇总数据集、分组字段、属性字段、统计模式。
向服务端提交属性汇总分析的请求,待服务端成功处理并返回属性汇总分析结果后对其进行解析处理。
运行效果
拓扑检查分析
拓扑检查分析,指的是根据相应的拓扑规则对点、线和面数据进行检查,检查出数据集本身及不同类型数据集相互之间不符合拓扑规则的对象,并返回检查出的拓扑错误数据集的一种操作作业。
SuperMap iServer 的分布式分析服务中的拓扑检查分析,支持以下 7 种拓扑规则:面数据集内部无交叠、面数据集和面数据集无交叠、面数据集被面数据集包含、面数据集被面数据集覆盖、线数据集内部无交叠、线数据集与线数据集无交叠、点数据集内部无重复点。
下面进行拓扑检查分析,拓扑规则使用:面数据集被面数据集覆盖。其接口使用方法如下:
设置拓扑检查分析参数 topologyValidatorJobsParameter,包括拓扑检查数据集、拓扑检查规则、容限。
向服务端提交拓扑检查分析的请求,待服务端成功处理并返回拓扑检查分析结果后对其进行解析处理。
运行效果
数据流
SuperMap iServer 提供数据流服务,使客户端与服务器之间实现低延迟和实时数据传输。数据流服务采用 WebSocket 协议,支持全双工、双向式通信。服务器可将实时数据服务的分析处理结果作为数据来源向客户端广播,客户端与数据流服务建立连接后,即可自动接收服务器广播的数据。
运行效果
数据可视化
SuperMap iClient for MapLibreGL 支持可视化包含:
热力图
原理:在客户端直接渲染的栅格图,热力图的渲染需要三大要素:
- 热力数据,热力数据需要点数据,每一个热力数据需要有地理位置以及权重值 (能够明显地表现某位置某事件发生频率或事物分布密度等,如可以为温度的高低、人口密集度等等)
- 热力衰减渐变填充色集合, 用于渲染每一个热力从中心向外衰减时的渐变色
- 热力半径,也就是衰减半径。每一个热力需要从中心点外四周根据半径计算衰减度, 对在热力衰减区内的每一个像素计算需要渲染的颜色值,然后进行客户端渲染
应用场景:由于热力图的衰减是像素级别的,视觉效果方面极佳,但不能与具体数据进行一一对应,只能表示权重之间的差别,所以可以用于一些对精度要求不高而需要重点突出权重渐变的行业,如可以制作气象温度对比动态效果图、地震区域的震点强弱图等。
示例代码
运行效果
高效率点图层
高效率点图层(graphicLayer),主要是针对前端大数据量的点渲染。graphicLayer 支持选取对象事件。
该示例需要引入
下面以纽约出租车上车点为例,进行可视化的展示:
直接通过 CDN 引入插件 papaparse.min.js
运行效果
ECharts
ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari 等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
该示例需要引入
下面以长春市公交路特效图为例,将公交路线的数据进行可视化的展示:
运行效果
DeckGL
DeckGL 是由 Uber 开发并开源出来的基于 WebGL 的大数据量可视化框架。
它具有提供不同类型可视化图层,GPU 渲染的高性能,React 和 Mapbox GL 集成,结合地理信息数据(GPS)的特点。
该示例需要引入
以下例子对数据进行蜂巢图层展示
运行效果
MapV
MapV 是一款地理信息可视化开源库,可以用来展示大量地理信息数据,点、线、面的数据,每种数据也有不同的展示类型,如直接打点、热力图、网格、聚合等方式展示数据。
MapV 可展示大量的点数据,形式可以为热力图、网格、蜂窝状、点聚合、按颜色区间、按半径大小等。可展示大量的线数据,如普通画线、高亮叠加、热力线数据展示等方式,还有各种动画效果,适合用于呈现大量轨迹的场景。也可展示大量的自定义面数据,按颜色区间来展示,行政区域也是其中一种应用场景,可直接使用。
该示例需要引入
SuperMap iClient for MapLibreGL 提供了对使用 MapV 可视化效果图层的支持,接口为:
下面以 MapV 强边界图为例,将数据进行可视化的展示。
指定图层的配置项和数据:
运行效果
Threejs
Three.js 是一款开源的主流 3D 绘图 JS 引擎(名字 Three 就是 3D 的含义),原作者为 Mr.Doob,项目地址为:https://github.com/mrdoob/three.js/。我们知道 WebGL 是一种网页 3D 绘图标准,和 jQuery 简化了 HTML DOM 操作一样,Three.js 可以简化 WebGL 编程。
该示例需要引入
SuperMap iClient for MapLibreGL 提供了对使用 three.js 可视化效果图层的支持,接口为:
运行效果
Web符号
Web符号覆盖 SuperMap iDesktop、SuperMap iDesktopX 部分点线面符号,用户可通过 Web符号ID 快速添加符号到地图。同时,也可以按照符号规范自定义符号。 本节主要介绍Web符号的入门用法,详细接口请参考 API 页面。
引入
文件方式引入
首先,引入 MaplibreGL 和 SuperMap iClient for MaplibreGL。
然后,根据以下两种情况,设置 basePath 为 resources 文件夹的绝对或相对路径。
-
默认 resources 文件夹路径
resources 文件夹和入口 HTML 文件放在同级文件夹,则不需要配置 basePath,可直接使用默认值。
-
自定义 resources 文件夹路径
首先,下载的 SuperMap iClient for MaplibreGL 包,移动 resources 文件夹到项目任意位置。
然后,设置 basePath 为 resources 文件夹绝对或相对于入口 HTML 路径。
npm 方式引入
首先,安装 @supermapgis/iclient-maplibregl。
然后,移动 @supermapgis/iclient-maplibregl 安装包下 resources 文件夹到项目根目录下任意文件夹。
接下来,设置 basePath 为 resources 文件夹绝对或相对于根目录路径。
快速上手
符号规范
Web符号是由 Maplibre Layers 中的 paint 、 layout ( visibility 属性除外 )组成的符号对象。
使用Web符号
首先,获取 Web符号ID 。
然后,使用 new maplibregl.supermap.WebSymbol().init 初始化Web符号,并且指定符号资源路径。
再然后,使用接口 loadSymbol 加载Web符号。
接下来,使用接口 addSymbol 将符号添加到地图。
最后,使用接口 addLayer 添加图层,同时图层设置 Web 符号。
示例代码
运行效果
使用自定义Web符号
首先,使用 new maplibregl.supermap.WebSymbol().init 初始Web符号。
然后,使用接口 addSymbol 将符号添加到地图。
接下来 addLayer 添加图层,同时图层设置 Web 符号。
示例代码
运行效果