在CAD中加载大影像的一种方法
文章目录
- 前言
- 一、开发环境
- 二、具体思路
- 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中加载大影像的一种方法相关推荐
- Java中加载properties文件的6种方法
.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream( ...
- 两种在CAD中加载在线卫星影像的方法
概述 经常使用CAD的朋友应该会有这样的一个烦恼,就是当加载卫星图到CAD中进行绘图的时候,由于CAD本身的限制和电脑性能等原因,往往不能加载太大的地图图片到CAD内,这里给大家介绍两种在CAD内加载 ...
- 南方cass10.1加载大影像功能解析及多种条件测试
做过测绘的人应该都知道南方cass地形图绘制软件,而cass 10.1是目前的最新版,相对于之前的cass7.X,cass9.X版本,cass 10.1的多项功能有了重大升级,其中之一就是对于大影像的 ...
- lisp 中望cad 选项卡_CAD应用技巧:中望CAD中加载LISP程序
CAD的出现,给我们的绘图工作带来了很大的便利,而随着工作的不断细化,广大设计师对CAD的要求也在不断的增强,有些工作中需要的功能,在CAD软件中并没有提供,在这样的背景下,直接导致了LISP程序的产 ...
- 中望CAD的lisp编辑器_CAD应用技巧:中望CAD中加载LISP程序
CAD的出现,给我们的绘图工作带来了很大的便利,而随着工作的不断细化,广大设计师对CAD的要求也在不断的增强,有些工作中需要的功能,在CAD软件中并没有提供,在这样的背景下,直接导致了LISP程序的产 ...
- 中望CAD调用lisp在哪_CAD应用技巧:中望CAD中加载LISP程序
CAD的出现,给我们的绘图工作带来了很大的便利,而随着工作的不断细化,广大设计师对CAD的要求也在不断的增强,有些工作中需要的功能,在CAD软件中并没有提供,在这样的背景下,直接导致了LISP程序的产 ...
- Django中加载static无法成功的解决方法
Django中加载static无法成功的解决方法 参考文章: (1)Django中加载static无法成功的解决方法 (2)https://www.cnblogs.com/jianglijian/p/ ...
- html字体库otf文件使用,在webpack中加载.otf字体文件的正确方法是什么?
使用webpack时加载.otf字体文件的适当方式是什么?我曾多次尝试包括在我的webpack.config.js的规则,没有任何成功的基础上,很多例子我大致如下的线路看出:对于在webpack中加载 ...
- Java动态加载一个类的几种方法以及invoke
一.加载一个类的几种方法 接口 IUser package org.me.javaapp;/**** @author Administrator*/ public interface IUser {} ...
最新文章
- HTML页面加载和解析流程详细介绍
- 算力不是王道,强化学习之父Rich Sutton的六点错误
- A840S黑砖修复过程(2013-05-22修改)
- 如何将字典值写入一个文本文件?
- 2017.6.11 校内模拟赛
- [社会趣闻]储户召集7名亲友占满银行窗口 每次存一元
- 让vim显示空格,及tab字符
- win7电脑假死机怎么办
- android cygwin离线安装包,Cygwin配合NDK开发Android程序
- I00012 打印三位数的水仙花数及其个数
- linux内核启动地址的确定
- 智能优化算法——布谷鸟搜索算法原理(附代码)
- 免费PDF转换器注册码
- php mysql_query 返回值
- python gamma函数_Python 不完全伽马函数
- 没想到 Python 中竟然还藏着这些稀奇古怪的东西...
- C语言经典实例003:输出名言
- JAVA计算机毕业设计医院药品管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
- 港科夜闻|国务院港澳办主任夏宝龙在香港科大考察期间,表示对学校开展创科工作的鼓励及希望...
- Qt在线帮助文档网址以及安装包下载地址