WeMapEngine可快速构建的GIS应用功能

我是职场高能儿 2024-09-12 21:21:15

我们在《全新跨平台GIS引擎将问世》一文中,为你分享了一款我们自主研发的全新跨平台GIS引擎——WeMapEngine。

现在再为你分享,基于WeMapEngine可快速构建哪些GIS应用功能,并期待它将来能成为你构建GIS应用的备选方案之一。

什么是WeMapEngine

WeMapEngine是一款基于Qt开发的跨平台轻量级桌面GIS引擎,其核心库WeCore.dll仅11.4MB大小。

WeMapEngine作为一个GIS框架,在设计之初就抽象了一些关键的模块允许用户去扩展,以便实现更符合自己行业或业务的个性化需求。

引擎在数据驱动、图层模块、渲染器、符号系统、行为工具、表达式引擎函数、网络资源身份认证等基础模块上都允许用户持续扩展开发。

在未来的规划中,WeCore最终会成为一个GIS框架核心,更多的数据可视化功能都会基于这个核心框架做增量开发,持续累积。

尽管WeMapEngine只有10MB左右,但已经可以基于它快速构建丰富的GIS应用功能了,我们将率先将它应用到水经微图5(简称“微图5”)的开发中。

这些GIS应用功能包括但不限于超百万级矢量数据渲染功能、地图标注绘制与编辑功能、地图栅格瓦片的加载功能、基于表达式引擎的渲染功能、地图标签引擎和矢量渲染器功能等等。

超百万级矢量数据渲染功能

任何一款GIS产品对于地理数据的加载查看可以说是最基础的功能需求,地理数据渲染的流畅性以及所能支持的数据量级,直接影响了用户对产品的使用体验。

这里以加载最常见的Esri Shapefile文件为例,WeMapEngine支持加载并渲染超过百万级的矢量数据。

超百万级的矢量数据渲染

WeMapEngine在加载渲染数据时,会根据用户所浏览的数据区域去动态检索数据,并不会一次性将所有数据全部加载到内存中。

因此,WeMapEngine所能加载渲染的矢量数据量级实际上并没有上限,它的上限并不取决于引擎本身,而是取决于你的电脑硬件配置。

地图标注绘制与编辑

“空间要素”用于对我们现实世界中各种地理实体的抽象表达,它主要包含了位置与属性信息。

例如道路两侧的路灯,我们可以用一个点(X,Y)来描述它的位置,同时它还具备高度、灯具功率、灯具类型、灯头数量等相关属性。

你可以通过各种空间关系将这些空间要素相关联,从而满足不同场景下的空间分析需求。

WeMapEngine支持对空间要素的创建与编辑操作,支持创建与编辑符合OGC(SFA)规范的几何对象模型。

地图标注绘制功能

地图编辑能力

在绘图辅助方面,WeMapEngine引擎也具备精确制图时所必须的对象捕获能力,包括但不限于端点捕捉、中点捕捉、邻近点捕捉和质心捕捉等。

地图栅格瓦片的加载

互联网上有各种类型的地图资源可以供我们使用,卫星影像、导航电子地图、各种专题图等等。

WeMapEngine支持加载符合OGC标准的WMS、WMS-C、WMTS地图服务,OSGeo TMS服务,也支持各种自定义类型的瓦片地图服务。

在栅格瓦片地图加载方面,只要不是特别另类的地图服务,WeMapEngine基本都能加载。

吉林一号卫星影像加载

如果你也想在GIS平台加载调用吉林一号卫星影像,请通过以下网址申请你的专属图源。

https://www.jl1mall.com/rskit/?agentCompany=SJZ&agent=fangfang

具体申请调用方法,可参阅《如何加载卫星影像全国一张图》一文中的详细说明。

基于表达式引擎的渲染

在WeMapEngine中,我们可以将表达式引擎看做一个灵活的“指挥家”,它包含了数学、字符串、几何对象等各种类型的数据处理函数。

作为一个“指挥家”还有一个必不可少的能力,那就是逻辑控制,引擎提供了四则运算(+ - * /)、逻辑运算(AND OR ...)、正则表达式、模糊匹配(LIKE IN)、字符拼接、CASE WHEN THEN END分支、指数计算等等运算规则。

这些特性可以在标签渲染、符号渲染、字段过滤等方面提供非常灵活的控制,比如使用字段表达式来控制矢量符号的随机大小或随机颜色等。

基于表达式引擎的渲染

随着该引擎的迭代更新,我们还会支持更多的实用工具函数。

地图标签引擎

在地图中,我们经常需要使用文字标签去显示地理符号的附加注记信息。

例如,地图上的中餐馆可能都使用了同一个图例符号来表示,但这些信息还是不够具体。

