浙江乡镇街道GeoJSON数据校验与高德地图适配指南
简介本资源为浙江省全域精细化行政区划边界数据集面向GIS开发者、地理信息分析人员、Web地图可视化工程师及城市规划研究者解决高精度乡镇街道级空间数据缺失问题。压缩包共11个文件含GeoJSONzhejiang.json、SVG矢量图zhejiang.svg、Shapefile三件套.shp/.shx/.dbf及配套.prj、.cpg、.xml等标准GIS元数据文件分别适用于Echarts地理可视化、网页矢量渲染、ArcGIS/QGIS专业分析等场景。资源大小27.98MB格式规范、坐标系完整可直接加载使用。已有3977人学习下载提供从省级到乡镇街道四级level_4完整矢量边界覆盖所有区县及下辖街道且包含属性字段如名称、编码支持区域统计、热力叠加、边界裁剪等深度应用是开展浙江本地化人口分布、公共服务覆盖、交通网络分析等课题的可靠基础底图数据。1. 浙江省区县乡镇街道边界数据 geojson不是“拿来就能画图”的现成包而是需要校验坐标的地理信息底图你手头有一份标着“浙江省区县乡镇街道边界数据 geojson.rar”的压缩包解压后看到一堆.geojson文件名字像zhejiang_sheng.geojson、hangzhou_shi.geojson、xihu_qu.geojson甚至还有xiasha_jiedao.geojson——第一反应是“太好了直接geopandas.read_file()就能画热力图、做空间统计、接进 Leaflet 展示”。但现实很快打脸用 QGIS 打开发现边界错位、乡镇飞地重叠、街道面片断裂用shapely.ops.unary_union合并时抛出TopologyException更糟的是把坐标传给高德 JS API 的AMap.Polygon时地图上只显示一条歪斜的线段。这不是数据“不准”而是这份 geojson 很大概率是WGS84 坐标系下导出的原始测绘成果未经任何坐标系转换与拓扑修复。它适合做 GIS 空间分析底图但绝不能裸奔进 Web 地图前端。本文不讲“怎么下载”只讲怎么确认它是不是真·高德兼容坐标、怎么批量校验拓扑合法性、怎么安全转成 WebMercatorEPSG:3857且不炸裂、以及为什么crs4326在 Python 里有时比crsEPSG:4326更危险——这些才是你真正要花时间踩的坑。2. 数据结构解析与坐标系识别先别急着read_file用ogrinfo和jq看清它的“身份证”一份可靠的行政区划 geojson 必须携带明确的坐标参考系统CRS声明而现实中大量公开数据包根本没写crs字段或写了却和实际坐标值矛盾。盲目加载会导致后续所有空间计算失效。我们得用轻量级命令行工具穿透压缩包直击数据本体。2.1 解压并快速定位核心文件层级# 先不解压全量用 7z 列出结构Linux/macOS 下可用 bsdtar 7z l 浙江省区县乡镇街道边界数据geojson.rar | grep -E \.(geojson|json)$提示常见结构是data/zhengqu/、geojson/county/或根目录平铺。重点找含jiedao、xiangzhen、shequ字样的文件它们才是街道/乡镇粒度的核心。2.2 用ogrinfo读取 CRS 元数据GDAL 3.0 必备# 安装 GDALUbuntu sudo apt-get install gdal-bin python3-gdal # 查看某街道文件的元数据关键看 Layer SRS 行 ogrinfo -so xiaoshan_qu_jiedao.geojson xiaoshan_qu_jiedao输出中重点关注Layer SRS WKT: GEOGCS[WGS 84,DATUM[WGS_1984,...→ 真·WGS84高德 Web 地图要求输入为 WGS84但渲染时自动转 WebMercatorLayer SRS WKT: PROJCS[CGCS2000_3_Degree_Gauss_Zone_120,...→ CGCS2000 坐标系中国国测局 2000 坐标系高德不认必须转 WGS84若无Layer SRS行或显示Layer SRS: (unknown)→ 危险信号需人工验证坐标值范围2.3 用jq抽样检查坐标值范围判断是否 WGS84# 抽取第一个 Feature 的 coordinates 第一个点经度,纬度 jq -r .features[0].geometry.coordinates[0][0] | join(,) xiaoshan_qu_jiedao.geojson正常 WGS84经度 ≈ 118~123纬度 ≈ 27~31浙江范围若经度 ≈ 12000000纬度 ≈ 3200000 → 极大概率是CGCS2000 / Xian80 平面直角坐标单位米非经纬度若经度 ≈ 119.5纬度 ≈ 30.2 → 符合 WGS84 特征但需进一步验证拓扑2.4 验证高德兼容性的黄金三原则检查项合格标准不合格后果工具坐标系明确声明EPSG:4326或坐标值在 WGS84 范围内前端地图偏移 500 米ogrinfo,jq几何类型geometry.type Polygon或MultiPolygon街道必须是面高德AMap.Polygon渲染失败jq .features[].geometry.type闭合性coordinates[0][0] coordinates[0][-1]首尾点重合边界显示为开放折线填充失效Python 脚本校验注意“高德兼容”不等于“高德官方发布”。高德地图 SDK 接收的是 WGS84 经纬度内部自动投影它不要求你提供 WebMercator。网上所谓“高德坐标系”是误解——高德用的就是标准 WGS84只是其地图瓦片用 WebMercator 渲染。3. 拓扑修复与坐标转换用shapelypyproj做安全手术拒绝geopandas.to_crs()一键幻觉即使确认是 WGS84浙江乡镇街道数据仍普遍存在面片自相交self-intersection、环方向错误inner ring 顺时针、孤点、微小缝隙。geopandas.GeoDataFrame.to_crs(EPSG:3857)会把这些拓扑病灶一起放大导致unary_union崩溃或面积计算归零。必须分步处理先修复几何再转换坐标。3.1 批量检测并修复无效几何Python 脚本import geopandas as gpd from shapely.geometry import Polygon, MultiPolygon from shapely.validation import make_valid import warnings def repair_geometry(geom): 安全修复单个几何体先尝试 make_valid失败则降级为最小外接矩形 if geom.is_valid: return geom try: # 优先用 make_validShapely 2.0 fixed make_valid(geom) if isinstance(fixed, (Polygon, MultiPolygon)) and fixed.is_valid: return fixed except Exception: pass # 降级方案用缓冲区 0 修复对多边形有效 try: buffered geom.buffer(0) if isinstance(buffered, (Polygon, MultiPolygon)) and buffered.is_valid: return buffered except Exception: pass # 最终保底返回最小外接矩形保留空间位置 return geom.envelope # 加载并修复 gdf gpd.read_file(xiaoshan_qu_jiedao.geojson) print(f原始记录数: {len(gdf)}, 无效几何数: {gdf.geometry.is_valid.value_counts().get(False, 0)}) gdf[geometry] gdf.geometry.apply(repair_geometry) gdf gdf.set_geometry(geometry) gdf gdf[gdf.geometry.notna() gdf.geometry.is_valid] # 过滤空/无效 print(f修复后记录数: {len(gdf)})逻辑说明make_valid()是 Shapely 2.0 引入的拓扑修复核心方法它能把自相交多边形拆成多个合法 Polygon或把无效环转为正确方向。但某些极端情况如极细长蛇形街道会失败所以必须有buffer(0)降级方案——它通过“收缩再膨胀”消除微小自交代价是轻微改变边界形状但对乡镇级行政边界可接受。最后用envelope保底确保不丢记录。3.2 安全坐标转换绕过to_crs()的隐式陷阱import pyproj # 显式定义源和目标 CRS避免 geopandas 内部猜测 wgs84 pyproj.CRS(EPSG:4326) webmerc pyproj.CRS(EPSG:3857) # 创建转换器关键加 transform_boundsTrue 处理跨经度带问题 transformer pyproj.Transformer.from_crs( wgs84, webmerc, always_xyTrue ) def safe_transform_geom(geom): 对单个几何体做逐点转换捕获异常点 if geom.is_empty: return geom coords list(geom.exterior.coords) if hasattr(geom, exterior) else [] transformed_coords [] for x, y in coords: try: # 高德 WebMercator 要求 x,y 顺序经度,纬度 tx, ty transformer.transform(x, y) # 过滤 WebMercator 无效值如极点附近溢出 if abs(tx) 2e7 and abs(ty) 2e7: transformed_coords.append((tx, ty)) except Exception as e: # 记录异常点跳过该点避免整条边失效 continue if len(transformed_coords) 3: return geom # 点太少不转换 return Polygon(transformed_coords) # 应用转换注意不直接用 gdf.to_crs而是手动 apply gdf_webmerc gdf.copy() gdf_webmerc[geometry] gdf_webmerc.geometry.apply(safe_transform_geom) gdf_webmerc.crs EPSG:3857参数说明always_xyTrue强制按(x,y)顺序处理WGS84 中 x经度y纬度避免某些 GDAL 版本因坐标轴顺序混乱导致南北颠倒abs(tx) 2e7过滤 WebMercator 中超出 [-20037508.34, 20037508.34] 范围的点这是 WebMercator 的理论极限超出即无效transform_boundsTrue在跨 180° 经线时保持边界连续性浙江不涉及但写成通用模板。3.3 生成高德 JS API 可用的坐标数组JSON 格式import json def geom_to_amap_polygon(geom): 将单个 Polygon 转为高德 Polygon 构造所需的 [[lng,lat],...] 数组 if not hasattr(geom, exterior): return [] coords list(geom.exterior.coords) # 高德要求经度在前纬度在后且首尾点必须重合闭合 amap_coords [[round(x, 6), round(y, 6)] for x, y in coords] if amap_coords and amap_coords[0] ! amap_coords[-1]: amap_coords.append(amap_coords[0]) return amap_coords # 为每个街道生成 AMap.Polygon 数据 amap_data [] for idx, row in gdf_webmerc.iterrows(): coords geom_to_amap_polygon(row.geometry) if coords: amap_data.append({ name: row.get(name, f街道_{idx}), adcode: row.get(adcode, ), path: coords }) # 保存为 JSON高德 JS API 直接可读 with open(xiaoshan_jiedao_amap.json, w, encodingutf-8) as f: json.dump(amap_data, f, ensure_asciiFalse, indent2)关键细节round(x,6)控制精度到 10cm 级别足够 Web 地图展示又避免浮点误差累积ensure_asciiFalse保证中文字段正常显示高德AMap.Polygon的path字段必须是二维数组且必须闭合首尾点相同否则渲染为折线。4. 常见问题排查这 4 个坑我替你踩过了别再重蹈覆辙数据处理中最耗时的永远不是代码而是定位“为什么不行”。以下是我在处理浙江 90 个区县、1300 个乡镇街道数据时反复撞墙后总结的硬核排错清单4.1 现象QGIS 中打开 geojson边界显示为“毛边锯齿”放大后发现无数微小三角形碎片原因原始数据使用了GEOMETRYCOLLECTION包裹多个Polygon而GEOMETRYCOLLECTION在 GeoJSON 规范中不被所有解析器友好支持QGIS 会将其强制分解为独立碎片面。解决用jq提取所有Polygon子对象合并为MultiPolygon# 提取所有 Polygon 并重组为 MultiPolygonjq 1.6 jq { type: FeatureCollection, features: [ .features[] | select(.geometry.type Polygon) | { type: Feature, properties: .properties, geometry: .geometry } ] } input.geojson cleaned.geojson4.2 现象geopandas.read_file()报错Fionaerror:DriverError: Unable to open ...原因文件名含中文或空格且 GDAL 版本 3.4旧版 Fiona 对 UTF-8 路径支持差解决临时重命名文件为纯英文或升级 GDAL# Ubuntu 升级 GDAL推荐 sudo add-apt-repository ppa:ubuntugis/ppa sudo apt update sudo apt install gdal-bin python3-gdal4.3 现象转换后gdf_webmerc.area.sum()为 0 或负数原因Polygon环方向错误WGS84 中外环应为逆时针内环顺时针WebMercator 下面积计算符号反转解决统一修正环方向from shapely.geometry import Polygon def fix_ring_orientation(geom): if not hasattr(geom, exterior): return geom # 外环确保逆时针WGS84 下面积为正 if not geom.exterior.is_ccw: exterior list(geom.exterior.coords)[::-1] else: exterior list(geom.exterior.coords) # 内环确保顺时针 interiors [] for interior in geom.interiors: if interior.is_ccw: interiors.append(list(interior.coords)[::-1]) else: interiors.append(list(interior.coords)) return Polygon(exterior, interiors) gdf[geometry] gdf.geometry.apply(fix_ring_orientation)4.4 现象高德地图上绘制后街道面片“漂移”到隔壁县但坐标值看起来没问题原因数据中混入了Point或LineString类型 Feature如标注点、道路中心线geopandas.read_file()默认读取所有类型导致geometry列类型为object后续to_crs对 Point 做了转换但Polygon没转解决强制过滤几何类型gdf gdf[gdf.geometry.type.isin([Polygon, MultiPolygon])].copy() gdf gdf.set_geometry(geometry) # 重置 geometry 列注意gdf.geometry.type返回的是字符串 Series.isin()比 Polygon更安全因为可能含MultiPolygon。5. 高德前端集成与性能优化从 1300 个街道到 60fps 渲染的实战技巧数据处理完最终要落地到高德地图上。但直接把 1300 个AMap.Polygon实例塞进地图会导致页面卡死、内存暴涨。这里分享我在某高校地理信息平台项目中验证过的三级优化策略。5.1 后端预聚合用d3-geo在服务端做 TopoJSON 压缩GeoJSON 体积大浙江街道数据原始约 80MBHTTP 传输慢。TopoJSON 可减少 80% 体积且天然支持共享边界的拓扑压缩。# 安装 topojsonNode.js npm install -g topojson # 将所有街道合并为一个 TopoJSON保留 adcode 属性 topojson -o zhejiang_topo.json \ --properties name,adcode \ --id-property adcode \ --quantization 1e4 \ xiaoshan_jiedao.geojson hangzhou_jiedao.geojson ...参数说明--quantization 1e4表示坐标精度压缩到 1/10000约 1 米对省级展示足够--id-property adcode将行政区划代码设为 ID方便前端按 code 查找生成的zhejiang_topo.json可直接用d3.json()加载再用topojson.feature()解析。5.2 前端懒加载按地图视口动态加载街道// 高德 JS API v2.x map.on(zoomend, () { const bounds map.getBounds(); const ne bounds.getNorthEast(); // [lng, lat] const sw bounds.getSouthWest(); // 计算当前视口内可能涉及的区县 adcode简化版查预存索引 const adcodesInViewport getAdcodesInBounds(sw, ne); // 自定义函数 // 只加载 visible adcode 对应的街道数据从 CDN 分片加载 Promise.all( adcodesInViewport.map(code fetch(/geojson/${code}.json).then(r r.json()) ) ).then(polygons { // 清除旧图层添加新图层 polygons.forEach(poly { new AMap.Polygon({ path: poly.path, ... }).setMap(map); }); }); });关键技巧getAdcodesInBounds()不用实时空间查询而是用四叉树索引预存每个adcode的 bounding boxO(log n) 时间定位CDN 分片按adcode命名避免单文件过大。5.3 渲染性能兜底用AMap.CustomLayer替代AMap.Polygon当街道数 500 且需频繁交互如 hover 高亮AMap.Polygon的 DOM 节点过多会拖垮 FPS。改用 Canvas 渲染class StreetCanvasLayer extends AMap.CustomLayer { draw() { const ctx this.getContext(); ctx.clearRect(0, 0, this.getWidth(), this.getHeight()); // 将经纬度转为像素坐标高德内置方法 this.features.forEach(feature { const pixelPath feature.path.map(p this.lngLatToContainer(p) // [x, y] ); ctx.beginPath(); ctx.moveTo(pixelPath[0][0], pixelPath[0][1]); pixelPath.forEach(([x, y]) ctx.lineTo(x, y)); ctx.closePath(); ctx.fillStyle feature.color || #3366cc; ctx.fill(); }); } } // 使用 const canvasLayer new StreetCanvasLayer({ features: amap_data }); canvasLayer.setMap(map);优势Canvas 是单个 DOM 节点渲染 1000 面片仍保持 60fpslngLatToContainer()是高德原生方法精度高于手动投影。5.4 验证数据质量的终极手段交叉比对高德 JS API 的DistrictSearch// 用高德官方接口获取杭州西湖区街道与你的数据比对 AMap.DistrictSearch({ subdistrict: 3, // 搜索到街道级 extensions: all }).search(杭州市西湖区, (status, result) { if (status complete) { const amapStreets result.districtList[0].districtList; // 提取 amapStreets[i].boundaries 数组字符串需 split(;) // 与你本地数据的坐标点集做 Hausdorff 距离比对 } });血泪经验高德DistrictSearch返回的boundaries是lng,lat;lng,lat;...字符串需split(;).map(p p.split(,).map(Number))转为坐标数组。用scipy.spatial.distance.directed_hausdorff计算你数据与高德数据的 Hausdorff 距离若 500 米说明你的数据源存在系统性偏移需重新校准。从那以后我每次拿到新的行政区划 geojson都强制走一遍ogrinfojq快检、shapely.make_valid修复、pyproj.Transformer显式转换三步流程再用高德DistrictSearch抽样比对。少一次就可能在线上环境半夜被报警电话叫醒。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

