河流湖泊矢量边界数据集:从Shapefile到坐标系、清洗与GIS分析全攻略
简介一套覆盖全国主要河流、湖泊空间分布的矢量边界数据按一级至五级流域分级组织适合地理信息系统制图、水资源管理、环境监测与城乡规划等专业场景。压缩包内共五十五个文件以shp矢量格式为核心配套shx几何索引、dbf属性表、prj投影定义等辅助文件还包含国界线辅助图层整体压缩包大小约9.86MB可在ArcGIS、QGIS等主流软件中直接加载调用。数据具体包含一级、二三级、四级、五级河流以及主要湖泊的边界矢量不同等级对应不同的研究尺度一级流域如长江、黄河等可供宏观水系格局分析更低等级河流适合局部汇水区提取与生态评价。借助点、线、多边形等矢量特征用户能精确编辑和缩放而不损失精度还可结合属性表进行河网密度统计、流域面积测算或叠加土地利用、遥感影像开展洪水风险与水资源调度研究。截至目前已有两百六十七人学习下载适合需要系统国域水系底图的研究者、GIS工程师及高校师生作为基础数据与教学素材。1. 拿到一份“我国主要河流、湖泊矢量边界数据集”先要知道它在解决什么做 GIS、水利或环境项目的人几乎都遇到过这种尴尬想画一张流域范围图手头只有一堆从 OSM 扒来的线状河流或者漫无边际的栅格水系图想裁剪、想统计、想叠加全都无从下手。而一份现成的“我国主要河流、湖泊矢量边界数据集”解决的就是这件事——它把主要河流的带状水面、湖泊的闭合范围整理成了可以直接拿来用的面要素Polygon而不是零碎的线。你不再需要自己描边界、不需要到处找数据拼凑打开属性表就能看到水系名称、类型直接进入出图和分析环节。这篇文章面向的读者就是手里有具体项目、却在水系数据上反复折腾的从业者我会把这份数据的结构、坐标系、使用流程、常见坑和进阶检查方法一次讲透。2. 认识这份数据shp 面层、属性表与坐标系的三个关键点2.1 数据内容从“线”到“面”河流湖泊边界到底长什么样很多初学者拿到数据后第一反应是打开看“图”但专业的流程是先看“文件”。一份标准的矢量边界数据集通常以 Shapefile 格式分发解压后会看到至少三四个同名不同后缀的文件。你要记得.shp是几何信息.dbf是属性表.shx是几何索引.prj是坐标系定义。缺了.prj的文件不是不能用但会用起来心里发虚因为你不知道它的空间参照到底是谁。这份数据集里的核心图层是面状要素。河流不是一条线而是被两条岸线围出来的水面区域湖泊则是完整的闭合多边形。所以你在 GIS 软件里打开后能看到黄河的某一段河道是一个细长的多边形洞庭湖是一个不规则的大面。能直接做面积统计、做冲积平原裁剪、做淹没分析这就是“边界”两个字的意义。属性表里一般会包含名称字段、类型字段河流还是湖泊、以及可能的水系编码字段。拿到手第一件事不是导图而是打开属性表看字段名和条目数确认数据覆盖范围是否包含你要研究的流域。2.2 坐标系是数据的“地基”CGCS2000 与 WGS84 的取舍坐标系是我在这类数据上最常唠叨的问题。国内发布的水系数据集尤其来自权威测绘成果的绝大多数使用 CGCS2000 国家大地坐标系。这是 2000 年建立的中国地心坐标系统与 WGS84 的参考椭球体非常接近绝大多数情况下偏移量可以在米级以内。但有个细节容易被忽略有些数据集用的是带号的高斯-克吕格投影如 CGCS2000 / 3-degree Gauss-Kruger zone这意味着数据在平面上的呈现是有变形的面积测量结果也更接近真实地面距离。我的建议是先用文本编辑器打开.prj文件看它写的是什么。如果里面写着GCS_China_Geodetic_Coordinate_System_2000它就是个地理坐标系单位是度不适合直接量面积如果写着CGCS2000 / 3-degree Gauss-Kruger CM 117E之类就是投影坐标系单位是米可以直接量算。很多项目翻车就是把投影数据当成经纬度数据或者反过来在动态投影状态下随意量距离结果差出去几公里。养成拿到数据先读.prj的习惯能省掉后续一整轮排查。2.3 属性结构与清洗识别名称字段、类型字段与复杂度打开属性表后第一件事是认清字段。常见结构里至少会有三个关键字段一是名称字段可能叫NAME、GBNAME、NL_NAME存的可能是中文也可能是拼音二是类型字段区分河流与湖泊有的数据集直接用TYPE、KIND三是状态字段标注是常年河还是季节河。这三个字段决定了你做筛选时能不能一键过滤。属性清洗要做的第一项工作是查重名。长江这样跨越多个省的河流在分幅存储的数据集里可能被切成好几段每段的名称都叫“长江”但它们在几何上并不相连。如果你直接用名称字段做统计会得出一个离谱的总面积。正确做法是先把名称字段做分组聚合看看每个名称对应几个要素再决定要不要用Dissolve融合。另外如果名称字段读出来是乱码多半是.dbf的编码问题常见的有 GBK 和 UTF-8 两种乱码时你要在 GIS 软件的导入选项里手动指定编码。3. 从下载到出图一套不依赖特定软件的数据使用流程3.1 下载与文件结构确认先看元数据再动手下载这类数据的时候你大概率会遇到压缩包、页面信息、以及可能存在的元数据文档。我的经验是先看元数据数据覆盖范围、比例尺、现势性即数据更新时间、坐标系说明、属性字段字典。这些信息决定了这份数据在不在你的项目精度范围内。曾经有朋友拿了一份大比例尺数据去做县级水普图结果边界粗糙得根本没法看那就是没看元数据的结果。拿到压缩包解压后在终端里先跑一下unzip -l或ls -la确认文件是否完整。一个健康的 Shapefile 至少要有.shp、.shx、.dbf三个文件如果只有其中一个那大概率是传输时丢了文件。这个时候不要急着找 GIS 软件先在文件管理器里看一眼.dbf文件大小——如果属性表文件只有几 KB可能要素数量少得可怜和页面描述不符要警惕数据质量问题。3.2 用命令行工具快速检查数据可行性在打开大型 GIS 软件之前我习惯先用轻量级工具做一次“体检”。命令行工具方式能快速拿到要素数量、几何类型、空间范围避免用图形界面才发现数据是坏的。下面是一段用于快速检查的 Bash 命令# 用 ogrinfo 查看图层基本信息path/to/.shp 换成你的实际路径 ogrinfo -so path/to/water.shp water # -so 表示只查看概要信息不遍历每个要素 # water 是图层名通常与.shp文件名一致 # 输出结果会包含要素数量、几何类型、空间范围Extent和字段列表这段命令的核心是-sosummary only参数它只输出图层的元信息不打印每一个要素的详细属性速度极快。执行的输出里你需要重点看三个部分第一是Feature Count这个数字是否在合理范围第二是Geometry确认是Polygon而不是LineString第三是Extent看四至范围是否在中国境内。如果 Extent 显示坐标跨度有几百甚至上千度那坐标系一定出了问题。更进一步如果你想确认某个具体湖泊或河流是否存在、属性是否齐全在命令行里可以做一次按属性过滤的查询# 按属性名筛选并输出匹配要素的几何概略 ogrinfo -where NAME 某湖泊名称 path/to/water.shp water # -where 参数支持类SQL语法 # 注意中文等号右侧的写法某些环境下需要对字符串加单引号 # 如果字段名不是 NAME换成属性表里的实际字段如 GBNAME # 结果会打印出匹配要素的几何类型、顶点数量和属性字段在命令行阶段就把“图层是否可读”“要素是否齐全”这两个问题解决了再去打开图形界面才有意义。这也是我建议每个 GIS 从业者都装一个 GDAL 环境的原因它不在图形界面里画图但它是所有空间操作的地基。3.3 在 GIS 软件里落库与底图叠加命令行检查通过之后就可以把数据加载进 ArcGIS 或 QGIS。加载时的关键一步是坐标系确认。如果你的工程默认是 WGS84而数据集是 CGCS2000请务必在加载后查看图层的坐标系而不是直接依赖软件的自动转换。自动转换在大多数情况下是精确的但在某些要素类或某些投影带边界可能产生微小的位置偏移影响后续叠加判断。落库之后我一般会做两件事第一放一张矢量的省级行政区边界作为参照第二叠一份影像底图或地形图肉眼判断水系边界和实际地形是否贴合。如果发现河流的边界跑到了山脊线上那大概率是数据的原始比例尺和你当前视图比例尺不匹配需要缩小显示范围或换更大比例尺的数据不要硬调。加载完成后建议顺手做一个字段索引。在大数据集里用名称字段做频繁查询时没有属性索引可能每次都全表扫描。在 QGIS 里可以这样操作# 通过 pyqgis 接口为字段创建属性索引 from qgis.core import QgsVectorLayer, QgsVectorDataProvider layer QgsVectorLayer(path/to/water.shp, water, ogr) provider layer.dataProvider() # 以 NAME 字段为例创建索引索引能显著加速后续按名称查询的速度 provider.createAttributeIndex(NAME_FIELD_INDEX) # 如果属性表字段顺序未知先打印字段名 for field in provider.fields(): print(field.name())这段代码的关键在createAttributeIndex传入的是字段的索引序号而不是字段名。所以先循环打印字段名确认NAME在属性表里的位置再传入对应序号。对于几万个要素的图层索引创建几乎瞬间完成但后续查询速度可以提升一个数量级。不要小看这一步当你在做流域对比分析时频繁的名称过滤会持续受益。4. 避坑河流湖泊边界数据最常见的五次翻车4.1 坑一边界线和行政界线纠缠不清现象拿到的河流边界在某一段突然沿着县界走直线而不是沿着河道的自然弯曲。原因不少中小比例尺数据在制作时为了简化把某些河段直接与行政区界线共用这样在制图时能少画一批线。解决在项目需要精细边界时这类共界河段容易被识别为“贴合行政边界”要结合影像底图人工核对。我一般会在 QGIS 里用“几何检查”插件筛出与行政边界重合超过 50% 的要素单独标记后决定是否剔除。这里不是数据错了而是比例尺取舍问题知道就好。4.2 坑二坐标系偏移导致整个要素类飞掉现象图层能加载但显示的位置跑到海里去了或者和底图差出几百公里。原因数据集内含.prj文件但坐标数值本身是高斯克吕格投影的带号坐标而软件却按地理坐标解读。解决不要盲信.prj手动检查几个特征点的坐标值。如果坐标数值是八位左右如 37xxxxxx, 30xxxxxx它是投影坐标如果是六位小数如 105.32, 30.71它是地理坐标。按正确坐标系重新定义后再叠加就能解决。这个坑我在初次接触国内数据时踩过印象极深。4.3 坑三属性表里的中文字段变成乱码现象打开属性表名称字段显示为“锟斤拷”或者一串下划线。原因.dbf文件的字符编码不是 UTF-8而是 GBK而 GIS 软件默认按 UTF-8 读取。解决在 QGIS 中加载数据时编码选项手动切换为GBK或GB18030再加载。QGIS 支持加载时临时指定编码不需要改文件。这里切记不要在 ArcGIS 里反复尝试转换工具不对路会二次编码越转越乱。建议的做法是直接用 Python 将.dbf复制一份并转换编码然后替换原文件。4.4 坑四大流域与小支流的拓扑冲突现象用面层做叠加分析时提示存在自相交或重叠要素统计面积时出现重复计算。原因同一流域内大河的边界面和小支流的边界面可能有交叠这在原数据制图中可能存在而分析阶段叠加就会暴露。解决分析前先运行一次拓扑修复在 QGIS 里利用Fix Geometries工具处理自相交和重复节点如果还有重叠面需要对同一名称字段执行Dissolve把破碎面合并为单个要素后再操作。做水普面积统计时这一步不能省。4.5 坑五数据时效性带来的河道变迁困惑现象用历史数据做现在的河岸线分析发现某些河段与现状偏离数百米尤其在黄河下游和长江中游这种冲淤变化剧烈的区域。原因数据集发布年代和当前年份有间隔河道摆动是自然现象不是数据坏了。解决使用前先确认元数据里的时间戳。如果你的项目要求反映现状需要结合最新影像进行河段局部更新或者寻找更新的版本。不是所有历史数据都不能用而是你要让“陈旧”这个属性在项目文档中透明化。5. 从边界到工作流数据质量检查方法与成果转换5.1 几何质量检查不只看“能不能打开”很多从业者对数据的认知停留在“能打开、能显示”就算行但真正的项目交付需要更严格的标准。几何检查至少包含四类指标几何有效性无自相交、无破碎面、拓扑一致性无重叠面、面积合理性湖泊面积与已知数据匹配、以及边界复杂度顶点数是否异常多。这些检查在 QGIS 里可以通过工具组合完成也可以用 Python 做一次性批量检查。# 用 shapely 检查数据的几何有效性 from shapely.geometry import shape import shapefile # pyshp 库 sf shapefile.Reader(path/to/water.shp) invalid_count 0 for i, rec in enumerate(sf.shapes()): geom shape(rec) if not geom.is_valid: invalid_count 1 print(fInvalid geometry at record {i}: {geom.is_valid}) print(fTotal invalid features: {invalid_count})这套脚本用pyshp读取 shp再用shapely判断每个面是否有效。is_valid返回 False 表示存在自相交或环方向错误。如果无效要素数量较多建议直接在 GIS 软件里跑批量修复而不是在脚本里逐项修。顺带提一下shapely的is_valid检查只做几何层面不做拓扑重叠检查所以重叠问题还要另做处理。5.2 流域裁剪按行政区或指定范围切分数据拿到全国范围的面层后你往往只需要某一个省或某个流域的数据。这时候不建议用“属性筛选 导出”的方式因为大江大河会流过多个省筛选就会切碎。正确做法是拿一个行政区划面做裁剪Clip保留与行政边界相交的河湖部分并在结果属性里保留原名称字段。裁剪后要做一步清理边缘处可能出现狭长的碎屑面Silver Polygon这些面面积很小、形状不完整在统计时容易引入噪声。用面积阈值把它们筛掉阈值看比例尺定一般可以用 0.01 平方千米。5.3 成果转换输出 GeoJSON、KML给非 GIS 同事用项目协作中不是所有人都装 ArcGIS 或 QGIS。把数据输出成通用格式是个好习惯。GeoJSON 适合 Web 前端加载KML 适合 Google Earth 查看CSV 里的经纬度字段则适合丢进表格处理。但转换时有个雷区要注意GeoJSON 标准规定使用 WGS84 地理坐标系EPSG:4326如果你把投影坐标系的 shp 直接转出去坐标值会变成带号的值前端画出来会偏移。# 将投影坐标系的 shp 转为经纬度 GeoJSON目标坐标系 EPSG:4326 ogr2ogr -f GeoJSON -t_srs EPSG:4326 output.geojson path/to/water.shp # -t_srs 指定输出坐标系源数据坐标系从 .prj 自动读取 # 输出 GeoJSON 后用 jq 或 python 检查坐标范围是否为正常经纬度值 # 中国范围经度约 73 到 135纬度约 18 到 53这段命令最关键的一步就是-t_srs EPSG:4326它保证了输出坐标是纯经纬度。转换后一定要检查坐标范围我见过太多人转换完不检查拿着偏移数据就往前端交最后被测试提 bug。检查方式很简单用一个在线 GeoJSON 查看器或直接打印首尾坐标目测范围是否合理即可。6. 一个值钱的习惯把边界数据做成建库前的“自查清单”这个习惯是我做了多个水系相关项目后总结出来的每次拿到新的河流湖泊边界数据不要急着画图先按一套固定流程把数据过一遍形成一张可复用的清单。清单内容有四条第一检查.prj文件是否包含坐标系说明第二用ogrinfo确认要素数量在合理范围第三检查名称字段是否无乱码、无空值第四用视图叠加影像底图沿着几条主要河流玻璃一下边界是否贴合地势。整套流程走下来大约只需要十五分钟但能免掉后面几小时的返工。我曾经在一次项目里图省事跳过检查直接用来做面积统计结果河段重叠导致面积虚增最后被客户质疑数据可靠性。那次教训让我把流程固定了下来以后再没犯过同样的错。现在每次新项目接到数据第一件事就是跑这套清单。做 GIS 数据工作真正的效率不是“快”而是“稳定”。希望这份流程对你也有用。本文还有配套的精品资源点击获取

