银川建筑轮廓SHP数据带高度属性WGS84坐标系实战指南
简介这份银川市建筑轮廓带高度属性矢量SHP数据合集面向城市规划、建筑设计、GIS空间分析与灾害预防等领域的从业者及研究人员提供可直接导入ArcGIS等软件的高精度建筑空间数据用于天际线设计、光照与阴影分析、通风建模及城市管理决策。资源包共9个文件约2.7MB以shp主文件为核心配套shx索引、dbf属性表、prj投影定义、cpg编码说明及sbn、sbx空间索引等另含xml元数据与说明文本完整覆盖SHP格式读取与编辑所需组件。数据采用WGS84坐标系兼容性强且明确为非OSM独立采集成果保证独特与准确。每栋建筑均记录轮廓与高度属性便于开展精确的空间查询、统计与三维分析。目前已有55人学习关注适合需要银川本地建筑基底数据的中高级GIS用户快速上手使用。1. 银川市建筑轮廓带高度属性矢量SHP数据合集wgs84坐标系非OSM这份数据到底能干什么如果你做过城市三维建模、日照分析或者风电光伏选址大概率遇到过这个场景拿到一份建筑轮廓数据打开属性表一看只有几何面没有高度字段。想做体块拉伸只能靠楼层数估算或者手动补录一个片区几百栋楼补到怀疑人生。银川市建筑轮廓带高度属性矢量SHP数据合集wgs84坐标系非OSM这个标题核心卖点就两个一是带高度属性二是非OSM来源。带高度意味着你能直接做三维拉伸、容积率估算、天际线分析非OSM意味着它的几何精度和属性完整度通常比开放街图数据更贴近实际测绘成果。这份数据适合做城市尺度空间分析的人——城市规划、GIS开发、遥感应用、建筑能耗模拟只要你需要把建筑从二维平面立起来它就能省掉你最头疼的那一步。坐标系是wgs84也就是EPSG:4326经纬度地理坐标系不是投影坐标系这一点后面会专门讲怎么处理。2. 拿到SHP先别急着打开搞清高度字段和坐标系的真实含义2.1 高度属性到底存在哪一列很多人拿到带高度的SHP第一反应是双击打开看属性表然后发现列名是英文缩写不知道哪个是高度。常见的字段命名有几种height、H、building_h、floor、floors、层数。这里有个关键区别高度值和楼层数是两回事。高度值通常是米楼层数是整数。如果字段叫floor值是6那它大概率是6层不是6米。你需要先判断这个字段是高度还是层数再决定怎么用。判断方法很简单看数值分布。高度值一般有小数比如18.5、24.3楼层数一般是整数比如6、18。如果全是整数且最大值在30到60之间基本可以确定是楼层数。这时候你需要乘以一个层高系数常用的是3米或3.2米。但注意不同建筑类型的层高不一样住宅和商业差别很大一刀切乘3米会有误差。如果数据里同时有height和floor两个字段优先用height楼层数只做参考。还有一种情况字段名是LEV或者LEVEL这种一般是楼层数。如果字段名是ELEV那可能是高程不是建筑高度别搞混。高程是建筑底面海拔建筑高度是建筑本身的高度两者差一个地面标高。2.2 wgs84坐标系在SHP里的实际表现wgs84是地理坐标系单位是度不是米。你打开SHP看到坐标值是106.2, 38.5这种那就是wgs84。这种坐标系的好处是通用任何GIS软件都能直接读和在线地图底图也能对上。坏处是你不能直接用它算面积、算距离、算缓冲区。因为度不是长度单位一度经度在赤道是111公里在银川北纬38度左右只有大约87公里。你直接算面积结果会偏得离谱。所以拿到wgs84的SHP第一步不是看属性是投影。投影成什么看你的用途。做银川市域分析常用的是UTM投影银川在UTM 48N带EPSG:32648。或者用高斯克吕格投影3度带中央经线105度EPSG:4544CGCS2000 3度带105E。注意wgs84和CGCS2000在米级精度上差异很小日常分析可以互换但如果你要做高精度测量需要做基准转换。投影之后面积单位变成平方米距离单位变成米这时候你算容积率、算建筑密度才有意义。投影这一步在QGIS里叫“导出-另存为”在ArcGIS里叫“投影栅格”或“投影”在Python里用geopandas的to_crs。后面会给具体代码。2.3 非OSM来源意味着什么OSM的建筑轮廓数据优点是覆盖广、免费、更新快缺点是几何精度参差不齐高度属性大量缺失很多建筑只有轮廓没有高度。非OSM来源通常意味着这份数据来自测绘部门、规划部门或者商业数据商几何精度更高属性更完整尤其是高度字段往往是实测或者从规划审批资料里提取的。但非OSM不代表没有坑。常见的问题有建筑轮廓有重叠、有缝隙、有自相交高度字段有空值、有异常值比如9999表示未知数据分块存储一个城市几十个SHP文件需要合并。这些问题在OSM数据里也有但非OSM数据因为精度高反而更容易暴露拓扑错误。所以拿到数据后先做几何检查再做属性检查顺序不能反。3. 用Python把SHP读进来字段清洗、投影转换、高度补全3.1 读取SHP并检查字段和几何有效性import geopandas as gpd import pandas as pd # 读取SHP文件注意编码中文路径和字段名可能需要指定encoding gdf gpd.read_file(yinchuan_buildings.shp, encodingutf-8) # 查看前5行和字段列表 print(gdf.head()) print(gdf.columns.tolist()) # 查看坐标系 print(gdf.crs) # 检查几何有效性 invalid gdf[~gdf.geometry.is_valid] print(f无效几何数量: {len(invalid)}) # 检查高度字段空值 height_col height # 根据实际字段名修改 if height_col in gdf.columns: print(f高度字段空值数量: {gdf[height_col].isna().sum()}) print(f高度字段统计:\n{gdf[height_col].describe()})这段代码做了四件事读文件、看字段、查坐标系、查几何有效性和高度空值。encodingutf-8是为了防止中文字段名乱码如果报错可以试gbk。is_valid检查几何有没有自相交、重复点等问题无效几何会导致后续空间分析出错。高度字段的空值数量决定了你要不要做补全如果空值超过30%这份数据的可用性就要打问号。3.2 投影转换从wgs84到适合算面积的投影坐标系# 投影到UTM 48N适合银川地区 gdf_utm gdf.to_crs(epsg32648) # 或者投影到CGCS2000 3度带105E # gdf_utm gdf.to_crs(epsg4544) # 计算面积单位平方米 gdf_utm[area_m2] gdf_utm.geometry.area # 查看面积统计 print(gdf_utm[area_m2].describe()) # 保存投影后的数据 gdf_utm.to_file(yinchuan_buildings_utm.shp, encodingutf-8)to_crs是geopandas的投影转换函数epsg32648是UTM 48N的代码。转换后几何坐标从经纬度变成米geometry.area算出来的就是平方米。注意投影转换不会改变属性表只改变几何坐标。保存时用to_file格式还是SHP但坐标系已经变了。如果你后续要做空间连接、缓冲区、叠加分析都用这个投影后的数据不要用原始的wgs84数据。3.3 高度字段清洗空值、异常值、楼层数转换# 假设高度字段是height楼层字段是floor # 先处理异常值高度大于200米的建筑在银川极少可能是错误值 gdf_utm.loc[gdf_utm[height] 200, height] None # 空值用楼层数补全层高按3米算 mask gdf_utm[height].isna() gdf_utm[floor].notna() gdf_utm.loc[mask, height] gdf_utm.loc[mask, floor] * 3.0 # 如果楼层数也是空用该区域中位数补全 median_height gdf_utm[height].median() gdf_utm[height] gdf_utm[height].fillna(median_height) # 检查补全后的结果 print(f补全后空值数量: {gdf_utm[height].isna().sum()}) print(gdf_utm[height].describe())这段代码的逻辑是先剔除明显异常的高度值大于200米然后用楼层数乘以3米补全如果楼层数也没有用中位数补全。中位数补全是一种保守做法不会引入太大偏差但会抹平区域差异。如果你做的是精细分析建议按区域分组补全比如按行政区或按网格用局部中位数而不是全局中位数。注意floor字段如果是字符串类型需要先转成数值gdf_utm[floor] pd.to_numeric(gdf_utm[floor], errorscoerce)。errorscoerce会把无法转换的值变成NaN避免报错。3.4 合并多个SHP文件并统一字段import os import glob # 假设数据分块存储在data文件夹下 shp_files glob.glob(data/*.shp) gdf_list [] for f in shp_files: temp gpd.read_file(f, encodingutf-8) # 统一字段名假设不同文件里高度字段名不一样 if H in temp.columns: temp temp.rename(columns{H: height}) if 层数 in temp.columns: temp temp.rename(columns{层数: floor}) gdf_list.append(temp) # 合并 gdf_all pd.concat(gdf_list, ignore_indexTrue) gdf_all gpd.GeoDataFrame(gdf_all, crsgdf_list[0].crs) # 去重按几何和高度 gdf_all gdf_all.drop_duplicates(subset[geometry, height]) print(f合并后建筑数量: {len(gdf_all)}) gdf_all.to_file(yinchuan_buildings_merged.shp, encodingutf-8)分块数据合并的核心是字段对齐。不同批次的SHP高度字段可能叫H、height、building_h楼层字段可能叫floor、层数、LEV。你需要先统一命名再合并。pd.concat会把所有行拼在一起gpd.GeoDataFrame确保结果还是地理数据框。去重按几何和高度防止同一栋楼被重复录入。最后保存成一个完整的SHP。4. 避坑指南这五类问题我几乎每次都能遇到4.1 坐标系标了wgs84但实际是其他坐标系现象数据打开后和在线底图对不上偏移几百米甚至几公里。原因SHP的.prj文件写的是wgs84但实际坐标可能是CGCS2000、北京54或者西安80。这几种坐标系在银川地区的差异从几十米到几百米不等。解决找一个已知地物比如鼓楼或者某个大型立交桥对比在线底图的坐标如果偏移固定就是坐标系错了。用QGIS的“坐标转换”工具试几个常用坐标系找到对得上的那个。或者直接问数据提供方别自己猜。4.2 高度字段单位不是米而是分米或厘米现象建筑高度值普遍在100到300之间但银川没有那么多300米高楼。原因单位是分米除以10才是米。解决看数值分布如果中位数在100左右而实际建筑中位数高度在20到30米那就是分米。除以10。如果中位数在1000左右可能是厘米除以100。还有一种可能是英尺乘以0.3048。判断方法拿几栋你知道高度的楼对比比如一栋6层住宅高度大约18米如果数据里是180那就是分米。4.3 建筑轮廓有重叠导致面积重复计算现象算总建筑面积时结果比实际大很多。原因同一栋楼被拆成多个面或者相邻建筑轮廓有重叠。解决先用gdf.geometry.area算每个面的面积然后做空间自相交检查。在geopandas里可以用gdf.overlaps(gdf)找重叠对但计算量大。更实用的方法是按建筑ID分组如果ID相同但几何不同说明是同一栋楼被拆分需要合并。如果ID不同但几何重叠说明是数据错误需要人工检查。合并用unary_union但会丢失属性建议先合并几何再重新关联属性。4.4 高度空值用全局中位数补全导致区域偏差现象补全后老城区建筑高度被拉高新城区被拉低。原因全局中位数没有考虑区域差异。老城区建筑普遍低新城区普遍高用全局中位数补全两边都不准。解决按空间网格分组补全。把研究区划分成500米×500米的网格每个网格内用中位数补全。这样既保留了区域特征又填补了空值。代码实现用gdf.sjoin把建筑和网格关联然后groupby网格ID算中位数再fillna。4.5 投影转换后面积算出来还是不对现象投影到UTM后面积还是偏大或偏小。原因UTM投影在高纬度地区有变形银川在北纬38度变形不大但如果你用的是Web MercatorEPSG:3857变形会很大。Web Mercator是给在线地图用的不是给面积计算用的。解决确认投影坐标系是UTM还是高斯克吕格不要用Web Mercator。另外检查几何是否有效无效几何算面积会出错。用gdf.geometry.is_valid检查无效的用buffer(0)修复。5. 从SHP到三维体块用高度字段做拉伸和可视化5.1 用QGIS快速做三维拉伸QGIS有个内置的3D地图视图可以直接把带高度的SHP拉伸成体块。步骤打开QGIS加载SHP右键图层属性找到3D视图设置勾选“启用3D渲染”高度字段选height拉伸系数设1.0。然后打开“视图-3D地图视图”就能看到建筑体块。这个方法适合快速验证高度字段对不对不需要写代码。注意QGIS的3D视图对大数据量支持一般几万栋楼可能会卡建议先按区域筛选。5.2 用Python做体块拉伸和导出from shapely.geometry import Polygon import numpy as np def extrude_building(row): 把建筑轮廓拉伸成三维体块 geom row.geometry height row[height] if geom.is_empty or height 0: return None # 获取外环坐标 coords list(geom.exterior.coords) # 底面和顶面 base [(x, y, 0) for x, y in coords] top [(x, y, height) for x, y in coords] # 侧面 sides [] for i in range(len(coords)-1): side [ (coords[i][0], coords[i][1], 0), (coords[i1][0], coords[i1][1], 0), (coords[i1][0], coords[i1][1], height), (coords[i][0], coords[i][1], height), (coords[i][0], coords[i][1], 0) ] sides.append(side) return base, top, sides # 对前10栋楼做拉伸导出为GeoJSON sample gdf_utm.head(10) for idx, row in sample.iterrows(): result extrude_building(row) if result: base, top, sides result # 这里可以进一步导出为CityGML或OBJ格式 print(f建筑{idx}高度{row[height]}米底面{len(base)}个点)这段代码演示了拉伸的基本逻辑把二维轮廓的每个点加上Z值底面Z0顶面Zheight侧面是四边形。实际项目中你会用trimesh或pyvista做更高效的体块生成和导出。注意拉伸前要确保几何是有效的简单多边形带洞的多边形需要特殊处理洞的边界也要拉伸成侧面。5.3 高度字段的验证方法做完拉伸怎么验证高度对不对三个方法一是和已知地标对比比如银川某座已知高度的建筑看数据里的值是否接近二是看高度分布正常城市建筑高度应该符合幂律分布大部分低层少数高层如果分布太均匀可能有问题三是做日照分析用拉伸后的体块算阴影看阴影长度是否和实际日照情况吻合。第三个方法最直观但需要日照分析软件比如Ladybug或Sunlight。5.4 从体块到容积率一个实际计算示例# 假设有一个地块边界 plot gpd.read_file(plot.shp).to_crs(epsg32648) # 空间连接找出地块内的建筑 buildings_in_plot gpd.sjoin(gdf_utm, plot, predicatewithin) # 计算总建筑面积体块体积除以层高或者直接用底面积乘以层数 # 这里用底面积乘以楼层数估算 buildings_in_plot[floor_area] buildings_in_plot.geometry.area * buildings_in_plot[floor] # 按地块汇总 total_floor_area buildings_in_plot.groupby(plot_id)[floor_area].sum() plot_area plot.set_index(plot_id).geometry.area # 容积率 far total_floor_area / plot_area print(f容积率:\n{far})容积率是地块内总建筑面积除以地块面积。这里用底面积乘以楼层数估算总建筑面积比用高度除以层高更准因为层高有差异。sjoin的predicatewithin表示建筑完全在地块内如果建筑跨地块需要用intersects然后按面积比例分摊。容积率算出来可以和规划指标对比验证数据的合理性。6. 进阶技巧把高度属性用出花来的三个方向第一个方向是建筑能耗模拟。带高度的建筑轮廓加上朝向、窗墙比、围护结构参数可以快速估算区域建筑能耗。常用工具是EnergyPlus或CitySim输入就是体块模型加属性表。这里的关键是高度字段的精度如果高度误差超过10%能耗模拟结果偏差会很大。我一般会先用高度分布做敏感性分析看哪些建筑的高度对结果影响最大然后重点校验这些建筑。第二个方向是城市风环境分析。建筑高度直接影响风道和涡流区。用CFD软件做风环境模拟输入就是三维体块。这里有个坑SHP的几何精度太高几万个顶点CFD网格划分会非常慢。我一般会先做几何简化用simplify函数把顶点数降到原来的10%到20%同时保留建筑轮廓的主要特征。简化容差取0.5到1米太小了没效果太大了建筑形状会变形。第三个方向是日照分析。银川纬度较高日照分析对建筑高度很敏感。用体块模型算日照核心是阴影长度和遮挡关系。这里有个技巧不要用所有建筑一起算先按高度排序只算高层建筑对周边的遮挡低层建筑之间的遮挡影响很小。这样可以大幅减少计算量。验证方法选一个已知日照情况的日期比如冬至日算出来的日照时数和实际观测对比误差在15分钟以内就算合格。最后一个习惯每次拿到新的SHP数据先做三件事——看坐标系、看高度字段分布、看几何有效性。这三件事花不了10分钟但能避免后面80%的返工。我见过太多人拿到数据直接开干跑到一半发现坐标系错了或者高度字段是楼层数全部重来。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

