文章目录

  • 前言
  • 一、开发环境
  • 二、具体思路
    • 1.gdal-rasterIO
    • 2.objectarx-自定义实体
    • 3.坐标转换
    • 4.调用方法

前言

受制于AutoCAD中RasterImage对象的限制,原生CAD环境中加载大型文件的影像时会异常卡顿,本文演示如何在AutoCAD中结合gdal加载几十上百G的tif和WMS/TMS/WTMS发布的影像服务。

全球缩略图

缩放至帝都


一、开发工具和环境

本次采用objectarx2020(64位)+vs2017+gdal3.14环境

objectarx2020可在autodesk官网下载

gdal开发环境推荐下载地址

https://www.gisinternals.com/release.php

二、具体思路

1.gdal RaterIO

关于rasterIO,gdal大神李民录已经写得很详细,具体参考

https://blog.csdn.net/liminlu0314/article/details/7072224

raterIO可以打开WMS/WMTS/TMS/geogiff中指定位置的RGB数据

2.objectarx自定义实体

在cad自定义实体重载subworldDraw时根据当前屏幕范围用gdal中的rasterIO方法去请求获取RGB绘制信息块

在请求数据后根据指定长宽即可在CAD自定义实体中调用mode->rawGeometry()->image(....)方法绘制

CAD在View大小发生改变时即重新根据范围去请求刷新图片即可,最后结果是根据当前显示范围大小加载不同层级的影像,实际坐标与影像坐标1:1匹配。

3.坐标转换

CAD屏幕坐标获取方法

void ImageIOThread::getScreenCorners(AcGePoint2d& ptLeftLower, AcGePoint2d& ptRightUpper)
{CRect rc;CView* pCurView = acedGetAcadDwgView();pCurView->GetClientRect(&rc);CPoint ptTopLeft = rc.TopLeft();CPoint ptBottomRight = rc.BottomRight();acedDwgPoint pt1, pt2;acedCoordFromPixelToWorld(ptTopLeft, pt1);acedCoordFromPixelToWorld(ptBottomRight, pt2);ptLeftLower.x = pt1[0];ptLeftLower.y = pt2[1];ptRightUpper.x = pt2[0];ptRightUpper.y = pt1[1];
}

通过当前屏幕坐标去计算对应在Image中对应的行列号,这里需要注意的是WMS等服务采用的是EPSG3857即伪墨卡托托影,实际使用过程中需要将当前坐标转至经纬度后再将经纬度转换成 3857,具体转换方法可参考李民录blog,也可用proj库进行坐标转换,各地不同坐标系定义不同椭球参数或用4参数/7参数进行转换。

4.调用方法

调用示例:

链接:https://pan.baidu.com/s/17xG5Sh1rhndPqq5fqizZqg

在CAD中加载大影像的一种方法相关推荐

  1. Java中加载properties文件的6种方法

    .使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream( ...

  2. 两种在CAD中加载在线卫星影像的方法

    概述 经常使用CAD的朋友应该会有这样的一个烦恼,就是当加载卫星图到CAD中进行绘图的时候,由于CAD本身的限制和电脑性能等原因,往往不能加载太大的地图图片到CAD内,这里给大家介绍两种在CAD内加载 ...

  3. 南方cass10.1加载大影像功能解析及多种条件测试

    做过测绘的人应该都知道南方cass地形图绘制软件,而cass 10.1是目前的最新版,相对于之前的cass7.X,cass9.X版本,cass 10.1的多项功能有了重大升级,其中之一就是对于大影像的 ...

  4. lisp 中望cad 选项卡_CAD应用技巧:中望CAD中加载LISP程序

    CAD的出现,给我们的绘图工作带来了很大的便利,而随着工作的不断细化,广大设计师对CAD的要求也在不断的增强,有些工作中需要的功能,在CAD软件中并没有提供,在这样的背景下,直接导致了LISP程序的产 ...

  5. 中望CAD的lisp编辑器_CAD应用技巧:中望CAD中加载LISP程序

    CAD的出现,给我们的绘图工作带来了很大的便利,而随着工作的不断细化,广大设计师对CAD的要求也在不断的增强,有些工作中需要的功能,在CAD软件中并没有提供,在这样的背景下,直接导致了LISP程序的产 ...

  6. 中望CAD调用lisp在哪_CAD应用技巧:中望CAD中加载LISP程序

    CAD的出现,给我们的绘图工作带来了很大的便利,而随着工作的不断细化,广大设计师对CAD的要求也在不断的增强,有些工作中需要的功能,在CAD软件中并没有提供,在这样的背景下,直接导致了LISP程序的产 ...

  7. Django中加载static无法成功的解决方法

    Django中加载static无法成功的解决方法 参考文章: (1)Django中加载static无法成功的解决方法 (2)https://www.cnblogs.com/jianglijian/p/ ...

  8. html字体库otf文件使用,在webpack中加载.otf字体文件的正确方法是什么?

    使用webpack时加载.otf字体文件的适当方式是什么?我曾多次尝试包括在我的webpack.config.js的规则,没有任何成功的基础上,很多例子我大致如下的线路看出:对于在webpack中加载 ...

  9. Java动态加载一个类的几种方法以及invoke

    一.加载一个类的几种方法 接口 IUser package org.me.javaapp;/**** @author Administrator*/ public interface IUser {} ...

最新文章

  1. HTML页面加载和解析流程详细介绍
  2. 算力不是王道,强化学习之父Rich Sutton的六点错误
  3. A840S黑砖修复过程(2013-05-22修改)
  4. 如何将字典值写入一个文本文件?
  5. 2017.6.11 校内模拟赛
  6. [社会趣闻]储户召集7名亲友占满银行窗口 每次存一元
  7. 让vim显示空格,及tab字符
  8. win7电脑假死机怎么办
  9. android cygwin离线安装包,Cygwin配合NDK开发Android程序
  10. I00012 打印三位数的水仙花数及其个数
  11. linux内核启动地址的确定
  12. 智能优化算法——布谷鸟搜索算法原理(附代码)
  13. 免费PDF转换器注册码
  14. php mysql_query 返回值
  15. python gamma函数_Python 不完全伽马函数
  16. 没想到 Python 中竟然还藏着这些稀奇古怪的东西...
  17. C语言经典实例003:输出名言
  18. JAVA计算机毕业设计医院药品管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  19. 港科夜闻|国务院港澳办主任夏宝龙在香港科大考察期间,表示对学校开展创科工作的鼓励及希望...
  20. Qt在线帮助文档网址以及安装包下载地址

热门文章

  1. 如何招聘:永远不要自负的人
  2. 【Python+Appium】开展自动化测试(七)截图方法
  3. 语音合成——闽南语合成(1)
  4. APP(IOS)蒲公英上传成功但下载页报错
  5. python 鼠标 自动点击_鼠标隔段时间自动点击屏幕
  6. C++描述 LeetCode 1768. 交替合并字符串
  7. PB调用C#开发的控制台应用——实现WORD文档按页转存JPG图片
  8. 秉持技术普惠的华为,致力于无处不在的联接
  9. prometheus监控服务器基本信息+华为交换机设备
  10. STM32 CubeMX配置ADC+DMA进行FFT(1)