相关新闻

C#医学图像处理+Oracle毕设实战:DICOM解析与临床级数据库设计

C#医学图像处理+Oracle毕设实战:DICOM解析与临床级数据库设计

简介:本资源是一套完整的本科毕业设计项目源码,面向计算机、生物医学工程等专业高年级本科生及图像处理初学者,聚焦医学影像的数字化预处理与后台数据管理实践。系统基于C# WinForms开发,集成图像灰度化、直方图均衡化、边缘检测等…

2026/10/11 11:28:04 阅读更多 →
向量数据库选型指南:pgvector与专业方案的核心差异

向量数据库选型指南:pgvector与专业方案的核心差异

1. 选型之前先想清楚:你到底在解决什么问题向量数据库这两年热度一直居高不下,很多团队一上来就问“选 Milvus 还是选 pgvector”,但真正做过几个线上项目之后你会发现,这个问题本身就问错了。选型的起点从来不是“哪个数据库更火…

2026/10/11 11:28:04 阅读更多 →
Axure高保真数据可视化大屏模板:从组件库到前端落地实战指南

Axure高保真数据可视化大屏模板:从组件库到前端落地实战指南

简介:一套面向产品经理、交互设计师及前端开发者的Axure高保真数据可视化大屏模板与通用组件库(V2版),适用于Axure RP9/10环境,帮助高效完成Web端大屏原型从框架搭建到视觉细节的落地。压缩包共292个文件,大…

