Supermap iDesktop中三维缓存生成和使用

2024-02-25 11:18

本文主要是介绍Supermap iDesktop中三维缓存生成和使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Supermap iDesktop中三维缓存生成和使用

作者:翔翔

缓存技术是目前主流地理信息系统中普遍采用的一种图形显示技术手段。该技术大大缩短了用户的等待时间、提高了工作效率、使图形数据的浏览速度变得更加流畅。按照使用场景的不同,可以把缓存分为二维缓存和三维缓存,二维缓存也叫地图缓存,是将一幅地图生成缓存,通俗的说是将一个面生成缓存;三维缓存是场景生成的缓存,可以理解为一个体生成缓存。本文将重点介绍三维缓存。
在SuperMap中将数据按照不同分辨率或比例尺分割成不同的图像集合并保存在相应的文件夹下,然后建立一个空间索引文件,这样对数据的操作叫做生成三维缓存。
根据生成缓存的数据类型不同又可以把缓存分为矢量缓存、模型缓存、地形缓存和影像缓存,下面就来说说这几种缓存。
1、矢量缓存
矢量缓存是由矢量数据集生成的缓存,下图就是生成矢量缓存的对话框。矢量缓存的配置文件格式是*.scv。

![这里写图片描述](https://img-blog.csdn.net/20151113163301641)
矢量缓存对话框

在切矢量缓存的时候有几点需要注意,第一就是剖分方式,剖分方式有两种,一个是平面,另一个是球面。平面是将地球球面展开成平面,将地球球面模拟成一个平面;球面则是模拟地球的表面。当数据的坐标系是投影信息的时候,可以自己手动选择平面和球面,这就需要根据该数据使用的场景来确定选择哪一个剖分方式;当数据的坐标系是平面无投影坐标系的话,就只能选择平面剖分方式;是地理坐标系的时候只能选择球面剖分方式。第二个就是瓦片边长,瓦片边长是和比例尺一一对应的,同时也把每一个比例尺或者瓦片边长作为一个层级,将鼠标放在“瓦片边下”右边的问号可以看到对应的关系图,如下图所示

![这里写图片描述](https://img-blog.csdn.net/20151113162828215)
瓦片边长与比例尺

在生成矢量缓存的时候往往会给你个参考值,根据矢量数据的含义或范围不同选择不同层级的瓦片边长,矢量缓存一般选择层级14-15也就是1222.99-611.50的瓦片边长,这样效果会好点。第三就是存储类型,有两种存储类型,一是紧凑型的,紧凑型的就是对数据进行压缩和加密,数据格式为*.cf;一是原始型的,这保留了数据的原始信息,数据格式是*.scvb和*.scvd构成。
2、模型缓存
模型缓存,模型数据生成的缓存,通常情况下是CAD模型数据生成的缓存,这和矢量数据集有一样的地方,可以通过下图生成模型缓存的对话框来细说差别。模型缓存的缓存配置文件格式是*.scv。

![这里写图片描述](https://img-blog.csdn.net/20151113170021377)
生成模型缓存对话框

其中创建LOD层是矢量缓存中不能设置的,LOD(Levels Of Details)指的是模型显示的细节层次。对于近处的模型采用精细模型效果显示,远处的模型采用简单模型显示。模型简化率,指的是对模型显示的细节按照百分比进行简化,也就是说,模型简化率10%=骨架简化掉90%。
在iDesktop 8C中已经可以生成OSGB格式的模型缓存。缓存索引文件的格式是*.scp。如下图所示:

![这里写图片描述](https://img-blog.csdn.net/20151113170315583)
生成OSGB模型缓存

由上图可知,在选择生成OSGB缓存时,才能设置LOD层级相关参数。而在生成矢量模型缓存时只需要勾选上“创建LOD层”和设置简化率。LOD层级设置中的距离表示的两层之间相机高度切换距离,如上图所示的层级分为了0、1、2、3、4层级,每个层级都有一个距离,当相机高度小于等于200米时显示的层级0的数据;当相机高度大于200小于等于400显示的是层级1的数据;以此类推。将OSGB缓存文件添加到场景中之后,可以通过设置切换距离的缩放倍数来设置切换距离,而切换距离=设置的LOD距离*缩放比例。

![这里写图片描述](https://img-blog.csdn.net/20151113171044070)

3、地形缓存
地形缓存顾名思义就是地形数据生成的缓存,和矢量缓存有类似却又有不同之处,下图就是生成地形缓存的对话框。地形缓存的配置文件格式是*.sct。

![这里写图片描述](https://img-blog.csdn.net/20151113171128480)
生成地形缓存对话框

从上图,可以看出与矢量缓存的生成是不同的,在这里需要注意的有比例尺设置和块大小选择。第一个“比例尺设置”显示的是当前数据的影像金字塔比例尺层级,在这里勾选层级比例尺,即可按照剖分规则,对每一分块对应的区域范围的数据将存储为一个切片文件(缓存图片),从而得到地形缓存数据。剖分规则是采用规则的正方形格网进行数据的分割,分割后的每一块空间区域为一个正方形区域,这里称为分块,每一个分块对应的数据最终存储为一个缓存文件。经纬度坐标系全球剖分规则中,第0层采用180度180度的经纬度范围进行分块,则全球范围共被分割成2块;第1层采用90度90度的经纬度范围进行分块,则全球范围共被分割成8块。依次类推,一直按1/2倍进行剖分,即对分块进行四叉树分割。

![这里写图片描述](https://img-blog.csdn.net/20151113171158944)
剖分规则示意图

第二个,块大小(像素)获取缓存预处理后生成的每个缓存分块文件的采样大小,单位为像素,即pixespixes。应用程序提供了20482048,10241024,512512,256256,128128,6464六种尺寸,每一个尺寸对应比例尺个数不一样,块越大,比例尺越少,块越小,比例尺越多。
4、影像缓存
影像缓存,影像数据集生成的缓存,其参数设置和地形缓存的参数设置是一样的,从下图的生成对话框就可明白。影像缓存的配置文件格式是
.sci。

![这里写图片描述](https://img-blog.csdn.net/20151113171353767)
生成影像缓存对话框

以上就是SuperMap生成这四种缓存的方式和注意事项,在使用缓存的过程中要怎么优化,这就是接下来需要说到的。在图层管理器中,“普通图层”和“地形图层”鼠标右键可以加载生成的缓存。如图所示

![这里写图片描述](https://img-blog.csdn.net/20151113171522688)![这里写图片描述](https://img-blog.csdn.net/20151113171530818)

通过加载缓存配置文件,把缓存加载到场景中。在场景中使用了缓存,也还有一些基本技巧来把场景进一步的优化。设置图层的过滤设置是最基本的一个调优方法,过滤设置包括设置可见高度、设置可见距离和可见像素,通过图层的过滤设置我们可以控制场景中显示对象个数和图层个数的的多少,从而使场景的浏览速度更快,性能更好。可见高度的设置如下图所示:

![这里写图片描述](https://img-blog.csdn.net/20151113171626138)
可见高度设置

可见高度主要是针对图层过过滤,对所有图层都有效的,通过设置可见高度,来控制场景中图层的显示个数。可见距离和可见像素的设置如下图所示:

![这里写图片描述](https://img-blog.csdn.net/20151113171713244)
可见距离和可见像素设置

可见距离和可见像素主要是针对对象过滤,适用于模型和矢量数据。通过设置可见距离和可见像素来控制场景中对象的显示个数,从而达到优化场景性能的目的。

这篇关于Supermap iDesktop中三维缓存生成和使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745308

相关文章

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain