如果你的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] ...
Windows 10上最简单的GDAL安装指南:小白学遥感的起点对于遥感初学者来说,GDAL(Geospatial Data Abstraction Library)是一个绕不开的核心工具。它可以处理各种地理空间数据格式,是遥感、GIS分析的基石。然而,GDAL的安装过程常常让新手望而却步:网上的教程要么过时,要么充斥着复杂的术语和步骤。本文将以最简单的方式,带你一步步在Windows 10上安装GDAL,适合零基础的小白。
为什么选择.whl文件安装?GDAL的官方安装方式需要编译源码,或者依赖复杂的环境配置,对于初学者来说费时费力。最快、最简单的方法是通过Python的pip工具,结合预编译的.whl(wheel)文件安装。.whl文件是Python的二进制包,省去了编译的麻烦,直接安装即可。
我们推荐从Christoph Gohlke维护的geospatial-wheels下载GDAL的.whl文件。这个仓库提供了针对Windows的预编译GDAL包,兼容性好,更新及时。
下载地址是:https://github.com/cgohlke/geospatial-wheels/re ...
在 Python 中,if 语句、break、continue 和 pass 是控制流的关键工具,用于控制程序的执行逻辑。以下是它们的含义和使用方式的简洁解释:
1. if 语句
含义: 用于条件判断,根据条件(True 或 False)决定执行哪部分代码。
用法:
if 条件:
# 条件为 True 时执行
elif 其他条件:
# 其他条件为 True 时执行
else:
# 条件为 False 时执行
理解: 就像生活中的“如果……就……”,比如“如果下雨,就带伞”。
示例:
x = 10
if x > 5:
print("x 大于 5") # 输出: x 大于 5
else:
print("x 小于或等于 5")
2. break
含义: 立即退出当前的循环(for 或 while),不再执行循环的剩余部分。
用法: 常用于循环中,当满足某个条件时提前终止循环。
理解: 像在超市找东西,找到目标后就立刻离开,不再逛其他货架。
示例:for i in range(10):
if i == 5:
...
在 Python 开发的世界里,集成开发环境(IDE)或代码编辑器的选择堪称一场信仰之战。PyCharm 和 Visual Studio Code(VS Code)无疑是这场战争中的两大巨头。PyCharm 像一位经验丰富的导师,功能全面,开箱即用;而 VS Code 则像一位灵活的艺术家,轻量、可定制,充满无限可能。那么,究竟谁才是 Python 开发者的最佳选择?让我们从多个维度深入对比,带你一探究竟!
1. 智能补全:是“懂你”还是“猜你”?PyCharm:代码补全的灵魂伴侣PyCharm 的代码补全功能(IntelliSense)堪称业界标杆。它不仅能预测你的下一个字符,还能理解你的项目结构、变量类型和上下文。输入一个函数名,PyCharm 会贴心地为你补全参数,甚至还能自动生成 docstring。例如:
def get_user_data(user_id: int) -> Dict[str, Any]:
# PyCharm: “需要我帮你写个 docstring 吗?”
pass
PyCharm 的智能补全不仅快,还精准,特别是在处理复杂的 Pyth ...
在https://editor.p5js.org/ 展示
代码如下:
let img; // 用于存储图像对象
let originalImgWidth, originalImgHeight; // 存储图像原始尺寸
let displayWidth = 800; // 画布最大显示宽度
let displayHeight = 600; // 画布最大显示高度
let scaledWidth, scaledHeight; // 图像在画布上的缩放后尺寸
let scaleFactor; // 缩放比例
let tileSize = 64; // 图块尺寸改小一点,动画效果更明显
// --- 图像URL (保持不变或替换) ---
let imageUrl = 'https://cdn.jsdelivr.net/gh/ytkz11/picture/imgs202504181019899.png';
// --- 动画状态变量 ---
let currentCol = 0;
let currentRow = 0;
let totalCols;
let totalRows;
let ...
使用Python和GDAL去除遥感影像黑边遥感影像常因传感器限制或预处理过程而在边缘区域出现黑色或无效像素。这些黑边通常表现为多个波段的负值或零值,会干扰后续的分析、建模或可视化工作。本文将介绍一个基于 Python 和 GDAL 库的脚本,用于处理遥感影像的边缘区域,将满足条件的负值像素置为零,仅针对指定宽度的边界区域进行操作,从而保留影像主体数据的完整性。
问题背景遥感影像(如卫星影像)在边缘区域常出现无效像素,这些像素在多个波段中可能表现为负值或零值。黑边不仅影响影像的美观,还可能导致统计分析偏差或机器学习模型性能下降。我们的目标是识别边界区域内至少有指定波段数量(如2个波段)为负值的像素,并将其在所有波段的值置为零,同时仅处理边缘区域,避免影响影像内部的有效数据。下图是一个含有边缘黑边的遥感影像。
解决方案本脚本使用 GDAL 处理地理空间数据,并结合 NumPy 进行高效的数组操作。它采用分块处理方式以应对大尺寸影像,仅针对边界区域(例如100像素宽)进行处理,并根据负值波段数量应用置零规则。主要功能包括:
分块处理:通过分块读取和处理影像,高效处理大尺寸数据。
边缘区域 ...
class PAM_Module(nn.Module):
"""Position Attention Module"""
def __init__(self, in_dim):
super(PAM_Module, self).__init__()
self.chanel_in = in_dim
self.query_conv = nn.Conv2d(in_channels=in_dim, out_channels=in_dim//8, kernel_size=1)
self.key_conv = nn.Conv2d(in_channels=in_dim, out_channels=in_dim//8, kernel_size=1)
self.value_conv = nn.Conv2d(in_channels=in_dim, out_channels=in_dim, kernel_size=1)
self.gamma = nn.Parameter(torch.zeros(1) ...
我最近读到了一篇技术从业者的内心独白,字里行间充满了迷茫、失望与自嘲。这篇文章让我感同身受,仿佛看到了自己深夜敲键盘时的影子。他提到的技术写作困境、行业停滞感,以及对社会现实的无奈,正是许多giser的心声。
AI时代的自我怀疑这些年,AI大模型彻底改变了我的工作方式。以前,写代码遇到不熟悉的API,我会花半天泡在搜索引擎里找答案;现在,直接问Grok或ChatGPT,代码示例分分钟到手。效率是高了,可我却开始怀疑:我那些费尽心思写的教程,还有存在的意义吗?就像方便面败给了外卖,技术流公众号的对手,竟成了AI。这念头让我苦笑,也有点凉意。
作为博主,我曾为分享一个遥感工具的使用技巧而兴奋,觉得能帮到同行就值了。可现在,AI的秒答让我觉得自己像个过时的解说员。更别提,一篇技术文章往往要花数小时查资料、捋逻辑,最后可能只有几个人点赞。这种投入与回报的落差,真的让人想“摆烂”。
但冷静下来,我想,技术写作的意义从不只是“教人用工具”。AI能给答案,却给不了我在GIS项目中踩过的坑、熬夜调试时的心路历程,或是对行业趋势的批判性思考。我也曾因思路不顺、怕文章没人看而放弃发布,但后来发现,写作不仅 ...
我的LeetCode算法题学习计划(每天1小时版)前言作为一个有一定Python基础的编程爱好者,我决定系统地刷LeetCode算法题,提升自己的算法思维和编码能力。目标是通过6-8周的努力,掌握常见数据结构和算法,能够熟练解决Easy和Medium题目,并尝试一些Hard题目。由于每天只有1小时学习时间,我需要更高效的计划。这篇博客记录了我的学习安排,包括每周目标、题目推荐和建议,方便自己回顾和调整。
当前日期:2025年4月9日预计完成时间:2025年5月底至6月初每日学习时间:1小时
学习目标
巩固Python在算法中的应用(如列表、字典、集合)。
掌握核心数据结构(数组、链表、树、图等)和算法(排序、搜索、DP等)。
刷80-100道LeetCode题目(40% Easy, 50% Medium, 10% Hard)。
培养解题思维,提升编码效率。
学习计划(6-8周)第1周:热身与基础巩固
目标: 熟悉LeetCode环境,巩固Python技能,刷简单题目。
任务:
用15分钟复习Python基础操作(列表、字典、集合)。
用45分钟刷1-2道Easy题。
题目推荐 ...
地理信息系统(GIS)这行,听起来高大上,实际上也确实有点“高处不胜寒”。作为一个从测绘专业毕业、如今写遥感开发代码的程序员,我算是踩过不少坑,也摸索出点门道。今天就跟大家聊聊GIS的“前景”和“钱景”,还有我自己是怎么在这行里找定位的,希望能给迷茫的兄弟姐妹们一点启发。
前景:技术很牛,机会不少GIS的前景,真的挺让人心动的。我大学学测绘的时候,天天跟地图、坐标打交道,后来转行写代码,发现GIS简直是技术爆炸的宝藏地。计算机视觉(CV)、遥感反演、分类识别,这些技术加持下,GIS能干的事越来越多。比如,我最近在搞一个遥感项目,用卫星影像监测山火,精度高到能看清哪片林子烧得最狠;还有城市交通优化,拿空间分析一算,堵车点立马暴露。这样的活儿,既有技术含量,又能实实在在解决问题,感觉自己是在“造福千万家”。
更别提现在GIS人才有多稀缺了。前景是真香,谁能啃下技术硬骨头,谁就能吃到肉。
钱景:门槛太高,钱不好赚但说到“钱景”,我得泼点冷水。GIS这行看着高大上,赚钱却没那么容易。高端市场基本被大佬垄断,像航天科工、华为这种,资金技术都硬得不行,小玩家根本挤不进去。我之前试着接过私活, ...