基于GDAL开源库的海量DOM分幅裁剪_佘佐明.pdf
《基于GDAL开源库的海量DOM分幅裁剪_佘佐明.pdf》由会员分享,可在线阅读,更多相关《基于GDAL开源库的海量DOM分幅裁剪_佘佐明.pdf(5页珍藏版)》请在咨信网上搜索。
1、2023 年 2 月第 1 期城市勘测Urban Geotechnical Investigation SurveyingFeb2023No1引文格式:佘佐明,程晓光,王艳军 基于 GDAL 开源库的海量 DOM 分幅裁剪 J 城市勘测,2023(1):7478文章编号:16728262(2023)017405中图分类号:TP751文献标识码:A基于 GDAL 开源库的海量 DOM 分幅裁剪佘佐明1*,程晓光2,王艳军3*收稿日期:20221026作者简介:佘佐明(1965),男,高级工程师,注册测绘师,主要从事大地测量、工程测量、摄影测量与遥感专业方面的研究与管理工作。Email:65448
2、0322 qqcom通信作者:程晓光(1985),男,博士,高级工程师,主要从事航空摄影测量、遥感、测绘内业软件研发。Email:chengxg outlookcom基金项目:湖南省自然科学基金项目(2020JJ3020、2020JJ5164)(1.贵阳市测绘院,贵州 贵阳550000;2.飞燕航空遥感技术有限公司,湖北 武汉430061;3.湖南科技大学地理空间信息技术国家地方联合工程实验室,湖南 湘潭411201)摘要:海量数字正射影像(DOM)的分幅裁剪是测绘与 GIS 领域的基础问题。现有商业软件的 DOM 分幅裁剪功能存在自动化、批量化程度和效率低下的问题。针对海量 DOM 分幅裁剪
3、过程中涉及的源 DOM 预处理、图幅生成、数据部署、影像裁剪和结果检查等各个环节,提出了基于开源软件 GDAL 的解决方案。通过综合使用 GDAL 命令和开源软件编程,在最大程度上提高了海量 DOM 分幅裁剪的效率和自动化程度。本文方法在贵阳市航空航天摄影项目中得到了充分验证。关键词:海量 DOM;分幅裁剪;GDAL;开源软件1引言数字正射影像(Digital Orthophoto Map,DOM)是基础测绘领域主要的数据产品类型之一。在测区范围大、空间分辨率高时,DOM 数据量十分巨大,因而也通常称为海量 DOM。如果海量 DOM 以不分幅的形式存储,则在加载、显示、管理、调度、分析上十分困
4、难,还容易造成存储空间浪费。因此,一般需要对 DOM 进行分幅裁剪,方便管理与使用。GB/T 139892012 国家基本比例尺地形图分幅和编号1 规定了地形图分幅和编号的方法。除国家标准外,也可以自定义分幅方法。目前各类商业 GIS、遥感及摄影测量软件均支持对 DOM 基于空间坐标、像素坐标、矢量边界、空间关系等进行裁剪26。但是,DOM 裁剪往往存在源 DOM数量多,图幅数量大,影像格式、数据类型、波段数目、空间分辨率、坐标系、无数据值等属性不统一,坐标不对齐等问题。商业软件一般对单张 DOM、单个图幅的裁剪支持得很好,但是对海量 DOM、大量图幅的分幅裁剪的支持不够完善,操作烦琐,效率低
5、下。当前,测绘行业往往采用国外商业软件进行自动化、批量化的 DOM 分幅裁剪,例如,文献 7 9利用ArcGIS 的模型构建器制作批量裁剪工具;文献 10 利用 Java 和 ArcGIS 的二次开发组件库 ArcObject 开发裁剪工具;文献 11 利用 Arcpy 脚本修改 ArcGIS 裁剪函数模板,将模板应用到栅格数据裁剪。但国外商业软件价格昂贵,不利于测绘软件的自主可控。随着开源软件的兴起,借助开源软件进行海量DOM 的自动化分幅裁剪的难度大大降低。本文提出了基于开源软件 GDAL12(Geospatial Data AbstractionLibrary)对 DOM 进行分幅裁剪的
6、方法,通过在各步骤中综合使用 GDAL 命令和开源软件编程,实现了海量DOM 裁剪的自动化、批量化和高效化。贵阳市航空航天摄影项目验证了本文方法的有效性。2GDAL 简介GDAL 是 GIS 和遥感领域对栅格和矢量空间数据的读写支持得最好的开源软件之一12,提供了功能强大的处理命令可用于 DOM 裁剪。但大部分 GDAL 命令一般针对单个文件进行处理,在利用多个图幅裁剪时需要为各个图幅单独编写命令,在图幅多时十分不便。此外,GDAL 命令对于中文的支持不好。因此,海量 DOM的批量分幅裁剪需要引入 GDAL 的二次开发编程。除 C/C+的二次开发接口外,GDAL 还提供了 Py-thon,Ja
7、va,C#等的调用接口12。在 C+接口中,对栅格/矢量数据格式的支持是通过类 GDALDriver 实现的,栅格/矢量数据集抽象为类 GDALDataset,栅格数据集的单个波段抽象为类 GDALasterBand,空间坐标系抽象为类 OGSpatialeference,GDALOpen 和 GDAL-Close 函数用于打开和关闭数据集,CPLMalloc 和 CPL-第 1 期佘佐明,程晓光,王艳军.基于 GDAL 开源库的海量 DOM 分幅裁剪Free 常用于申请和释放内存。3方法3.1源 DOM 预处理由于 GDAL 几乎支持所有的主流栅格数据格式,且 GDALDataset 屏蔽了
8、格式差异,使用相同的方法即可读取绝大部分格式的源 DOM12,因此一般不需要考虑文件格式统一的问题。源 DOM 只需要做到数据类型、波段、坐标系、空间分辨率和无数据值的统一及像素坐标对齐。(1)数据类型统一DOM 常用 1 字节无符号整型(下文简称为 UInt8_t)存储单个波段的 DN 值。但是,DOM 的数据类型不限于此,例如,卫星遥感影像常采用 2 字节无符号整型。在 gdal_translate 命令中,可通过 ot 选项设置输出的数据类型,通过 scale 和 exponent 选项采用幂函数将位于指定范围的 DN 值拉伸到指定的输出范围12。gdal_trans-late 对应的
9、C/C+接口函数为 GDALTranslate()。(2)波段统一常见的真彩色 DOM 一般包含 3 个波段。对只有1 个波段、采用颜色查找表记录 DN 值的彩色 DOM,可在 gdal _ translate 命令中设置 expand 选 项 的 值 为rgb12。该命令的 b 选项可用于设置输出波段、调整波段顺序。(3)坐标系统一源 DOM 可能具有不同的空间坐标系。编程实现影像坐标转换较为复杂,可使用 gdalwarp 命令将源DOM 的坐标系统一到指定坐标系。gdalwarp 命令的 r选项用于指定重采样方法,s_srs 和 t_srs 选项分别用于设置源 DOM 和目标 DOM 坐标
10、系12。指定坐标系的方式包括 EPSG 编码、WKT(Well Known Text)文本、POJ4 声明或含 WKT 格式的坐标系定义的 prj 文件。作者建议,对 EPSG 已定义的坐标系,优先使用 EPSG编码;否则可在与目标坐标系接近且 EPSG 已定义的坐标系的 WKT 的基础上进行修改。(4)空间分辨率统一源 DOM 的空间分辨率统一非常重要。gdal_trans-late 和 gdalwarp 都有 tr 选项可用于设置输出分辨率12。作者建议将 tr 选项设置为确定的值,非必要不设置 ts、outsize、a_ullr 选项。(5)无数据值统一为表示某像素是否有效,测绘领域常用
11、的方法是将无效像素的 DN 值设为无数据(NoData)值。gdalwarp 命令的 dstnodata 选项和 gdal_translate 的 a_nodata 选项可用于设置输出影像的无数据值,既可以所有波段共用相同的无数据值,也可以逐波段设置12。但该方法只是设置影像的无数据值属性,并不能修改像素 DN 值。针对 DOM 单个波段具有多个无数据值以及影像存在伪无数据区域的问题,以数据类型为 UInt8_t 的DOM 为例,本文给出一种解决方法,可统一无数据值,并排除伪无数据区域,步骤如下:将所有可能的无数据值放入无重复集合 Snodata;创建一个单通道、行列数和源 DOM 相同的二值
12、图像 Mbin,值初始化为 0;遍历 DOM 所有像素,查找各波段 DN 值均在Snodata内的像素,Mbin中对应像素的值设为 255;对 Mbin进行联通分析,获得联通区域;遍历各个联通区域,采用图 1 所示方法进行处理。区域邻接像素计算方法如下:采用 33 的结构元对 Mbin进行膨胀,将膨胀结果减去 Mbin,差值图像中值为 255 的像素即为区域邻接像素。Abig可简单取整幅DOM 面积 5%左右的值,DNhigh可取大于等于 200 的值,DNlow可取小于等于 20 的值,phigh和 plow可取大于等于 50%的值。图 1无数据值修复流程图(6)坐标对齐GDAL 定义的像素
13、坐标对齐是确保图像角点 XY坐标是分辨率的整数倍,在 gdalwarp、gdalbuildvrt 和gdal_merge py 中,tap 选项可用于设置像素坐标对齐12。但如果 DOM 无旋转,且分辨率已统一,则可以认为像素坐标对齐是所有 DOM 的角点坐标差为分辨率的整数倍。此处给出一种对源 DOM 进行坐标对齐57城市勘测2023 年 2 月的方法。设基准坐标为 xbase,ybase(),源 DOM 左上角坐标为 xul,yul(),则对齐后的左上角坐标 xul,yul()的计算方法可见式,其中 round 为四舍五入函数,x和 y分别为源 DOM 在列和行方向上的分辨率。xul=xr
14、ound(xulxbase)/x+xbaseyul=yround(yulybase)/y+ybase(1)3.2图幅生成文献 13给出了一种基于测区边界进行地图分幅的方法,可以自动、快速地生成位于测区内部和边界上的图幅。3.3数据部署鉴于数据量大,DOM 可能被存储在多台电脑的外存储器上。虽然可通过网络读写 DOM,但速度受带宽制约。显然,读写本地数据、在多台电脑上并行裁剪的方式效率高,在单台电脑上应尽量使用只覆盖本地源DOM 的图幅进行裁剪。此处给出一种方法:(1)使用 gdaltindex12 或其他工具生成含有本地源 DOM 覆盖范围的矢量文件;(2)将前一步生成文件与图幅接合表叠加显示
15、;(3)将完全落在(需要考虑到图幅外扩)本地源DOM 覆盖范围内的图幅单独保存为一个图幅接合表,用于本地 DOM 裁剪;(4)将源 DOM 分布在多台电脑上的图幅保存为图幅接合表,通过网络裁剪。3.4分幅裁剪DOM 分幅裁剪的流程如图 2 所示。如果求得所有源 DOM 包容盒的并集并生成对应的矩形图幅,则该流程得到的就是拼接后的图幅。图 2影像裁剪流程图(1)重叠集定义DOM 分幅裁剪的核心问题是计算图幅对应的目标 DOM 的像素来自于哪些源 DOM 的哪些行和列,本文称为重叠集。重叠集抽象出的结构体 OverlapSet 的示例定义代码如下:struct OverlapSetstring s
16、trSrcPath;/源 DOM 路径string strDstPath;/目标 DOM 路径int nSrcow0;/在源 DOM 的起始行int nSrcCol0;/在源 DOM 的起始列int nDstow0;/在目标 DOM 的起始行int nDstCol0;/在目标 DOM 的起始列int nowNum;/重叠的行数int nColNum;/重叠的列数;(2)重叠集计算设某图幅的二维包容盒为 Eb,某源 DOM 的二维包容盒为 Es,计算二者的交集 Eo。如果 Eo为空,则该源DOM 不含构成该图幅的像素;否则,需要计算重叠集。单个像素跨越图幅边界是裁剪中的常见问题。如果图幅不外扩,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 GDAL 开源库 海量 DOM 裁剪 佘佐明
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。