MySQL索引优化实战:从慢查询到毫秒级响应的完整方法论

MySQL索引优化实战:从慢查询到毫秒级响应的完整方法论

接手过一个内部系统的慢查询工单。一张按用户和创建时间筛选的订单表,数据量不过两百多万行,一条看似简单的SQL却稳定跑出2秒以上的延迟,每天被定时任务调用几十次,直接把整条批处理链路拖到深夜。排查过程并不复杂——表里只给用…

2026/10/16 17:01:58 阅读更多 →
DeepSeek-R1提示词攻略:从推理模型原理到高效对话模板

DeepSeek-R1提示词攻略:从推理模型原理到高效对话模板

简介:这是面向人工智能初学者与DeepSeek用户的实用指南,讲解DeepSeek推理模型与通用模型在提示词使用上的关键差异,重点介绍场景化、术语破解、风格迁移三种对话模板,并配有一份可解决九成常见问题的急救包,帮助读者快…

2026/10/16 17:01:58 阅读更多 →
claude-code-memory-setup核心技巧清单:CLAUDE.md规则与/save、/resume命令让会话无缝续写

claude-code-memory-setup核心技巧清单:CLAUDE.md规则与/save、/resume命令让会话无缝续写

【免费下载链接】claude-code-memory-setup Up to 71.5x fewer tokens per session on Claude Code with Obsidian Graphify. Persistent memory, codebase knowledge graphs, and chat import pipeline. 🇧🇷 PT-BR included. 项目地址: ht…

