3.加载天地图

news2024/11/18 0:37:37

愿你出走半生,归来仍是少年!

        上一篇文章构建出来基础的白球,现在需要给它添加底图啦。先上最常用的天地图。

1.天地图

        天地图做过Gis开发的应该都知道,需要先申请key然后才能使用。然后天地图是基于XYZ的标准进行切片的,所以直接使用OSGEarth中的XYZImageLayer进行加载。

2.代码

        此处封装了一个静态函数,方便后期使用。

/// <summary>
/// 创建天地图图层
/// </summary>
/// <param name="key">天地图key</param>
/// <param name="isVector">是否是矢量图层</param>
/// <returns>天地图瓦片图层</returns>
osgEarth::XYZImageLayer* Cv::LayerFactory::CreateTdtTileLayer(std::string key, bool isVector)
{

	osgEarth::URIContext context;
	context.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/"
		"*;q=0.8,application/signed-exchange;v=b3;q=0.9");
	context.addHeader("Accept-Encoding", "gzip, deflate");
	context.addHeader("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
	context.addHeader("Cache-Control", "max-age=0");
	context.addHeader("Connection", "keep-alive");
	context.addHeader("Upgrade-Insecure-Requests", "1");
	context.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
		"Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39");

	std::string lySourceName = isVector ? "vec_w" : "img_w";

	std::string lyName = isVector ? "天地图矢量" : "天地图影像";

	osgEarth::URI imgUri("http://t[01234567].tianditu.com/DataServer?T="+ lySourceName +"&tk="+ key +"&l={z}&x={x}&y={y}",
		context);

	osgEarth::XYZImageLayer* imgLy = new osgEarth::XYZImageLayer();

	imgLy->setURL(imgUri);

	imgLy->setProfile(osgEarth::Profile::create("spherical-mercator"));

	imgLy->setName(lyName);

	imgLy->setOpacity(1);

	return imgLy; 
}


/// <summary>
/// 创建天地图注记瓦片图层
/// </summary>
/// <param name="key">天地图key</param>
/// <param name="isVector">是否是矢量图层</param>
/// <returns></returns>
osgEarth::XYZImageLayer* Cv::LayerFactory::CreateTdtRemarkTileLayer(std::string key, bool isVector)
{
	osgEarth::URIContext context;
	context.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/"
		"*;q=0.8,application/signed-exchange;v=b3;q=0.9");
	context.addHeader("Accept-Encoding", "gzip, deflate");
	context.addHeader("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
	context.addHeader("Cache-Control", "max-age=0");
	context.addHeader("Connection", "keep-alive");
	context.addHeader("Upgrade-Insecure-Requests", "1");
	context.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
		"Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39");

	std::string lySourceName = isVector ? "cva_w" : "cia_w";

	std::string lyName = isVector ? "天地图矢量注记" : "天地图影像注记";

	osgEarth::URI imgUri("http://t[01234567].tianditu.com/DataServer?T=" + lySourceName + "&tk=" + key + "&l={z}&x={x}&y={y}",
		context);

	osgEarth::XYZImageLayer* imgLy = new osgEarth::XYZImageLayer();

	imgLy->setURL(imgUri);

	imgLy->setName(lyName);

	imgLy->setOpacity(1);

	imgLy->setProfile(osgEarth::Profile::create("spherical-mercator"));

	return imgLy; 
}

3.效果

        通过osgEarth::Map的addLayer添加图层即可完成天地图的加载。

天地图矢量
天地图影像

4.参考

osgearth 加载天地图(亲测可行)_osgearth 天地图_祝太勇的博客-CSDN博客

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

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

相关文章

FreeRTOS 延时函数和软件定时器 详解

目录 什么是延时函数&#xff1f; 1.延时函数分类 2.vTaskDelay 与 HAL_Delay 的区别 什么是定时器&#xff1f; 1.软件定时器优缺点 2.软件定时器原理 3.软件定时器相关配置 4.单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器…

C++STL----list的使用

文章目录 list简介list的使用默认成员函数的使用list容器元素的修改front和backpush_front和pop_frontpush_back和pop_backinserterase list迭代器begin和endrbegin和rend list大小控制resizeclear list操作函数sortspliceremoveremove_ifuniquemergereverseassign CSTL----lis…

CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)

原文网址&#xff1a;CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用自定义节点来提高CloudFlare的CDN节点的访问速度。 CloudFlare的CDN很强大&#xff0c;可以防DDos等攻击&#xff0c;也可以提高国外服务器的访…

假如我有一台服务器,我会让它提供三种服务

一、提供照片上传、存储和下载服务 随着移动互联网时代的持续快速发展&#xff0c;PC互联网日益势微&#xff0c;各大互联网门户网站的博客、空间也跟着凋零&#xff0c; 作为博客、空间的标配功能的相册也随之被关闭。 2019年3月6日网易相册发布停运公告并于当年5月8日正式停…

网络安全—小白自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

yo!这里是进程间通信

目录 前言 进程间通信简介 目的 分类 匿名通道 介绍 举例&#xff08;进程池&#xff09; 命名管道 介绍 举例 共享内存 介绍 共享内存函数 1.shmget 2.shmat 3.shmdt 4.shmctl 举例 1.框架 2.通信逻辑 消息队列 信号量 同步与互斥 理解信号量 后记…

漫谈广告机制设计 | 混排:广告与自然结果的交锋博弈(2)

话说前文&#xff0c;在彼此不同的利益面前&#xff0c;自然侧和广告侧在混排战场展开了一番较量&#xff0c;一个浑水摸鱼&#xff0c;一个暗渡陈仓。最终双方不得不坐下来&#xff0c;为了平台整体的利益&#xff0c;一起谈谈各自的诉求&#xff0c;商讨一下解决方案。 第三…

