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

news2024/11/27 21:02:21

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

emulator -version报错解决方案

使用android studio安装安卓环境之后&#xff0c;会发现emulator -version报如下错 [14960]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ..\emulator\lib64\qt\lib Could not launch C:\Users\litbai\..\emulator\qemu\windows-x86_64\qe…

【Java小白图文教程】-04-循环结构

精品专题&#xff1a; 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…

深入理解计算机系统--计算机系统漫游

对于一段最基础代码的文件hello.c&#xff0c;解释程序的运行 #include <stdio.h>int main() {printf ( "Hello, world\n") ;return 0; }1.1、信息就是位上下文 源程序是由值 0 和 1 组成的位&#xff08;比特&#xff09;序列&#xff0c;8 个位被组织成一组…

springboot048校园资料分享平台(论文+源码)_kaic

校园资料分享平台 摘要 随着信息互联网购物的飞速发展&#xff0c;国内放开了自媒体的政策&#xff0c;一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求&#xff0c;创建了一个计算机管理校园…

无人机的电池放电详解!

一、定义与表示方法 无人机的电池放电率是指电池在一定时间内放出其储存电能的能力&#xff0c;这一参数通常用C数来表示。C数越大&#xff0c;表示放电速率越快。 例如&#xff0c;一个2C的电池可以在1/2小时内放完其全部电量&#xff0c;而一个10C的电池则可以在1/10小时内…

喜讯!望繁信科技荣膺2022年中国超自动化先锋企业TOP20

36氪重磅发布「2022中国超自动化先锋企业」调研结果。凭借多年在流程挖掘领域过硬的技术实力和突出的产品创新力&#xff0c;望繁信科技在众多调研样本企业中脱颖而出&#xff0c;赢得了专家评委的充分认可&#xff0c;成功入选2022年中国超自动化先锋企业TOP20。 什么是超自动…

【书生大模型实战营】闯关任务1-入关岛

这里写自定义目录标题 第一关 L0G1000 Linux 基础知识 第一关 L0G1000 Linux 基础知识 SSH连接与端口映射并运行hello_world.py 关键截图&#xff1a;

502 错误码通常出现在什么场景?

服务器过载场景 高流量访问&#xff1a;当网站遇到突发的高流量情况&#xff0c;如热门产品促销活动、新闻热点事件导致网站访问量激增时&#xff0c;服务器可能会因承受过多请求而无法及时响应。例如&#xff0c;电商平台在 “双十一” 等购物节期间&#xff0c;大量用户同时…

Windows解决localhost拒绝了连接请求

最近&#xff0c;在开发前端Vue项目时&#xff0c;Vue项目启动成功&#xff0c;没有任何报错&#xff0c;服务控制台已出现APP访问地址&#xff0c;如下图所示。 览器打开后页面先是空白&#xff0c;然后过了一会儿显示无法访问此网站&#xff0c;localhost拒绝了我们的连接请…

WPF MVVM模式实现DataGrid编辑

本文是一个MVVM模式开发的基础教程&#xff0c;完全手写实现&#xff0c;未借助三方框架&#xff0c;适用于初学者 要实现DataGrid的编辑&#xff0c;步骤如下&#xff1a; 1、创建两个窗口&#xff0c;第一个窗口用于显示DataGrid&#xff0c; 布局如下&#xff1a; 这个界…

Data+AI下的云数仓未来已来!

DataAI下的云数仓未来已来&#xff01; 前言云数仓是什么&#xff1f;云数仓的概念与背景数据孤岛问题与云数仓的优势 现代数仓如何建设&#xff1f;灵活架构与弹性扩展实时与离线处理并存安全与合规性&#xff1a;现代数仓的基石 AI如何助力数仓建设&#xff1f;AI驱动的数据处…

《探索 NESMA:软件度量领域的璀璨之星》

《探索 NESMA&#xff1a;软件度量领域的璀璨之星》 一、NESMA 初印象 NESMA&#xff08;Netherland Software Measurement Association&#xff09;&#xff0c;作为荷兰软件度量协会的简称&#xff0c;在软件规模度量领域占据着重要地位。它是五种 ISO 国际功能点标准之一&am…

C++学习路线(二十二)

构造函数 构造函数作用 在创建一个新的对象时&#xff0c;自动调用的函数&#xff0c;用来进行“初始化”工作:对这个对象内部的数据成员进行初始化。 构造函数特点 1.自动调用(在创建新对象时&#xff0c;自动调用) 2.构造函数的函数名&#xff0c;和类名相同 3.构造函数…

visual studio设置修改文件字符集方法

该方法来自网文&#xff0c;特此记录备忘。 添加两个组件&#xff0c;分别是Force UTF-8,FileEncoding。 截图如下&#xff1a; 方法如下&#xff1a;vs中点击“扩展”->“管理扩展”&#xff0c;输入utf搜索&#xff0c;安装如下两个插件&#xff0c;然后重启vs&#xf…

Cursor零基础小白教程系列 - 创建你的第一个Cursor 项目

最适合小白零基础的Cursor教程 网站lookai.top相同作者&#xff0c;最新文章会在网站更新&#xff0c;欢迎收藏书签 创建你的第一个Cursor 项目 实操视频 概述 开始使用Cursor进行编程的第一步是创建或导入一个项目。本指南将帮助您了解如何在Cursor中创建新项目、导入现有项…

GPB外链:独立站SEO提升的必备利器!

为什么GPB外链这么受欢迎&#xff1f;这主要是因为它能显著提升网站的权威性和可见性。每一条GPB外链都来自高权重的独立域名&#xff0c;并附有一篇与网站主题高度相关的原创文章。这样的外链&#xff0c;不仅对提升网站排名有帮助&#xff0c;还能为你带来更多的精准流量。 与…

Konva框选移动

效果&#xff0c;可以单独点击控制大小&#xff0c;也可框选控制 代码&#xff1a; <template><div class"rect"><div id"canvas"></div> <!-- 画布容器 --></div> </template><script setup lang"ts&…

【JVM】—G1 GC日志详解

G1 GC日志详解 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 文章目录 G1 GC日志详解1 G1 GC周期2 G1日…

老牌Trans也放量灌水中?年刊文量1000+,网友分享3个月可录,0版面费!

【SciencePub学术】今天给大家推荐的是一本计算机领域的SCI—《IEEE TRANSACTIONS ON ELECTRON DEVICES》&#xff0c;IEEE-Trans系列&#xff0c;虽然常年只能位居2区&#xff0c;不过投稿难度相对较低&#xff0c;所以还是深受大家喜爱的。 期刊概况 IF&#xff1a;2.9 分…

【计算机网络 - 基础问题】每日 3 题(五十四)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…