如果你的gdal版本是3.2.2及以上,那么只能:
from osgeo import gdal
ds = gdal.Open(data)
rows = ds.RasterYSize
cols = ds.RasterXSize
bandnum = ds.RasterCount
transform = ds.GetGeoTransform()
ds是一个对象,rows是影像的行,也是Y轴长度。对应的,cols则是影像的列,X轴的长度。bandnum代表影像的波段数。
transform是一个list,存储着栅格数据集的地理坐标信息。
#transform[0] /* top left x 左上角x坐标(经度)*/
#transform[1] /* w--e pixel resolution 东西方向上的像素分辨率*/
#transform[2] /* rotation, 0 if image is "north up" 如果北边朝上,地图的旋转角度*/
#transform[3] /* top left y 左上角y坐标(纬度)*/
#transform[4] ...
大家好,我是小白。今天分享一个轻量化脚本,只需配置路径和少量参数,就能基于 TIFF 影像 + SHP 矢量自动生成 YOLO-Seg 格式的分割样本,还能自动划分训练 / 验证集、生成标准 data.yaml 配置文件,开箱即用!
当然,前提是,要提前绘制好矢量。绘制矢量这个步骤很麻烦,费时费力,不在这里细说。
核心思路整个流程无需复杂操作,核心就 4 步:
矢量栅格化:将 SHP 矢量转为与 TIFF 影像尺寸、投影完全匹配的二值掩膜(有目标的区域为 255,背景为 0);
滑窗分块:对大尺寸 TIFF 和掩膜按指定尺寸滑窗分块,支持重叠率设置;
标签生成:从掩膜中提取目标轮廓,归一化后生成 YOLO-Seg 格式标签(自动过滤小面积无效轮廓);
数据集整理:随机划分训练 / 验证集,生成 YOLO 训练所需的 data.yaml 文件。
快速使用1. 配置参数只需修改代码末尾的 4 个核心路径 / 参数:
TIFF_PATH = r"你的大尺寸TIFF影像路径"
SHP_PATH = r"对应的SHP矢量文件路径"
OUTPUT_DIR = r"样本输出目录"
temp_ma ...
python
未读大家好,我是小白。今天这篇文章就来讲一讲如何把自己写的.py 文件做成全局可用的本地库。
一、核心原理:Python 模块搜索机制在开始之前,先了解下 Python 的模块搜索规则:当你执行import module_name时,Python 会按以下顺序查找模块:
内置模块(如sys、os等)
sys.path列表中的目录(包括当前脚本目录、PYTHONPATH 环境变量指定目录、Python 安装目录下的 site-packages 等)
如果找不到,就会抛出ModuleNotFoundError
我们的目标就是把自己的模块所在路径添加到 Python 的搜索路径中,或者直接放到它本来就会搜索的目录里。
二、方案一:简单粗暴 —— 直接放入 site-packages(适合快速测试)这是最直接的方法,适合临时测试或简单脚本的复用,原理就是把你的模块放到 Python 默认的第三方库目录里。
操作步骤:
找到 site-packages 目录
import numpy # 任意第三方库均可
print(numpy.__file__)
输出类似C:\Users\用户名\App ...
大家好,我是小白。OPENCV是一个实用的库,很多传统的算法都可以通过它进行调用。
今天这篇文章就来讲一讲OpenCV Python ,顺便把 OpenCV Python 绑定的历史、包的区别、常见错误原因、推荐安装方式全部说透。
一、OpenCV 简介与 Python 绑定的历史OpenCV(Open Source Computer Vision Library)是一个由 Intel 在 1999 年发起的开源计算机视觉库,现在由 OpenCV.org 基金会维护。目前最新稳定版是 OpenCV 4.12.x。
OpenCV 最开始是用 C++ 写的,后来提供了 Python 绑定,让 Python 开发者也能轻松使用。
关键历史节点:
OpenCV 1.x 时代(2000-2008):Python 绑定模块名叫 cv,导入方式是 import cv。那个时候的接口比较原始,函数名也比较长。
OpenCV 2.0(2009 年):大重构!C++ 接口全面现代化,Python 绑定也彻底重写。新绑定的模块名定为 cv2,导入方式变成 import cv2(或 from cv2 im ...
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据转换库,常用于处理栅格(Raster)和矢量(Vector)数据。在栅格影像处理中,NoData 值用于表示无效或缺失的数据区域(如背景或无效像素)。有时,我们需要移除这些 NoData 值,以适应特定的数据分析或可视化需求。
下面是具体代码:
from osgeo import gdal
import sys
def remove_nodata(out_path):
# 以可写模式打开输出影像
out_ds = gdal.Open(out_path, gdal.GA_Update)
if out_ds is None:
raise Exception(f"无法以可写模式打开输出影像:{out_path}")
# 检查 GDAL 版本(可选,推荐 >= 3.1 以支持 DeleteNoDataValue)
print("GDAL 版本:", gdal.__version__)
su ...
我其实会的技能是很杂的,BOSS直聘是我一直保存手机的app,时不时看看不同的岗位的需求是什么。是的,我有一颗想跳槽的心,这也是我会的技能是很杂的原因。正如我从测量工作跳槽到遥感领域工作一样,至今我还记得怎么快速摆正三脚架。
今天我又看了下boss直聘的岗位,我一般不止是看遥感相关的,我还会看其他岗位。因为我是想跳槽的,跳槽到别的行业。
做遥感只是在吃老本。不过好在2025年,我大半年的时间都是在做深度学习和遥感结合的工作,我不在这里写过多与现工作相关的内容。这里只记录我在业余时的学习记录。
在业余时间,我依然会写一写公众号,并且在2026年我会选择一项技能点 好好学习,可能是三维重建,可能是嵌入式,至于具体深入学到什么程度,现在我还没想好。
现在我的现状很尴尬,这里会一些,那里会一些。这导致了我认为自己是学艺不精。小时候就听说过:学海无涯苦作舟。实际上我每天都在接触新的东西,真的是学不完。学不完也是指我的心太野了。
2025年,我写了两三个发明专利,其实也发明专利比写论文要简单太大。只要你有思路,只要你的思路能用代码实现,加上你的思路有创新,那么这样的思路就能变成发明专利。2026 ...
用 Python 把矢量等高线转成栅格网格——顺便聊聊乐高地形模型空间数据主要有矢量和栅格两种形式。矢量擅长精确描述点、线、面,比如城市边界、道路或等高线;栅格则用规则的网格像素来表示,每个像素带一个值,常用于高程、温度之类的连续数据。实际分析时,经常需要把两者结合起来,比如把矢量等高线转成高程栅格。
今天拿杭州为例,演示怎么用 Python 把等高线(矢量)转成规则网格(栅格),最后再离散化成几个高度级别——这样就能想象用不同颜色的乐高砖来搭一个迷你杭州地形模型了。整个过程主要靠 GeoPandas 和 OSMnx,代码简单,几分钟就能跑通。
数据准备杭州公开的等高线数据不太好找,我这里用一个常见的替代方案:从公开 DEM(数字高程模型)生成等高线,或者直接用开源高程数据。这里为了演示方便,我们先用 OSMnx 下载杭州市行政边界,然后假设有一份等高线数据(实际项目可以从自然资源部门或开源平台获取 DEM 后生成)。
先看边界:
import osmnx as ox
import matplotlib.pyplot as plt
# 下载杭州市行政边界
city = ox.geoc ...
[{"place_id":208441986,"licence":"Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright","osm_type":"relation","osm_id":3221112,"lat":"30.2489634","lon":"120.2052342","class":"boundary","type":"administrative","place_rank":10,"importance":0.6742110419554537,"addresstype":"city","name":"Hangzhou City","display_name":"Hangzhou City, Zhejiang, China","boundingbox":["29.1888286","30.5648514","118.3396948","120.7254851"],"geojson":{"type":"Polygon","coordinates":[[[118.3396948,29.4774 ...
地理空间数据主要分成栅格和矢量两大类。今天我们先聊矢量数据,它用点、线、多边形这些坐标集合来描述真实世界。点适合标记具体位置,比如城市或景点;线用来表示道路、河流;多边形则描绘区域边界,如省份或湖泊。这种数据特别适合处理那些位置和形状都很重要的离散特征,在农业、城市规划、交通、环境监测等领域到处都能用到。
在 Python 生态里,处理矢量数据的王牌工具就是 GeoPandas。它基于 Pandas 扩展而来,又融入了 Shapely 的几何运算能力,让你既能像用 Pandas 那样轻松操作表格数据,又能顺手做各种空间计算,简直是空间分析的利器。
下面分享我平时最常用的 10 个 GeoPandas 操作技巧,帮助你快速处理、合并和转换矢量数据。
1. 从外部加载中国地图数据
GeoPandas 早期版本有内置数据集,但现在(2026 年)已经移到独立的 geodatasets 包里。我们直接用公开的 GeoJSON 数据加载省份边界,非常方便。
import geopandas as gpd
# 从阿里云 DataV 公开接口加载中国省份边界(包含香港、澳门、台湾)
gdf_ch ...
今天是2025年12月31日,祝大家2026、2027……(省略很多年份)……开开心心,身体健康。
今天简单来写一写近况。
2025年,在写代码方面,我偷懒了很多,一整年在github的提交次数是962次。
在2024年、2023年的提交次数在1500次左右。
2025年,在下班后,不想写代码的时间大大增加。
偶尔看看抖音的乌萨奇(没看过正版的),偶尔出门骑车逛逛,偶尔看看B站视频。
2026年的计划,我这几天在思考。
主要有三点目标。
1、继续搞主业,遥感数据处理、深度学习
2、三维重建
3、硬件
第一点,主业是我能在城市立足谋生的根本,对应的专业技能必须好好打磨维系,这是安身立命的基础。
第二点,关于三维重建。这个领域难度不低,我不敢保证一定能钻研透彻,打算从点云技术入手,循序渐进地摸索,慢慢向高斯泼溅这类前沿方向靠近。
第三点是硬件学习。我买51开发板都大半年了,至今还没正式开始学习,最近又打算再入手一块32开发板——说起来也符合“差生文具多”的调侃。
其实原本还有第四、第五个计划,但我很清楚自己的精力有限,与其贪多嚼不烂,不如果断放弃后两点,把核心精力放在前三项 ...









