基于AutoCAD的WMTS服务加载方法与应用研究

news2025/3/16 19:05:53

"针对在AutoCAD中加载地图存在数据定位操作复杂、数据渲染效率低、无法接入第三方地理信息服务的问题,提出了在AutoCAD中加载OGC标准的网络地图分块服务方法。基于ObjectARX二次开发插件,实现在AutoCAD中加载WMTS服务,兼容了第三方地理信息服务,为网络地图服务加载提供解决方法。基于天地图的应用案例表明:所提方法不仅能加载WMTS地图服务,还能够保证地图位置正确、渲染效率高效、操作简单,研究结果可以应用于地理信息数据生产、规划设计等领域。"

1 引言

利用AutoCAD在地理信息数据生产、规划设计等过程中,需要加载矢量电子地图、遥感影像地图、地形渲染地图等多源数据提供空间参考。张小波[1]、韦胜[2]等提出将数据进行切片处理,生成瓦片地图,再通过编程实现在AutoCAD中读取展示本地瓦片数据;成国辉[4]介绍了在AutoCAD中插入影像图的实现机制,实现了自动加载影像图。这些研究解决了大范围地图快速展示,但是缺乏对地理信息标准服务兼容,无法直接加载第三方地理信息服务,不利于地理信息资源共享和利用。目前地图服务一般采用OGC标准的网络地图分块服务(Web Map Tile Service,WMTS)[5],例如天地图就是通过WMTS提供丰富的地理信息数据资源服务[6],通过在线服务满足用户对基础数据的需求。

本文主要研究在AutoCAD中加载WMTS服务的方法,对WMTS服务进行兼容,解决多源异构型数据集成展示问题,并通过ObjectARX二次开发WMTS地图加载插件(WebMapLoader),将WMTS服务作为参考底图快速应用到实际生产中。本文重点介绍WMTS地图加载更新流程、WMTS服务解析、瓦片计算原理、瓦片获取和加载方法四个方面的内容,并贴出实现核心代码。

2实现方法与关键技术

2.1 WMTS地图加载更新流程

WMTS地图加载、更新流程,如图1所示。通过监听当前文档视图中心点的变化,触发地图加载更新流程。首先,获取当前视口屏幕范围、视图中心点和视口高度,计算左上角坐标和右下角坐标和分辨率,通过瓦片计算模型,计算出瓦片行号、列号、级别,利用并发网络或本地读取获取需要加载的瓦片数据集,加载最新瓦片集数据,最后锁定瓦片图层,完成瓦片地图加载。

图1 瓦片地图加载流程图

2.2 WMTS服务解析

WMTS支持HTTP KVP(Key-Value Pair)、SOAP、REST三种实现模型 。WMTS1.0.0规范了ServiceMetadata(服务元数据)、Tile(瓦片地图)、FeatureInfo(要素信息)三种资源。调用GetCapabilities接口返回服务元数据,包括服务能力和信息内容,利用XmlDocument类解析XML格式的元数据,为计算视图范围内瓦片信息提供必要参数,主要包括ows:BoundingBox节点、ResourceURL节点、TileMatrixSet节点,它们分别是服务范围、资源地址、瓦片矩阵集。瓦片矩阵集包括级别Level、比例尺Scale、瓦片的宽TileWidth和高TileHeight、边界框的左上角坐标(TileMatrixminX,TileMatrixmaxY)、以瓦片为单位来定义的矩阵的宽MatrixWidth和高MatrixHeight。WMTS服务解析关键代码如下:

2.3 瓦片计算原理

首先计算瓦片矩阵集中每层级的地面分辨率Resolution1:

    

(1)

式中:scale 地图比例尺,为PPI为屏幕分辨率,默认屏幕分辨率是96。

计算当前AutoCAD窗口显示地面分辨率Resolution2,将当前屏幕地图分辨率与瓦片矩阵集中每层级的分辨率Resolution1进行比较,获取最接近的地图层级:

   (2)

式中: Viewsize为按图形单位存储当前视口的高度; ScreensizeY 为以像素为单位存储当前视口的高度。

参考WMTS[5]标准,瓦片矩阵中的每个瓦片由瓦片的行(TileRow)列(TileCol)值进行标识,行列值分别从瓦片矩阵左上角点所在的瓦片开始算起,依次向下向右增加。根据当前视图范围计算出左上角(TileMinCol,TileMinRow)和右下角(TileMaxCol,TileMaxRow)瓦片行列号,再遍历出当前视图范围所有瓦片的行列号:

   (3)

   (4)

   (5)

   (6)

式中: BoxMinX为当前视图范围最小X; BoxMaxX为当前视图范围最大X; BoxMaxY为当前视图范围最大Y; BoxMinY为当前视图范围最小Y。

2.4 瓦片获取和加载方法

通过瓦片计算模型,计算出当前视图需要加载的瓦片级别、行号、列号参数,根据瓦片资源模板,生成每张瓦片地图地址,采用并发网络或本地读取的方式,获取到瓦片数据集。

AutoCAD的栅格图像是由RasterImageDef类(图像定义对象)和RasterImage类(图像实体)实现。图像实体可以在特定的位置和方向上插入栅格瓦片,同时也可以设置栅格瓦片的对比度、是否透明等图像类属性。图像定义对象负责维护图像文件的链接、栅格图像的显示和打印操作。瓦片加载方法实现关键代码如下:

获取完整工具/源代码请将邮箱发送给作者,并扫码关注“地知通”公众号,订阅更多免费实用工具。

3 应用案例

如图2所示,使用WMTS地图加载插件调用天地图遥感影像地图,应用在1:500DLG测绘工作中,利用WMTS服务加载方法在AutoCAD中快速接入影像地图及其它资料,为前期控制点的布设、后期数据检查和地形要素变化监测提供数据参考。在控制点选定过程中,通过判读影像,了解周边地势情况,远离大面积水域、高层建筑物、高压电线等;在地形图编绘过程中,将野外观测数据与影像地图进行比对,查看数据与影像地图位置差异,方便检查发现数据错误;在地形要素变化监测中,通过影像地图作为底图参考,叠加已有地形图资料,快速判读要素几何图形的变化,为数据更新工作提供技术支撑,提升作业效率。

图2 在AutoCAD中加载天地图遥感影像地图效果

4 结束语

在AutoCAD中加载WMTS数据服务,为AutoCAD在地理信息要素采集、更新、核查等过程中提供了空间参考,解决了多源异构型数据集成展示问题,为网络数据加载提供了解决方法,拓宽了数据来源,并通过插件的方式快速应用到实际生产中,提升了工作效率,具有较高的推广应用价值。

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

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

相关文章

基于Springboot的旅游管理系统

基于SpringbootVue的旅游管理系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页展示 旅游方案展示 旅游资讯 后台管理员登录 后台管理页面首页 用户管理 …

【自动驾驶】贝叶斯算法在机器学习中的应用研究

目录 第一章:引言 1.1 贝叶斯算法在机器学习中的重要性 1.2 研究背景 1.3 研究目的 1.4 论文结构 第二章:贝叶斯算法概述 2.1 贝叶斯定理 2.2 贝叶斯算法分类 第三章:贝叶斯算法在机器学习中的应用 3.1 贝叶斯分类器 3.2 贝叶斯回…

SpringSecurity源码分析3--UserDetail部分

UserDetailsService.class DaoAuthenticationProvider.class AbstractUserDetailsAuthenticationProvider.class 一个允许子类重写和处理UserDetails对象的基AuthenticationProvider。该类旨在响应UsernamePasswordAuthenticationToken身份验证请求。 AuthenticationProvider…

Gartner 《2024安全和风险管理技术路线图》:高价值技术 DSP 进入广泛部署阶段

近期,Gartner 发布《2024年技术采用路线图:安全与风险管理》(以下简称:《路线图》),该信息图表识别了全球企业正在采用的 44 种与安全相关的技术,并根据采用阶段、部署风险和企业价值进行了映射…

python中的列表、元组、字典、集合(字典篇)

数据类型定义符号访问元素是否可变是否重复是否有序列表 [ ]索引可变可重复有序元组()索引不可变可重复有序字典{key:value}键可变可重复无序集合{ }可变不可重复无序 字典概念 在python语言中,字典属于内置容器类,其…

什么是云安全

云安全和网络安全有所不同,因为云安全一词 比网络安全更涵盖整个企业基础设施。一般来说,当人们提到云安全时,指的是第三方服务提供商提供的 IaaS 云环境。在这种情况下,云安全不仅包括网络安全工具,还包括服务器、容器…

C#基础|数据类型、变量