2026/10/11 11:27:03 阅读更多 →

最新新闻

.NET Core Cookie身份验证完全指南:原理、配置与实战

.NET Core Cookie身份验证完全指南:原理、配置与实战

下面是一篇围绕“.Net Core — Cookie 身份验证”展开的实操型博文,以真实从业者的口吻写,不跑题、不说教、直接给方案。 做了几年 .Net 后端,Cookie 身份验证一直是被反复问到、也反复踩坑的一块。很多人一上来就选 JWT,觉得无状…

2026/10/11 14:17:24 阅读更多 →
iOS视频与图片混合轮播组件实现:基于UICollectionView与AVPlayer的架构拆解

iOS视频与图片混合轮播组件实现:基于UICollectionView与AVPlayer的架构拆解

简介:面向iOS开发者的视频与图片混合轮播实现资源,基于Objective-C编程语言和Xcode工具链,适配社交媒体、电商、媒体播放等常见App场景。资源重点梳理两条技术路线:第一条基于UICollectionView自定义图片与视频两种Cell&#xff0…

2026/10/11 14:17:24 阅读更多 →
Oracle HRMS经典架构解析:能力驱动与灵活组织的底层实现

Oracle HRMS经典架构解析:能力驱动与灵活组织的底层实现

简介:本资源是一份聚焦Oracle人力资源管理数字化转型的PPT课件,面向HR信息化建设负责人、ERP实施顾问及企业IT管理者,系统阐述如何借助Oracle方案将HR职能从行政事务型升级为战略驱动型。课件共1个PPT文件(19.64MB)&am…

2026/10/11 14:17:24 阅读更多 →
Oracle EBS GL总账模块核心逻辑与实战排错指南

Oracle EBS GL总账模块核心逻辑与实战排错指南

简介:本资源是一份面向企业财务人员与Oracle EBS实施顾问的GL总账模块实操指南,聚焦日常账务处理核心流程,解决手工记账、审批控制、过账执行等关键操作问题。文档结构清晰,覆盖系统登录与职责选择、手工日志账(含账头…

2026/10/11 14:17:24 阅读更多 →
Java 项目接入 TaoToken 统一 Key:从 401 报错到本地代理失败的排查大纲

Java 项目接入 TaoToken 统一 Key:从 401 报错到本地代理失败的排查大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:17:24 阅读更多 →
从ZIP压缩包到家谱树:GEDCOM解析与可视化实践

从ZIP压缩包到家谱树:GEDCOM解析与可视化实践

简介:这是一份基于Java与JavaFX开发的家谱管理系统项目包,面向学习Java桌面应用开发的初学者、完成课程设计的在校学生,以及希望深入了解图形界面编程的相关开发者。系统以家族成员信息管理为核心,围绕亲属关系维护、家谱树展示与…

2026/10/11 14:16:23 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →