import numpy as np
from osgeo import gdal
from osgeo import gdal_array
from osgeo import osr
import matplotlib.pylab as plt
# 定义一个二维数组,表示图像数据
array = np.array(( (0.1, 0.2, 0.3, 0.4),
(0.2, 0.3, 0.4, 0.5),
(0.3, 0.4, 0.5, 0.6),
(0.4, 0.5, 0.6, 0.7),
(0.5, 0.6, 0.7, 0.8) ))
# 定义两个二维数组,分别表示每个像素的纬度和经度
lat = np.array(( (10.0, 10.0, 10.0, 10.0),
( 9.5, 9.5, 9.5, 9.5),
( 9.0, 9.0, 9.0, ...
什么是GIS渔网在GIS里,渔网格是一种常见的地理空间数据分析和可视化工具,它可以将地理空间数据划分为规则的网格,便于进行进一步的统计和分析。
在arcgis中很容易实现这个功能。
在搜索框搜索“fishnet”,如果你的版本是中文,则搜索‘’渔网‘。
然后在’创建渔网的界面‘,输入范围文件,然后设置分割渔网的参数。
在arcgis中很容易实现这个功能。但是怎么用代码实现呢?
代码#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/3/17 9:13
# @File : create_fishnet.py
# 创建渔网
from osgeo import ogr
import os
def create_fishnet(input_vector_file, output_grid_file, grid_size=10):
# 打开矢量文件
input_source = ogr.Open(input_vector_file)
input_layer = input_source.Ge ...
如题,这是现实中遇到的问题的简化版。
已知一个点的经纬度和离另一个点的球面距离,和无人机飞行时刻姿态角,求另一个点的经纬度。
姿态角首先,得了解什么是姿态角。
姿态角(Attitude angles):这是一个用于描述物体在空间中的方向和姿态的一组三个角度,通常包括滚动角(Roll)、俯仰角(Pitch)和偏航角(Yaw)。
俯仰角:围绕物体的前后轴线(通常被称为X轴)旋转的角度。
偏航角:围绕物体的左右轴线(通常被称为Y轴)旋转的角度。
滚动角:围绕物体的上下轴线(通常被称为Z轴)旋转的角度。
下面三张动图形象的表示了欧拉角的旋转方式。第一张是绕x轴旋转pitch,第二张绕y轴旋转yaw,第三张是绕z轴旋转roll。
简言之,pitch是俯仰角,是“点头“
yaw是偏航角,是‘摇头’
roll是旋转角,是“翻滚”
这里我们要用到的是姿态角中的偏航角。
代码无人机从一个已知的经纬度(lat1, lon1)飞行一定的球面距离(d)后,假设飞行方向由偏航角(yaw)决定,得出的目标点的经纬度(lat2, lon2)。请看以下代码。
import math
def comp ...
这里实现的是遥感影像匀色的功能——直方图匹配。
直方图匹配是一种用于图像处理的技术,它可以用来调整一幅图像的颜色或灰度分布,使其与另一幅图像的颜色或灰度分布相匹配。这种技术常常用于图像增强,例如改善图像的对比度或者进行颜色校正。
首先,让我们解释一下什么是直方图。在图像处理中,直方图是一个表,它显示了图像中各个颜色或灰度级别的像素数量。例如,一个灰度图像的直方图可能会显示有多少个像素是黑色的,有多少个像素是灰色的,有多少个像素是白色的,等等。
直方图匹配的过程大致如下:
计算两幅图像的直方图。这给了我们每幅图像的颜色或灰度分布。
计算两个直方图的累积分布函数(CDF)。CDF表示的是图像中小于或等于某个颜色或灰度级别的像素的累积比例。
对于原始图像中的每个像素,找到与其灰度级别相匹配的目标图像的灰度级别。这就是通过查找具有最接近CDF值的目标图像的灰度级别来完成的。
将原始图像中的每个像素替换为匹配的灰度级别。
通过这种方式,我们可以调整原始图像的颜色或灰度分布,使其看起来更像目标图像。
代码import numpy as np
import matplotlib.pyplot a ...
神经网络是一种强大的计算模型,它能够学习并拟合复杂的数据模式,从图像和文本到音频和更多。神经网络通过以下步骤来拟合现实世界的数据:
1.数字化。把真实物理世界的内容用数值来表示。
2.定义网络结构。通过模拟神经元的形式,构造神经网络。如何定义一个神经网络的好坏一般是由结果说明(在学术上缺少数学公式证明)。
3.前向传播。数据在多维空间中的函数映射,生产初步预测。
4.计算损失。计算初步预测与真实结果的差异。
5.反向传播和优化。目标是通过迭代更新网络参数(权重和偏置),以最小化预测输出和实际目标之间的差异。
6.迭代训练。以上过程在多个训练周期(称为”epochs”)中反复进行,每个周期都会遍历整个训练数据集。每个周期结束后,网络的权重和偏置会被更新,以减少预测和真实值之间的差异。
数字化
在神经网络的世界里,数据预处理就像是准备一场精彩的音乐会。我们需要将原始的、无序的音符(现实世界的数据)经过一系列的处理和调整,才能演奏出一曲动听的乐章(有效的模型)。
首先,我们需要进行”特征提取”,这就像是挑选音乐会的曲目。比如在文本分类任务中,我们把文字的词频和语义信息提取出来,就像是挑选出最 ...
LeNet是最早的卷积神经网络之一,其被提出用于识别手写数字和机器印刷字符。 1998年,Yann LeCun第一次将LeNet卷积神经网络应用到图像分类上,在手写数字识别任务中取得了巨大成功。
现代的神经网络模型,包括深度学习模型,其底层的数学原理与LeNet等早期的神经网络模型是一致的。这些基础原理包括卷积、池化、激活函数、反向传播等。
PyTorch等深度学习框架对这些底层库进行了高级的封装,使得我们可以通过调用API来快速、简便地实现这些操作,而不需要关心底层的具体实现。这极大地提高了我们开发和实现深度学习模型的效率。
然而,尽管我们可以通过调用API来实现各种操作,但是我们仍然需要理解和掌握如何搭建网络模型的结构。这包括如何选择合适的网络结构,如何设置各层的参数,如何设计损失函数和优化策略等。这些都是实现一个有效的神经网络模型所必需的知识和技能。
LeNet结构LeNet的基本结构包括两个卷积层,两个池化层(下采样层),以及两个全连接层。它的结构可以简单地表示为:输入 - 卷积 - 池化 - 卷积 - 池化 - 全连接 - 全连接 - 输出。
LeNet的设计哲学在今天的深度 ...
在地理信息系统(GIS)中,根据一个矢量范围去裁剪另一个矢量范围是一种常见的操作。这个操作的基本步骤如下:
加载矢量数据:首先,你需要加载你的矢量数据。在Python中,你可以使用GDAL/OGR库来加载矢量数据。加载矢量数据后,你可以获取到数据的各种属性,如几何形状、属性字段等。
设置裁剪范围:设置裁剪范围,也就是你想要保留的区域。你可以根据你的需求来设置裁剪范围,例如,你可能只对研究区域内的数据感兴趣。
裁剪数据:使用裁剪范围去裁剪你的矢量数据。在这个步骤中,所有在裁剪范围外的数据都会被删除。
保存结果:裁剪完成后,你可以保存你的结果。你可以选择保存为各种格式的矢量数据文件,如Shapefile、GeoJSON等。
代码from osgeo import gdal, ogr
# 打开裁剪范围矢量文件
clip_shp = ogr.Open('clip_shapefile.shp')
clip_layer = clip_shp.GetLayer()
# 打开被裁剪的矢量文件
target_shp = ogr.Open('target_shapefile.shp', 1) # ...
python
未读报错UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 1022-1023: unexpected end of data
报错信息内容翻译如下所示:
编码解码错误:“utf-8”编解码器无法解码位置1022-1023中的字节:数据意外结束
解决
点击报错的地方,跳转定位到报错的代码。
把这一行代码改成
r = r.decode('utf-8','ignore')
位深位深(Bit Depth)是指数字图像中每个像素用于记录颜色信息的位数。位深越高,可用于表示颜色的信息就越丰富,图像的颜色就越真实且细腻。然而,位深越高,图像文件的大小也就越大。
在数字图像中,常见的位深有8位、16位、24位和32位等。下面我们来看一下8位和16位位深的区别:
8位位深:每个像素用8位(即1字节)来记录颜色信息。在灰度图像中,8位位深可以表示256(即$2^8)种不同的灰度等级。在彩色图像中,通常每种颜色(红、绿、蓝)都用8位来记录,因此可以表示256^3(即16777216)种不同的颜色。
16位位深:每个像素用16位(即2字节)来记录颜色信息。在灰度图像中,16位位深可以表示65536(即$2^{16})种不同的灰度等级。在彩色图像中,通常每种颜色(红、绿、蓝)都用16位来记录,因此可以表示65536^3种不同的颜色。
从这里可以看出,16位位深的图像比8位位深的图像有更丰富的颜色信息,能更精细地表示图像的颜色变化。然而,16位位深的图像文件的大小也会比8位位深的图像文件大一倍。
遥感影像大多数未拉伸前,一般为10\14\16bit。
为什么要做在深度学习 ...
从一个大的 TIFF 图像文件中裁剪出一个小的区域,并将该区域保存为新的 TIFF 文件。这个过程通常被称为 “region of interest” (ROI) 裁剪。
在arcgis可以实现这个功能,但是如何使用代码去实现?
代码代码短,实现了ROI裁剪影像。
from osgeo import gdal
import os
import numpy as np
from tqdm import tqdm
def saveTif(data, cols, rows, band_num, driver, proj, geoTransform, filename):
'''
@todo 保存tif文件
@param data: 数据
@param cols: 列
@param rows: 行
@param driver: 驱动
@param proj: 坐标系
@param geoTransform: 坐标转换
@param filename: 文件名
@return:
'''
out ...