哈喽,你好啊,我是雷工! 01 数据类型 数据类型是为了方便存储数据的,为了将数据按照不同的分类存储,所以引入数据类型。这个在PLC中已经很熟悉了。 数据类型的作用:就是为了更好地管理内存,为…

[C++][算法基础]求最小生成树(Prim)

给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E),其中 V 表示图中点的集合,E 表示图…

【深度学习】AI修图——DragGAN原理解析

1、前言 上一篇,我们讲述了StyleGAN2。这一篇,我们就来讲一个把StyleGAN2作为基底架构的DragGAN。DragGAN的作用主要是对图片进行编辑,说厉害点,可能和AI修图差不多。这篇论文比较新,发表自2023年 原论文&#xff1a…

拼多多容器文件修改自动上传

拼多多开放平台php环境是官方的linux容器,不能自己搭建ftp上传文件,每每有文件更新都挺麻烦。 有些功能测试不想每次都打包全部代码上去重新发布一次程序生成新的容器,那样太过麻烦和效率低。 一开始搞了一个php的文件管理工具上去&#xf…

高效解决Visual Studio Code中文乱码问题

文章目录 问题解决步骤 问题 Visual Studio Code新建一个文件编码方式总是默认GBK,如果我不修改成默认UTF-8,那么每次运行,如果有中文需要输出就会乱码! 解决步骤 之后我会持续更新,如果喜欢我的文章,请记…

Apache DolphinScheduler 社区 3 月月报

各位热爱 DolphinScheduler 的小伙伴们,DolphinScheduler 社区月报开始更新啦!这里将记录 DolphinScheduler 社区每月的重要更新。 社区为 DolphinScheduler 3.2.x 版本做了诸多功能改进和 bug 修复 DolphinScheduler 月度 Merge Stars 感谢以下小伙伴 …

腾讯云轻量应用服务器端口怎么打开?

腾讯云轻量应用服务器端口怎么打开?在轻量应用服务器控制台的防火墙中开启端口,本文腾讯云百科txybk.com以80端口为例,来详细说下轻量应用服务器端口打开教程,另外可以在腾讯云百科 txy.wiki 查看当前轻量服务器最新的优惠券和配置…

LSTM 循环神经网络原理深度解读与网络结构精细剖析

长短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊的循环神经网络(Recurrent Neural Network, RNN),设计用于解决长期依赖问题,特别是在处理时间序列数据时。 循环神经网络(RNN&#xf…

jenkins(docker)安装及应用

jenkins Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解…

【InternLM】LMDeploy部署实践

1. LMDeploy基本介绍 LMDeploy提供一站式的大模型压缩、部署和服务,其主要特点包括: 高效的推理速度。通过引入持久批处理(即连续批处理)、阻塞 KV 缓存、动态拆分与融合、张量并行、高性能 CUDA 内核等关键特性,提供了比 vLLM 高1.8倍的请…

从零开始写一个RTSP服务器(三)RTP传输H.264

目录 一、RTP封装1.1 RTP数据结构1.2 源码 二、H.264的RTP打包2.1 H.264格式2.2 H.264的RTP打包方式2.3 H.264 RTP包的时间戳计算2.4 源码 三、H.264 RTP打包的sdp描述四、测试 本篇文章目标,使用vlc打开sdp文件后,可以观看到视频数据 一、RTP封装 1.1 …

实战:完美解决md图床问题-nginx图床-2024.4.16(测试成功)

目录 文章目录 目录1、前言图床简介搭建方式需求背景解决方案 2、配置过程1.部署nginx服务2.配置picgo3.配置rsync服务(可选) 3、测试验证关于我最后最后 1、前言 图床简介 对于写博客的朋友们来讲,图床这个东西一定不会陌生,而且在一定程度上也给大家…

MySQL8.0.20 下载与安装

一、下载 MySQL服务器下载安装: 官网社区版地址: https://downloads.mysql.com/archives/installer/ 二、安装 安装注意事项---成功秘诀 安装密码不要设置复杂了,千万要记住密码,比如root和mysql就很好;不要随意卸…

4.Spring AOP

4.1 Spring AOP的基本概念 4.1.1 AOP的概念 在业务处理代码中,通常都有日志记录、性能统计、安全控制、事务处理、异常处理等操作。尽管使用OOP可以通过封装或继承的方式达到代码的重用,但仍然存在同样的代码分散到各个方法中。因此,采用OO…