机器学习论文插图模板:用PPT高效绘制CNN架构图

机器学习论文插图模板:用PPT高效绘制CNN架构图

简介:面向机器学习论文写作的绘图模板,以单个PPTX文件打包发布,专为需要绘制网络结构图、模块示意图的研究生和科研人员设计。模板将Softmax函数、卷积操作、图像锐化、特征向量与输入输出层等常见组件,连同卷积神经网络层、最大池…

2026/10/17 15:51:14 阅读更多 →
深度学习在自动驾驶中的落地分工:从感知预测到规划控制的工程实践

深度学习在自动驾驶中的落地分工:从感知预测到规划控制的工程实践

很多人会把“无人驾驶”理解成一套端到端的魔法系统——摄像头往里灌图像,方向盘自己会转。真实情况远没那么浪漫,至少今天量产落地的方案,拆开看还是一套非常经典的分层架构:环境感知、行为预测、决策规划、控制执行。深度学习在…

2026/10/17 15:51:14 阅读更多 →
BERT微调实战全解:参数设置、数据预处理与踩坑排查

BERT微调实战全解:参数设置、数据预处理与踩坑排查

做NLP的人,八成绕不过BERT微调这道坎。我最早接触它的时候也是从教程里照搬了一套流程,数据集处理好、模型加载、跑几个epoch,看起来好像没什么问题。可等真正用到自己的任务上,问题就全冒出来了:loss降了但指标纹丝不…