安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境

目录 一、操作系统 1.1.什么是操作系统 1.2.常见操作系统 1.3.个人版本和服务器版本的区别 1.4.Linux的各个版本 二、VMware Wworkstation Pro虚拟机的安装 1.下载与安装 注意&#xff1a;VMWare虚拟网卡 2.配置虚拟网络编辑器 三、安装配置 WindowsServer 1.创建虚拟…

讲述为什么要学习Adobe XD以及 Adobe XD下载安装

首先 我们要了解 Adobe XD 是个什么东西 XD是Adobe公司专门开发出来面向交互、界面设计的矢量绘图工具。 然后是 他可以做什么&#xff1f; 最基本的 可以做UI界面设置 所有 手机 平板 电脑等设备的UI界面 我们都可以通过XD完成 还有就是原型设置 我们可以做各种界面图 还有…

寄存器、CPU缓存、内存。以及他们之间的关系

寄存器 CPU寄存器是CPU内部的高速存储区域&#xff0c;用于临时存储数据和指令。寄存器是CPU的重要组成部分&#xff0c;用于提高程序的执行效率。它们比主存储器更快&#xff0c;可以使得CPU更有效地处理数据和执行指令。 寄存器可以分为不同类型&#xff0c;下面列出部分AR…

用baostock库获取上证50成分股

最近知道了baostock库&#xff0c;免费&#xff0c;开源&#xff08;www.baostock.com&#xff09; 用来试试看。获取上证50成分股&#xff1a; import baostock as bs import pandas as pd# 登陆系统 lg bs.login() # 显示登陆返回信息 print(login respond error_code:lg.…

Docker 镜像读写层核心概念:rootfs、Union mount、image以及layser原理详解

Docker 镜像读写层核心概念&#xff1a;rootfs、Union mount、image以及layser原理详解 文章目录 Docker 镜像读写层核心概念&#xff1a;rootfs、Union mount、image以及layser原理详解rootfsUnion mount为什么镜像层都是只读的去掉读写层的话会有什么问题 Docker镜像imageDoc…

LVS-keepalived实现高可用

概念&#xff1a; 本章核心&#xff1a; Keepalived为LVS应运而生的高可用服务。LVS的调度无法做高可用&#xff0c;预算keepalived这个软件&#xff0c;实现了调度器的高可用。 但是&#xff1a;Keeplived不是专门为LVS集群服务的&#xff0c;也可以做其他服务器的高可用 LVS…

Vue进阶(幺陆玖)项目部署后IE报 SCRIPT1002:语法错误 解决方案探讨

文章目录 一、前言二、组件懒加载2.1 什么是懒加载2.2 如何实现懒加载 三、延伸阅读 软件程序唤醒3.1 protocolCheck 实现3.2 自定义实现 四、拓展阅读 一、前言 Vue项目改造升级后&#xff0c;原本本地热部署后IE可正常打开的项目出现页面白屏且控制台给出SCRIPT1002:语法错误…

电动两轮车智能化浪潮崛起,移远通信以全场景解决方案引领户外出行新变革

凭借受众广泛、使用方便等优势&#xff0c;电动两轮出行越来越走俏&#xff0c;成为通勤、校园、景区等场景的不二之选。而随着物联网新技术的采用&#xff0c;智能化两轮车能为骑行者带来更多样化、更舒适的驾驶和交互体验&#xff0c;也成为“Z世代”的扮靓利器和出游好伙伴。…

【LeetCode每日一题合集】2023.10.16-2023.10.22(只出现一次的数字Ⅲ)

文章目录 260. 只出现一次的数字 III⭐&#xff08;异或&#xff09;&#x1f402;2652. 倍数求和解法1——枚举模拟解法2—— O ( 1 ) O(1) O(1)容斥原理相似题目——1201. 丑数 III&#xff08;二分查找容斥原理&#xff09; 2530. 执行 K 次操作后的最大分数解法1——贪心优…

机器学习——代价敏感错误率与代价曲线

文章目录 代价敏感错误率实现代价曲线例子 代价敏感错误率 指在分类问题中&#xff0c;不同类别的错误分类所造成的代价不同。在某些应用场景下&#xff0c;不同类别的错误分类可能会产生不同的代价。例如&#xff0c;在医学诊断中&#xff0c;将疾病患者错误地分类为健康人可…

区块链技术的未来:去中心化应用和NFT的崛起

区块链技术正在以前所未有的速度改变着金融和数字资产领域。它的演进为去中心化应用和非替代性代币&#xff08;NFT&#xff09;的崛起提供了坚实的基础。在本文中&#xff0c;我们将深入探讨这一数字革命的关键方面&#xff0c;从区块链的基本原理到它如何改变金融领域&#x…

修改svc的LoadBalancer的IP引发的惨案

文章目录 背景修改externalIPs的操作api-server报错日志挽救教训 背景 k8s集群没有接外部负载均衡&#xff0c;部署istio的时候ingressgateway一直pending。 于是手动修改了这个lb svc的externalIP&#xff0c;于是k8s就崩了&#xff0c;如何崩的&#xff0c;且听我还道来。 …

Redis(03)| 数据结构-链表

大家最熟悉的数据结构除了数组之外&#xff0c;我相信就是链表了。 Redis 的 List 对象的底层实现之一就是链表。C 语言本身没有链表这个数据结构的&#xff0c;所以 Redis 自己设计了一个链表数据结构。 链表节点结构设计 先来看看「链表节点」结构的样子&#xff1a; type…