我们在《WeMapEngine可快速构建的GIS应用功能》一文中为你分享了WeMapEngine可快速建的GIS应用功能。
今天再为你分享基于WeMapEngine的开发实战,演示如何快速创建第一个GIS项目。
创建你的第一个GIS项目
现在,我们开始构建第一个项目。
在这个项目中,将向你介绍SDK的目录组织结构,并实现加载一张由WeServer发布,且符合OGC标准的WMTS全球在线卫星影像地图。
由于WeMapEngine是基于Qt开发的GIS引擎,因此你需要提前安装好Qt以及配置好IDE环境,以确保对C++11的支持。
我们的研发进度,严格按照了引擎设计之初所确定的成果架构逐步进行成果输出,如下图所示。
WeMapEngine架构图
WeMapEngine SDK 目录结果
WeMapEngine SDK 帮助文档
WeMapEngine与你使用其它的C++项目没有任何的区别,不需要额外安装或编译其它的外部依赖。
现在你应该了解了SDK的目录结构,接下来我们创建一个名为“FirstProject”的项目。
然后按照常规方式正确配置SDK头文件目录和链接WeCore.lib,并开始构建我们的GIS应用。
如以下示例代码所示,我们构建了一个“MyMapApp”的地图主程序。
#include "MyMapApp.h"
#include "WeMapGraphicsView.h"
#include "WeSpatialReference.h"
#include "WeWebTiledLayer.h"
MyMapApp::MyMapApp(QWidget* parent/*= nullptr*/)
: QMainWindow(parent)
{
//1、初始化视图
mMapView = std::make_unique<WeMapGraphicsView>(this);
//1.1、为视图设置一个默认投影
WeSpatialReference SRS;
SRS.importFromEPSG(4326);
mMapView->setSpatialReference(SRS);
//2、创建一个图层
const QString strUrlTemplate
=QStringLiteral("https://test.ditushuju.cn:8086/WeServer/wmts/1.0.0/acimage/default/wgs84/{level}/{row}/{col}.jpg");
WeTiledInfo wgs84TileInfo= WeWebTiledLayer::defaultGeoTiledInfo(0.703125);
WeRectangle wgs84FullExtent= WeWebTiledLayer::defaultFullExtent(true);
WeWebTiledLayer* pLayer = newWeWebTiledLayer("acimage", strUrlTemplate, wgs84TileInfo, wgs84FullExtent);
//2.1、记下图层
mLayers.append(pLayer);
//3、把图层添加到视图
mMapView->addLayer(pLayer);
//3.1、缩放到图层
mMapView->zoomToLayers();
setCentralWidget(mMapView.get());
}
接下来在Main函数中我们创建该地图对象即可。
#include<QtWidgets/QApplication>
#include "WeCore.h"
#include "WeEnvionment.h"
#include "MyMapApp.h"
int main(intargc,char*argv[])
{
QApplicationa(argc, argv);
//1、初始化引擎,设置一些环境变量
WeCore::initialize();
QLocale::setDefault(QLocale(QLocale::Chinese));
WeSetEnv(ENV_WE_PROJ_SEARCH_PATHS,QStringLiteral("G:/Working/dev_sdk/WeMapEngine/examples/1_FirstProject/bin/x64/data/proj/"));
//2、创建主地图窗口对象
MyMapApp mapApp;
mapApp.show();
return a.exec();
}
最后,将SDK中bin目录下的dll拷贝到编译生成目录中,运行程序显示结果如下图所示。
程序运行效果
在使用WeMapEngine开发GIS项目时,只需花几分钟编写少量代码即可构建一个基础的GIS应用程序,从而可以大大地提高你的开发效率。
现在,我们对上面的过程进行一个简单的梳理。
在Main函数中,我们对引擎做了一个基本的环境配置,然后创建了地图主窗口对象,最后调用 show() 函数即可呈现地图。
在地图主窗口构造函数中,本质上我们仅做了两个关键行为。
第一是创建了视图对象WeMapGraphicsView并设置了它的默认投影为EPSG:4326。
第二则是创建了一个Web瓦片地图图层对象WeWebTiledLayer并将其添加到视图中。
通过这两个步骤,我们就可以在视图中显示并浏览地图数据了。
使用相同的操作流程,你还可以加载GeoTiff、HGT、ESRI Shapefile、WMS服务等各种类型的栅格、矢量数据以及在线地图服务。
不同之处在于,不同数据格式的配置参数和所使用的图层类型有所不同。
不过这里需要说明的是,WeMapEngine目前还处于研发内测阶段,因此你暂时无法立即体验。
如果你想更加深入地了解该引擎,请扫下方二维码添加微信,并发送“WeMapEngine”以说明来意。
扫码联系
WeMapEngine相关文档
为了方便你更加了解WeMapEngine,这里列出相关文档。
WeMapEngine可快速构建的GIS应用功能
如何在WeMapEngine中加载显示地图
全新跨平台GIS引擎将问世
写在最后
本文为你分享了如何构建一个最简单的WeMapEgnine项目,从而让你对该引擎的使用有一个初步了解。
后续我们将分享更多的WeMapEngine开发技巧,包括但不限于如何使用WeMapEngine创建点、线或面几何要素对象等。
你可以立即点击“分享”按钮,将本文免费分享给你在GIS行业从事开发工作的朋友!