2026/10/17 15:50:13 阅读更多 →

最新新闻

GNSS/INS松组合导航Matlab实现:卡尔曼滤波与误差状态详解

GNSS/INS松组合导航Matlab实现:卡尔曼滤波与误差状态详解

简介:面向航空航天、自动驾驶与航海等导航应用场景,这份GNSS/INS松组合导航Matlab程序适合需要研究卫星/惯性组合导航算法的工程师与在校生。程序围绕GNSS与INS数据融合展开:先由GNSS轨迹生成模拟惯导输出,再经卡尔曼滤波、四元数…

2026/10/17 16:56:54 阅读更多 →
Ubuntu 18.04下evo轨迹评估稳定实践指南

Ubuntu 18.04下evo轨迹评估稳定实践指南

1. 为什么在Ubuntu 18.04上坚持用evo——不是怀旧,是工程现场的刚性需求你可能在2024年听到“Ubuntu 18.04”会下意识皱眉:这系统早该退役了。但现实是,我去年参与的三个机器人SLAM项目、两个高校移动平台课程实验、以及某工业AGV定位模块的现…

2026/10/17 16:56:54 阅读更多 →
Artcraft:数字创作中艺术与工艺融合的方法论

Artcraft:数字创作中艺术与工艺融合的方法论

1. “Artcraft”不是新词,而是被长期误读的创作方法论原点“Artcraft”这个词最近突然在多个内容平台冒头,有人把它当AI绘画新模型,有人当成某款小众设计工具,还有人以为是某个海外艺术节的缩写。我第一次在某跨平台图像处理Demo的…

