编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

WeMapEngine开发实战,创建你的第一个GIS项目

wxchong 2025-01-19 00:58:14 开源技术 66 ℃ 0 评论

我们在《WeMapEngine可快速构建的GIS应用功能》一文中为你分享了WeMapEngine可快速建的GIS应用功能。

今天再为你分享基于WeMapEngine的开发实战,演示如何快速创建第一个GIS项目。

创建你的第一个GIS项目

现在,我们开始构建第一个项目。

在这个项目中,将向你介绍SDK的目录组织结构,并实现加载一张由WeServer发布,且符合OGC标准的WMTS全球在线卫星影像地图。

由于WeMapEngine是基于Qt开发的GIS引擎,因此你需要提前安装好Qt以及配置好IDE环境,以确保对C++11的支持。

我们的研发进度,严格按照了引擎设计之初所确定的成果架构逐步进行成果输出,如下图所示。

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行业从事开发工作的朋友!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表