2026/10/16 17:01:58 阅读更多 →

最新新闻

OpenCV霍夫变换圆检测原理与工程调优实战

OpenCV霍夫变换圆检测原理与工程调优实战

1. 项目概述:为什么圆检测不是“画个圈”那么简单OpenCV里的霍夫变换圆检测,听起来像是调个函数、设几个参数就能出结果的“一键操作”。但我在带某高校图像处理实验课时发现,超过七成的学生第一次跑通代码后,要么根本检不出图中的…

2026/10/16 17:29:43 阅读更多 →
从VGG16看卷积网络深度设计:小卷积核堆叠与迁移学习价值

从VGG16看卷积网络深度设计:小卷积核堆叠与迁移学习价值

前两天有个朋友发来一段代码,说他在某个小数据集上用VGG16做迁移学习,效果比一些看起来“更新”的网络还好,就是跑得慢。我顺手把2014年那篇《Very Deep Convolutional Networks for Large-Scale Image Recognition》翻出来又读了一遍。这篇论…

2026/10/16 17:29:43 阅读更多 →
会务小程序行政自己能搭吗?卡点就三步,附一张能当场验的清单

会务小程序行政自己能搭吗?卡点就三步,附一张能当场验的清单

单位办会,最常听到的一句话是"要做会务小程序啊?这个得找技术部门"。这句话现在不太站得住了。会务小程序这件事,早就过了要技术介入的阶段。真正卡住行政的不是能力,是三个很具体的坎:不会设计、不会配置、…

