学习遥感编程要注意的一个地方是 :
gdal读取图像返回的矩阵,和python图像库读取图像返回的矩阵,二者格式大小是不一致的。
这也是我自己在学习遥感编程曾经混淆的一个知识点。
实践对比假设此时影像是一个3通道的图像。
使用gdal读取:
ds = gdal.Open(file)
if ds is None:
raise Exception("无法打开文件")
array = ds.ReadAsArray()
返回的矩阵array的大小为 (3,8082,5133)
python图像库一般有PIL和opencv
使用PIL读取:
from PIL import Image
import numpy as np
img = Image.open(file)
img_array = np.array(img)
使用PIL读取文件后,返回的是一个对象。此时要借助numpy把该对象转换为矩阵。
返回的矩阵img_array的大小为 (8082,5133,3)
使用opencv读取:
import cv2
img_cv2 = cv2.imread(file)
使用op ...
输入遥感影像的路径,生成对应的有效覆盖范围。
界面写得很简单,一共两个按钮。对应两种处理方式。
一个是单文件处理;第二个是批处理。
单文件处理测试:
点击第一个按钮。界面如下:
在处理完成后,会弹出窗口提示。
批量文件处理测试:
点击第2个按钮。要选择的文件夹必须包含tif文件,我选择的路径是D:\test
界面如下,选择好文件夹后,点击选择文件夹按钮:
在处理完成后,会弹出窗口提示。如下:
将结果放在QGIS展示,目测是否正确。
针对含孔洞的有效范围安装footprint后,打开footprint.py,只针对footprint_from_mask函数
定位到第85行,修改代码,如下:
修改前:
reprojected = reproject_geometry(
densified, source_crs, destination_crs, precision=precision
)
修改后:
reprojected = densified
二者区别在于 ,是否进行重投影。
所以 ,footprint_from_mask函数被修改为
def f ...
说起数组,不得不说numpy。
当然 ,如果你是使用其他的语言,如 C、C++或者matlab,数组的基本概念与编程语言无关。
因为我平常使用 python比较多,所以 就用numpy作为解释什么是图像。
NumPy 是一个 Python 库。
NumPy 用于处理数组。
NumPy 是“Numerical Python”的缩写。
NumPy 用于处理数组。NumPy 中的数组对象称为 ndarray。
0 维数组0 维数组或标量是数组中的元素。数组中的每个值都是 0 维数组。
这里我们可以把 0 维数组理解为图像中的像素点。
例子创建一个值为 10 的 0 维数组
import numpy as np
arr = np.array(10)
print(arr)
一维数组
以 0 维数组作为元素的数组称为 1 维数组。
这里我们可以把1 维数组理解为图像中的某一行或者某一列。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
二维数组
以一维数组作为元素的数组称为二维数组。
二维数组可以看为是单个通道(波段)的 ...
全球耕地数据集地址:
https://github.com/fiboa/data
List of datasets
Title
License
Provider
Austria
CC-BY-4.0
Agrarmarkt Austria
BRP Crop Field Boundaries for The Netherlands (CAP-based)
CC0-1.0
Denmark Crop Fields (Marker)
CC-0
Field boundaries for Belgium Wallonia
No conditions apply to access and use
Field boundaries for Cambodia and Vietnam (AI4SmallFarms)
CC-BY-4.0
Field boundaries for Catalonia, Spain
Open Information Use License - Catalonia
Field boundaries for Croatia
Public ...
全球耕地数据集地址:
https://github.com/fiboa/data
List of datasets
Title
License
Provider
Austria
CC-BY-4.0
Agrarmarkt Austria
BRP Crop Field Boundaries for The Netherlands (CAP-based)
CC0-1.0
Denmark Crop Fields (Marker)
CC-0
Field boundaries for Belgium Wallonia
No conditions apply to access and use
Field boundaries for Cambodia and Vietnam (AI4SmallFarms)
CC-BY-4.0
Field boundaries for Catalonia, Spain
Open Information Use License - Catalonia
Field boundaries for Croatia
Public ...
在地理信息系统 (GIS) 中,边界框 (Bounding Box) 是用来描述一个几何图形的最小矩形区域的。它可以简单地表示为两个坐标:左下角和右上角的点。在这篇文章中,我们将介绍如何使用 Python 的 geojson 库计算一个多边形的边界框。
代码实现下面是一段简单的 Python 代码,它接受一个坐标列表,计算出包含这些坐标的边界框,并返回一个表示这个边界框的字符串:
import os
def count_lines_in_files(directory):
total_lines = 0
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.py'):
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as f:
...
昇腾(Ascend)GPU 是华为的 AI 加速器系列,支持 NPU(Neural Processing Unit)计算。安装 PyTorch 需要使用华为官方的 CANN(Compute Architecture for Neural Networks)工具包,并通过 MindSpore 或 Ascend-PyTorch 适配器来支持。
如果未安装 CANN,请先安装:
1.从 华为开发者官网 下载 CANN 工具包(最新版本如 8.0.RC1)。
2.安装命令示例:
sudo dpkg -i Ascend-cann-toolkit_*.deb
sudo ./Ascend-cann-*.run --install
设置环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
安装 PyTorch for Ascend
华为提供官方 Ascend-PyTorch 仓库,支持 PyTorch 1.8 ~ 2.0+ 版本。推荐使用 pip 安装。
更新 pip:
pip install --upgrade pip setuptool ...
在地理信息系统 (GIS) 中,边界框 (Bounding Box) 是用来描述一个几何图形的最小矩形区域的。它可以简单地表示为两个坐标:左下角和右上角的点。在这篇文章中,我们将介绍如何使用 Python 的 geojson 库计算一个多边形的边界框。
代码实现下面是一段简单的 Python 代码,它接受一个坐标列表,计算出包含这些坐标的边界框,并返回一个表示这个边界框的字符串:
import geojson
def bbox(coord_list):
# 获取所有的x坐标和y坐标
xs, ys = zip(*coord_list)
# 计算最小最大值
min_x, max_x = min(xs), max(xs)
min_y, max_y = min(ys), max(ys)
# 返回边界框
return (min_x, min_y, max_x, max_y)
# 测试数据:一个简单的 GeoJSON 多边形
poly = geojson.Polygon([[
(2.38, 57.322),
(23.194 ...
在使用 OGR 和 GDAL 的 Python 绑定时,有时你可能会遇到一个奇怪的现象:同样的代码结构,在某些情况下正常运行,而在其他情况下却导致 Python 闪退崩溃。本文将解释这种现象的原因,并演示如何避免这种问题。
问题重现假设我们正在使用一个 shapefile 文件,并尝试从中提取几何图形信息:
from osgeo import ogr
shp_ds = ogr.Open(r'D:\gadm\France\gadm41_FRA_0.shp')
lyr = shp_ds.GetLayer(0)
lyr.GetFeature(0).GetGeometryRef().GetX() # 这一行可能导致崩溃
结果会发生闪退。
上面的代码在执行时可能导致 Python 闪退。通过修改代码,问题似乎得到解决:
from osgeo import ogr
shp_ds = ogr.Open(r'D:\gadm\France\gadm41_FRA_0.shp')
lyr = shp_ds.GetLayer(0)
feature = lyr.GetFeature(0)
featur ...
读研的时候,研究方法跟modis是不搭边的。工作后也没机会去使用modis。
modis的数据格式是hdf。
hdf文件和nc文件非常像,而我对nc格式的文件算是比较熟悉。
这么多年下来,我确实是没处理过modis。
modis的数据处理是不难的。
昨天看到一个留言说,怎么将modis影像保存为tif格式。
所以,今天的主题就是,讲解怎么将modis影像保存为tif格式。
代码#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/10/12 19:22
# @File : hdf2tif.py
'''
modis 数据 由hdf格式转换为tif格式
'''
from osgeo import gdal
import os
import glob
# gdal打开hdf数据集
def modishdf2tif(inpath, outpath = None):
os.chdir(inpath)
file_list = glob.glob("*.hdf")
for i in file_li ...







