夜雨聆风学习资料网

ARTICLE · 1337555

【软件分享】几百个OSGB模型找不到? 一键导出范围SHP,点一个面就能定位

【软件分享】几百个OSGB模型找不到? 一键导出范围SHP,点一个面就能定位

干航测的,电脑里迟早会躺满模型文件夹。

项目一多,你根本说不清:这块地到底测没测过、测到哪儿、模型又存在哪个盘里。

一、这四个场景,航测人应该都不陌生

做过几年航测的人,硬盘里大概率都有这么一幅景象:

D盘一个「2023项目」,E盘一个「XX县交付」,移动硬盘里还压着一版「最终版-改」。点进去,是几百个 ContextCapture 的成果文件夹,名字有中文的、有拼音的、有日期的、有编号的,还夹着几个「新建文件夹(2)」。

模型一多,麻烦就跟着来了:

❶ 模型多而且乱——想找一个半年前测的村子,只能一层层点进去看,点错三四次才找对。

❷ 测过的范围说不清——领导问「这个片区测到哪儿了」,你只能打开模型转一圈,凭感觉比划。

❸ 汇总太繁琐——十几个成果要出范围,一个个在 GIS 里描边、另存,一下午就没了。

❹ 坐标系打架——4546 和 4547 混在一起,导出来叠不上底图,位置能差二十多万米。

前三条是效率问题,多花点时间还能忍。

第四条是会出错的问题。

我按这几条做了个小工具,叫 CX-OSGB-SHP。免安装,双击就能开,把一个文件夹(可含多层子目录)里所有 OSGB 模型的边界范围,一次性导成 Shapefile。

【配图 1:CX-OSGB-SHP 软件主界面】

它读的不是三角网,而是每个瓦片的包围盒。所以它不是精修工具,是接合表工具——用来"找、认、接",不是用来"抠边"。

二、先想清楚:为什么要导这张 SHP

很多人第一次听到「把模型导成 shp」,第一反应是:要 shp 干嘛?我又不画图。

这恰恰是想反了。这张 shp 不是用来画图的,它是用来管理模型的。

1. 接合表是成果的一部分,不是"顺便做的一张图"

倾斜摄影和实景三维的成果提交清单里,「成果接合表」基本是标配。三维网格模型成果通常要求包含成果接合表、模型数据、坐标信息文件、元数据文件这几样。

一份合格的接合表,其实只要说清三件事:

说清有什么
一共几个模型、分别叫什么、存在哪个目录
说清在哪里
每个模型覆盖的空间范围,边界是否连续、有没有空洞
说清怎么接
相邻测区、相邻图块的重叠与接边关系

这三件事,本质都是空间位置关系。而空间位置关系,最自然的表达载体就是矢量面——也就是 shp。

手工做当然也能做。问题是:一个项目十几个模型,还勉强;一个县、一个市几十上百个模型,就是纯体力活,而且每次更新都得重来一遍。

2. 模型数量已经不是一个量级了

2022年2月,自然资源部办公厅印发《关于全面推进实景三维中国建设的通知》,定了「2025年初步建成、2030年全面建成」的目标。

到2025年8月,自然资源部公布的数据是:310个地级以上城市开展实景三维城市建设,累计生产约 11万平方千米城市三维模型。

落到具体作业单位,就是另一个画面:一个县城级测区的倾斜摄影成果,动辄上百 GB、几十万个 .osgb 碎文件;1平方公里的原始模型数据就要 2–5 GB。

文件碎、数量大、目录深——靠人眼在一个个文件夹里翻,本来就不可能翻明白。

3. 坐标系混用,是最容易翻车的地方

这一点值得单独拎出来讲,因为它是静默出错——文件能打开、面能显示,就是位置不对。

EPSG:4546

CGCS2000 / 3度带中央经线 111°E覆盖 109°30′–112°30′

EPSG:4547

CGCS2000 / 3度带中央经线 114°E覆盖 112°30′–115°30′

同一个物理点,在这两套坐标里,东坐标相差约 3° 经度——换算下来是 27 万米左右。

而一个 Shapefile 只能带一个 .prj 文件。

所以,只要把两种坐标系的模型塞进同一个 shp,就必然有一组整体偏移 270 公里。它不会报错,不会提示,就是静静地错在那儿。等你把图叠上底图、发现对不上的时候,往往已经过了好几天。

📌 一句话结论:范围导出的难点从来不是"画个框",而是批量、准确、坐标不出错。这三件事,恰好都能自动化。

三、五步,从一堆文件夹到一张 SHP

软件是免安装绿色版,双击 CX-OSGB-SHP.exe 就能打开界面,电脑上不用装 Python,也不用装 OSG。

建议先把压缩包完整解压到硬盘,比如 D:\工具\CX-OSGB-SHP,不要在压缩包预览窗口里直接双击运行。

步骤1
扫描根目录
:选存放 OSGB 模型的文件夹,可以包含多层子目录。选到"测量成果"这一层就行,不用一个个点进项目里。
步骤2
输出 SHP
:选导出的 Shapefile 保存位置。留空的话,默认输出到扫描根目录的上一级。
步骤3
导出方式
:默认「统一投影到 EPSG:4546」,所有模型真正转换坐标后输出成一张总图;各模型坐标系不同、又想分开留档,就改选「按坐标系拆分」。
步骤4
并行进程
:一般保持默认 4 即可。模型在共享盘上可以调到 8–16,机械硬盘建议 2–4,避免磁盘抢道反而更慢。
步骤5
开始扫描并导出
:下方日志实时刷进度,完成后点「打开输出目录」。

整个过程就一个按钮的事。第一次跑可能慢一点,因为要建索引;同一个目录 6 小时内再扫,会直接读缓存,基本是秒出。