2026/10/16 17:28:42 阅读更多 →
StandardScaler保存的正确姿势:跨版本兼容与安全序列化

StandardScaler保存的正确姿势:跨版本兼容与安全序列化

1. 为什么StandardScaler的“保存”不是调用save()那么简单刚接触机器学习模型持久化的开发者,常会下意识地在StandardScaler对象上调用.save()或.dump()——结果要么报错AttributeError,要么保存下来的东西根本没法用。这不是你记错了API,而…

2026/10/16 17:28:42 阅读更多 →
GPT生成式预训练全解析:从架构原理到微调实践

GPT生成式预训练全解析:从架构原理到微调实践

1. 生成式预训练到底解决了什么问题先把话说在前面:GPT这几年几乎成了大模型的代名词,但很多人其实没搞明白,它最初提出的"生成式预训练"到底解决了什么问题。如果你把时间拨回2018年,那时候做NLP的主流思路是&#xff…

2026/10/16 17:28:42 阅读更多 →
DWF Viewer工程图纸交付原理与实战指南

DWF Viewer工程图纸交付原理与实战指南

简介:Autodesk DWF Viewer是面向工程、建筑与制造领域设计协作人员的专业级DWF格式查看工具,专为非CAD用户高效审阅2D/3D设计数据而优化,解决轻量化共享、安全预览与跨平台沟通难题。资源包为RAR压缩格式,共2个文件:15…

2026/10/16 17:27:41 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →