之前写了
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格式 ...
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中很容易实现这个功能。但是怎么用代码实现呢?
代码把指定文件夹下的 所有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 ...
如题,这是现实中遇到的问题的简化版。
已知一个点的经纬度和离另一个点的球面距离,和无人机飞行时刻姿态角,求另一个点的经纬度。
姿态角首先,得了解什么是姿态角。
姿态角(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) # ...






