深度学习
未读神经网络是一种强大的计算模型,它能够学习并拟合复杂的数据模式,从图像和文本到音频和更多。神经网络通过以下步骤来拟合现实世界的数据:
1.数字化。把真实物理世界的内容用数值来表示。
2.定义网络结构。通过模拟神经元的形式,构造神经网络。如何定义一个神经网络的好坏一般是由结果说明(在学术上缺少数学公式证明)。
3.前向传播。数据在多维空间中的函数映射,生产初步预测。
4.计算损失。计算初步预测与真实结果的差异。
5.反向传播和优化。目标是通过迭代更新网络参数(权重和偏置),以最小化预测输出和实际目标之间的差异。
6.迭代训练。以上过程在多个训练周期(称为”epochs”)中反复进行,每个周期都会遍历整个训练数据集。每个周期结束后,网络的权重和偏置会被更新,以减少预测和真实值之间的差异。
数字化
在神经网络的世界里,数据预处理就像是准备一场精彩的音乐会。我们需要将原始的、无序的音符(现实世界的数据)经过一系列的处理和调整,才能演奏出一曲动听的乐章(有效的模型)。
首先,我们需要进行”特征提取”,这就像是挑选音乐会的曲目。比如在文本分类任务中,我们把文字的词频和语义信息提取出来,就像是挑选出最 ...
遥感影像通常具有极高的分辨率和大量的数据量,这就使得全景处理遥感影像成为一项极具挑战的任务。首要的问题是,大规模的遥感影像可能会超过硬件设备,特别是GPU的内存容量。其次,处理大规模遥感影像的计算复杂度非常高,可能会导致处理速度缓慢,效率低下。
在具体的应用中,例如深度学习的训练过程,我们通常需要将遥感影像切割成较小的样本,如512x512像素的图像块,以适应GPU的内存限制。这样的操作不仅可以有效地避免内存溢出,而且可以提高数据处理的速度,因为小图像块的处理速度通常比大图像快。
为了实现这样的分块处理,我们通常会采用双重循环的方式。首先,外层循环负责遍历图像的行,然后内层循环遍历每一行的列。这样,我们就可以逐块地访问和处理图像,而不需要一次性加载整个图像到内存中。这种方法既节省了硬件资源,又提高了数据处理的效率,对于处理大规模的遥感影像具有非常重要的意义。
代码解析分块处理的核心部分如下:
# 遍历输入文件的每一个块
for x in range(0, xsize, block_ysize):
if x + block_xsize < xsize:
co ...
在地理信息系统(GIS)和遥感中,数字高程模型(Digital Elevation Model,简称DEM)是一种表示
地表或地形高程信息的重要数据。DEM数据通常以栅格(raster)形式存在,其中每个像素的值表示相
应地理位置的高程。
之前介绍了如何进行6S大气校正,其中有一段代码是自动获取DEM的高度。
原理及过程是,输入参数分别是经纬度、DEM文件。输入参数是高度。
先把DEM文件读取为栅格,再把经纬度转换为行列号,根据行列号定位到DEM栅格,读取该栅格的数值,返回数据。
代码解析以下是我们的Python函数:
def fromDemFileGetHeight(dem, lon, lat):
try:
DEMIDataSet = gdal.Open(dem)
except Exception as e:
print('Missing DEM file')
pass
DEMBand = DEMIDataSet.GetRasterBand(1)
geotransform = DEMIDataSet.G ...
之前写了
1.矢量裁剪栅格
2.矢量裁剪矢量
其实还有另一种裁剪数据的类型,那就是矢量裁剪NetCDF,下面简称为NC数据。
常见的NC数据,就我个人遇到的情况来说,有以下几个:
1.美国的jason3海洋数据
2.中国的风云三号、风云四号气象数据
3.欧空局的哨兵3海洋数据、哨兵5气象数据
还有很多,只是我还没遇到,暂时不写。
通俗地来说,nc数据与tif数据对比,nc的特点是多维的。
一个nc文件可能包含了一份30天的海洋温度数据和60天的海洋高度数据,每一天的海洋温度数据的大小为1000x1000,每一天的海洋高度数据的大小为2000x2000。所以,这份nc文件就是30x1000x1000和60x2000x2000的数据的集合。
tif文件一般是固定大小,即第一个波段的大小与其他波段的大小是保持一致。如果要把上面的数据保存为tif,此时,tif的大小就变成了90x2000x2000。
如果要用tif格式去保存这种形式的数据,会使数据量提高,所以nc格式一般是被视为高效率存储的格式。
除此之外,nc的复杂性与文件内部的不统一性也是处理nc数据的难点。我就觉得是nc文件内部的数据 ...
水深测量数据,算是一种遥感数据,只是与平常的航天航空影像数据数据的格式、形式不一样。
这是最常用的水深测量方法,特别是在大型水体(如海洋和大湖)中。声纳(SONAR)是一种利用声波在水中传播和反射的技术,通过发送声波并测量其返回时间来计算水深。多普勒效应可以用来测量海底的粗糙度和其它特性。这种方法可以生成大面积的高分辨率水深图。
这次,展示水深测量数据的一般处理过程。
数据的格式和特点本项目处理的数据是XYZ格式的地形数据。XYZ格式是一种常见的地理数据格式,其中每一行包含一个点的X、Y和Z坐标。在地形数据中,X和Y通常代表地理坐标(例如经度和纬度),Z代表地形高度或深度。
XYZ格式的特点包括:
简单:每行包含一个数据点,每个数据点包含三个字段(X、Y和Z)。
灵活:可以表示任何三维空间的数据点。
通用:被许多地理信息系统(GIS)和数据处理工具所支持。
然而,XYZ格式的一个缺点是它不直接支持网格数据。在许多应用中,我们需要将散点数据转换为规则的网格,以便进行进一步的分析和可视化。这就是本项目的目的。
数据处理过程我们的任务是将XYZ格式的地形数据转换为ASCIIGrid格式 ...
什么是GIS面合并GIS(地理信息系统)中的面合并是一个处理地理空间数据的常见操作。它涉及到将两个或者更多的相邻或者重叠的多边形(也被称为“面”)合并为一个单一的多边形。这个操作通常在处理地理数据时用来简化数据集,例如将多个相邻的行政区域合并为一个更大的区域,或者将多个重叠的地理特征合并为一个连续的特征。
在arcgis中很容易实现这个功能。但是怎么用代码实现呢?
代码把指定文件夹下的 所有shapefile进行面合并
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import geopandas as gpd
import glob
# 指定文件夹路径
folder_path = '/path/to/your/folder/'
# 查找文件夹下的所有shapefile
shapefiles = glob.glob(folder_path + '*.shp')
# 读取并合并所有shapefile
gdf = gpd.GeoDataFrame(pd.concat([gpd.read_file(shp) for shp in shap ...
什么是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 ...
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, ...
如题,这是现实中遇到的问题的简化版。
已知一个点的经纬度和离另一个点的球面距离,和无人机飞行时刻姿态角,求另一个点的经纬度。
姿态角首先,得了解什么是姿态角。
姿态角(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 ...