因此,我们为其附加文字描述标签,用中餐馆名称字段来进一步描述符号。

随之而来的问题是当标签过多的时候,这些标签之间会相互叠加,这在地图制图中是不被允许的,因为它非常明显的影响了我们对图面信息的识别。

标签引擎的存在就是为了解决此类问题,它基于元启发式算法将标签摆放在一个相对合理的位置,使地图看起来更加整洁美观。

当未启用标签引擎时,地图中显示的地名等文字会错乱地叠加显示在一起。

未启用标签引擎的显示效果

当启用标签后就会让注记显示漂亮起来,并支持对标签文字进行美化以及位置相关参数的调整。

启用标签引擎后的效果(一)

启用标签引擎后的效果(二)

启用标签引擎后的效果(三)

地图标签引擎的功能十分丰富,你完全可以根据自己的需求配置出一幅漂亮的地图。

矢量渲染器功能

WeMapEngine引擎内置了多种矢量渲染器,不同的矢量渲染器对矢量要素的渲染控制方式不同。

你可能希望将要素渲染成统一的样式风格,也可能希望将其中属性字段为特定值的要素渲染成不同的样式。

WeMapEngine支持单一符号渲染器、表达式规则渲染器和唯一值渲染器等。

(1)单一符号渲染器

单一符号渲染器可以将所有要素渲染为统一的风格样式,如下图所示。

单一符号渲染器

(2)表达式规则渲染器

表达式规则渲染器可以为不同的渲染规则指定不同的符号渲染器,从而让同一个图层中的要素渲染为不同的色彩。

比如可以通过表达式将四川的乡镇边界渲染为红色,将贵州省的乡镇边界渲染为蓝色,不在规则范围内的不被渲染。

基于表达式规则渲染(一)

当然,你也可以为不在规则范围内的其它要素指定一个默认符号,这里我们将其渲染为灰色。

基于表达式规则渲染(二)

(3)唯一值渲染器

唯一值渲染器是指为每一个值分配一个独立的符号渲染器,这与规则渲染器有些类似。

不过唯一值渲染器具备自动分配颜色的能力,并且支持以渐变色的形式分配,当然你也可以手动调整每一个独立的符号。

比如将全国的乡镇边界以“所属省”(34个分类)作为唯一分类条件渲染的效果。

基于唯一值渲染

通过唯一值渲染器,可以对指定图层属性字段的具有相同值的要素显示为同一种要素样式,从而达到分组显示的目的。

(4)动态投影变换

工程项目数据更新倾向于使用高斯投影,地图服务常使用墨卡托(EPSG:3857)、WGS84(EPSG:4326)或CGCS2000(EPSG:4490),而NASA的一些公开数据则使用UTM,没有哪一种坐标系统适合所有的运用场景。

但由于我们在一个视图场景下只能使用一种坐标系,为了能兼容更多的数据来源,引擎必须具备动态投影的能力,也就是从用户的数据所在坐标系,能动态的变换到当前视图配置的坐标系下。

比如我们发布了全球WGS84投影的地图,但可以将视图空间配置为墨卡托(EPSG:3857)时的渲染效果,你可以直观的看到地图从“长方形”变成了“正方形”。

WGS84(EPSG:4326)投影

墨卡托(EPSG:3857)投影

动态投影能将不同坐标投影下的数据转换到同一投影坐标系下,从而达到不修改原数据的坐标系就可以与目标数据进行匹配套合的目的。

WeMapEngine相关文档

为了方便你更加了解WeMapEngine,这里列出相关文档。

全新跨平台GIS引擎将问世

如何在WeMapEngine中加载显示地图

未来可期

构建一个GIS引擎是一个长期且艰巨的任务,如你所见WeMapEngine目前所具备的能力主要集中在数据的可视化上(WeMapping)。

我们深知成长为一个真正的引擎还需要在数据存储、采集、分析等方面都具备一定的能力,这是一个长期的过程。

目前WeMapEngine的主要交互数据模型是简单要素模型,在未来的规划中,我们会逐步加入三维数据模型的渲染和处理能力,使其能逐步成为一款稳定、高效、可持续的GIS引擎。

鉴于WeMapEngine还处于研发内测阶段,因此你暂时还无法立即体验,如果你想更加深入地了解该引擎,请扫下方二维码添加微信,并发送“WeMapEngine”以说明来意。

扫码联系

写在最后

本文为你分享了WeMapEngine目前可快速构建的GIS应用功能,以及这些应用功能的效果展示。

你可以立即点击“分享”按钮,将本文免费分享给你的朋友!

0 阅读:0

我是职场高能儿

简介:感谢大家的关注