2026/10/17 16:56:54 阅读更多 →
Go接入微信支付API v3:签名、证书与回调验签全流程指南

Go接入微信支付API v3:签名、证书与回调验签全流程指南

1. 为什么偏偏是Go来写微信支付做开发这些年,微信支付接入应该算是“看起来简单、真正动手全是坑”的典型代表。尤其对Go开发者来说,网上搜到的资料要么是旧版API v2的XML体系,要么是半懂不懂的人拿Java代码硬转过来的伪Go写法,真…

2026/10/17 16:56:54 阅读更多 →
微信推送的“省着用“设计

微信推送的“省着用“设计

文章目录约束设计:三级分流队列:JSONL 文件锁Digest:每小时整理一次配额:三层防线为什么不用消息队列中间件总结约束 通过官方通道给微信发消息,有个硬约束:全天主动发送上限 10 条。超过就发不出去。 1…

2026/10/17 16:56:54 阅读更多 →
RAG切片策略指南:从原理到源码,解决知识库效果瓶颈

RAG切片策略指南:从原理到源码,解决知识库效果瓶颈

简介:这份源码资源面向正在搭建RAG应用、需要优化长文档切分环节的开发者与AI学习者,围绕检索增强生成中的切片策略展开,帮助解决文档切分粒度不当导致检索召回差、生成答案质量低的问题。资源包共5个文件,以Python脚本为主&#…

2026/10/17 16:55:53 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/17 1:44:59 阅读更多 →
影刀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/16 21:54:38 阅读更多 →
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 阅读更多 →