【配图 2:扫描过程中的运行日志 / 已完成状态】

两种导出方式,到底选哪个?

统一投影到 4546

所有模型真正转换坐标,输出一张总图,能直接叠影像、叠底图、叠矢量。适合:领导汇报、成果展示、做一张图总览。

按坐标系拆分

每个坐标系一个 shp,各带自己的 .prj,坐标数值保持原样不变形。适合:成果归档、交付甲方、保留原始测量坐标。

我的建议是:两个都导一次,放不同目录。

统一投影那份用来"看",按坐标系拆分那份用来"存"。反正第二次跑有缓存,几乎不花时间。

四、导出来的东西,长什么样

一张 shp 里,一个面就是一个模型。

真正让它变得好用的,是属性表。字段大致是这些:

字段
含义
NAME
模型名(文件夹名)
FOLDER
模型所在的完整文件夹路径
——最值钱的一个字段
SRS
模型源坐标系,来自 metadata.xml
OUT_SRS
本张 shp 的输出坐标系,方便追溯
AREA
范围面积,投影坐标系下是平方米
TILES / FILES
模型包含的瓦片数 / 实际参与计算的文件数

在 ArcGIS 或 QGIS 里,用「识别」或「选择要素」点中任意一个面,属性表里就能看到它的 FOLDER。

把那个路径复制下来,粘到资源管理器地址栏——模型直接就在你眼前。

💡 从"翻三层文件夹找一个模型",变成"点一个面、复制路径、打开"。这一步,是它真正省时间的地方。

除了 shp 本体(.shp/.shx/.dbf/.cpg),旁边还会同步生成几样东西:

✅ .prj——坐标系定义,保证位置对

✅ .cpg——声明属性表编码,防止中文路径乱码

✅ .json 清单——结构化记录每个模型的路径、坐标系、原点、面积

✅ manifest 汇总——每种坐标系有多少模型、分别输出到哪个文件

⚠️ 未导出模型清单——没导出的逐个列原因,比如缺 metadata、ENU 局部坐标、坐标转换失败

五、为什么它能快到这个程度

读 OSGB 包围盒这件事本身不难,难的是不要被海量瓦片拖死。

一个标准的 ContextCapture 模型,每个瓦片目录里通常有上千个 LOD 文件。如果老老实实全部数一遍,光"列目录"就能把人等睡着。

这个工具的思路是反过来:只读最粗的那一层。

剪枝识别:16 线程并行扫目录,一识别到模型根目录就停下,不再往里钻。

只 stat 根文件:每个瓦片只看根文件在哪,不列举那上千个 LOD;根文件不存在时才回退。

并行读包围盒:最多 16 个读取进程同时跑,每读完一个就刷一次进度。

列表缓存 6 小时:同一目录反复导,第二次基本是秒出。

实测数据(作者环境):

场景
首次(建索引)
再次(用缓存)
41 个模型 / 25 万个 osgb
约 2.5 秒
约 1.7 秒
49 个模型 / 整市目录
约 5.6 秒
约 2.8 秒
共享盘 1500 个模型
约 10 分钟
数秒

共享盘那 10 分钟,基本都花在 SMB 的网络延迟上:单次操作 100 毫秒起步,本地 SSD 不到 1 毫秒。1500 个模型要读的 metadata、stat 的文件、读的包围盒,加起来就是这么大一个盘子。

这种场景下不必追求"秒出"。去接一杯水,回来图已经画完了。

"你缺的不是一块硬盘,是一张能看懂自己硬盘的图。"

六、几个坑,提前替你们踩了

⚠️ 注意事项

1. 杀毒软件报警:打包成 exe 的程序经常被误报。点「更多信息 → 仍要运行」,或把整个文件夹加白名单。程序不联网、不自启动、不写注册表。

2. exe 和 _internal 不能拆开:只把 CX-OSGB-SHP.exe 单独拷走,一定会报缺少运行文件。整个文件夹一起搬。

3. 边界会比模型略大:它算的是瓦片包围盒的并集,不是三角网的真实边缘。倾斜摄影瓦片本来就按矩形切,所以范围会沿瓦片边线走,看起来"方"一点。

4. 旧文件不会自动删:重新导出到同一个输出名时,上一版如果改了模式、文件名不同,旧的可能还留着。建议每次先清空输出目录,免得打开错文件、看到旧位置。

5. 有些模型导不出来是正常的:缺 metadata.xml、没有 SRS、ENU 局部坐标、加密格式(.dosgb/.mfb),这些本来就没法可靠定位。它们会被单独列进「未导出模型清单」,一个个写明原因,不会悄悄漏掉。

6. 中文乱码看 .cpg:shp 的 dbf 本身不带编码信息。工具固定写 UTF-8 并附 .cpg,QGIS、ArcGIS Pro、GDAL 都能认。只有很老的 ArcGIS 可能不认,换 Pro 打开即可。

七、最后说两句

做测绘这行,很多时候不是技术难,是琐碎的事太多。

一个项目干完,真正累人的往往不是建模那几天,而是后面找文件、对坐标、做清单、等人验收的那几个月。

这类小工具解决不了大问题,但能把"每次都要重来一遍"的事情,变成"点一下就完事"。

如果你电脑里也躺着几百个模型,不妨先拿一个项目目录试跑一下。跑完打开那张 shp 看看——你会第一次直观地看见,自己这些年到底测了多大一片地方。

通过网盘分享的文件:CX-OSGB-SHP_免安装版.zip

链接: https://pan.baidu.com/s/1D8O_rbR4w2i_AMqlzGe9DA?pwd=cetw 提取码: cetw 

工具名称:CX-OSGB-SHP(免安装绿色版)

应用场景:倾斜摄影 / 实景三维 OSGB 模型范围汇总、成果接合表制作

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料