![](https://img-blog.csdnimg.cn/20210830163531241.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
遥感开发学习
文章平均质量分 68
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。由于GDAL库支持很多的数据格式,目前几乎所有的GIS和RS软件底层都使用GDAL来读写空间数据。
去往火星
这个作者很懒,什么都没留下…
展开
-
一种特殊的NC文件转TIF——知道每个像元的坐标值怎么转为TIF
【代码】一种特殊的NC文件转TIF——知道每个像元的坐标值怎么转为TIF。原创 2024-07-16 12:22:25 · 123 阅读 · 0 评论 -
NetCDF(nc)数据读写与转换为GeoTIFF方法的详细介绍
栅格数据是根据一定规则将地理空间分割成有规律且大小相同的网格,每一个网格称为一个像元,并在各像元上赋予相应的属性值来表示实体的一种数据形式。每一个像元的位置由它的行列号定义,所表示的实体位置隐含在栅格行列位置中。每个栅格像元都有一个值,代表由其行列数所决定的该位置上的实体的某一特征,如果像元在栅格数据所表示的实体的范围之外,则其像元值为no data或null。栅格数据可能包含多个波段,各个波段具有相同的行列数,反映同一范围下实体在不同方面的信息。在栅格结构中,点用一个栅格像元表示;原创 2024-07-16 12:16:44 · 720 阅读 · 0 评论 -
遥感分类产品精度验证之TIF验证TIF
加载数据并按研究区裁剪,目的是不让背景值影响计算,并将tif转为2分类,最后调用sklearn计算混淆矩阵。所用到的包:(我嫌geopandas安装太麻烦colab做的。展示混淆矩阵与对比图,结果如下图所示。计算精度指标与保存对比图。原创 2024-07-08 19:09:49 · 427 阅读 · 0 评论 -
GIS 已知当前经纬度,往东移动一公里,怎么计算移动后的经纬度
【代码】GIS 已知当前经纬度,往东移动一公里,怎么计算移动后的经纬度。原创 2024-06-28 12:05:17 · 121 阅读 · 0 评论 -
格网DEM生成不规则三角网TIN
在GIS(地理信息科学)中,地形有两种表达方式,一种是格网DEM,一种是不规则三角网TIN。一般情况下规则格网DEM用的比较多,因为可以将高程当作像素,将其存储为图片类型的数据(例如.tif)。但是规则格网存储的数据量大,按规则取点,并不能最大程度的保证地形特征,所以很多情况下需要将其表达为不规则三角网,也就是TIN。原创 2024-05-08 10:54:37 · 832 阅读 · 0 评论 -
VTK(Activiz)场景应用:将离散点构建三角网、等值线、颜色渲染、等值线值标注
*中间数据:**离散点三角剖分拓扑关系(即哪几个点构成了哪一个三角形),常用数据组成为(三角形序号,点1序号,点2序号,点3序号)的渲染,即一个区域由一堆点元控制,每个点元(结点)有一个数据属性,例如一口井的水位值、一座烟囱的排放量…**必备数据:**离散点数据(X1,Y1,Z1)、(X2,Y2,Z2)、(X3,Y3,Z3)…看作一个标量单位,适用于对。原创 2024-04-28 10:30:53 · 1289 阅读 · 0 评论 -
绘制等值线地图——以气压等压线为例(Python版)
在conda完成安装后在anaconda prompt输入如下指令配置本次使用的一些Python库。查看气压属性数据slp_values的数组维度信息。完成windows系统上conda的安装。原创 2024-04-26 17:32:31 · 600 阅读 · 0 评论 -
Ubuntu 安装 GDAL C++库
新版本需要安装PROJ依赖库,PROJ又依赖sqlite3和libtiff4,依次安装即可。具体情况可能不同,不过可以从GDAL开始安装,根据提示逐渐安装相应的包即可。),在/usr/local/lib文件夹中产生5个库文件,其中libgdal.a和libgdal.la为静态链接库,libgdal.so等为动态链接库。下载的是proj-8.0.0.tar.gz,最新版的解压后没有configure文件,就挑选了proj-8.0.0.tar.gz。我采用的是直接命令安装,安装后,输入命令。原创 2024-04-20 10:29:32 · 919 阅读 · 0 评论 -
Proj 理空间坐标转换库安装及c++引用该库(linux系统)
坐标时,做一些坐标计算,如果直接使用GPS坐标会导致精度下降,或是不适用计算模型,这时候就需要将GPS坐标转化为平面坐标。在安装过程中如果遇到问题可以联系我,一般问题都是版本没有对应好。,该链接里有跳转proj主页的连接,上面有相关。原创 2024-04-20 00:02:59 · 475 阅读 · 0 评论 -
麒麟系统安装netcdf库教程
由于项目中需要解析,而解析nc遥感影像, 就需要安装netcdf4库这里简单记录下安装过程。麒麟桌面系统V10在网站里下载zlib-1.3.1。原创 2024-04-18 14:58:21 · 1071 阅读 · 3 评论 -
netcdf4 读取 nc遥感影像的所有变量
【代码】netcdf4 读取 nc遥感影像的所有变量。原创 2024-04-19 18:15:53 · 143 阅读 · 0 评论 -
NetCDF(nc)读写与格式转换介绍
由于栅格结构是按照一定的规则排列的,因此其所表示实体的位置很容易隐含在网格文件的存储结构中,每个存储单元的行列位置可以根据其在文件中的记录位置得到,而行列坐标可以很容易地转换成任意坐标系下的坐标。在NetCDF的基础上,随着软硬件和应用场景的变化,逐渐发展出了多个版本,不同版本的文件格式各有不同。公约,其目的是要求符合要求的数据集包含足够的元数据,这些元数据是自描述的,即文件中的每个变量都有对其所表示内容的相关描述,包括物理单位(如果适用),并且每个值可以位于空间(相对于基于地球的坐标)和时间中。原创 2024-04-19 18:11:09 · 2713 阅读 · 0 评论 -
vs2013+NetCDF4.4.2一维数据读取
仔细观察的数据对吗,数据貌似和表格中的有点出入,但出入不大,这是因为表格中存储的都是小数点后保留一位,而我们读取的是保留小数点后两位,仔细看数据图表格头上的数据。(数据中显示的小数点后几位是可以调节的,和你打开使用的工具有关系)说明:由于自己目前正在学习NC文件的读取与写入并不是擅长难免有错,这里只是自己的一点思路,希望能帮助刚开始学习的人。后续自己会把自己的一些心得分享出来。测试的是读取一维经度是的数据,该数据个数总共有241个。环境:win7+vs2013+NetCDF4.4.2。原创 2024-04-19 16:32:12 · 218 阅读 · 0 评论 -
vs2013+NetCDF二维数据的读取方法
说明:根据自己的实际情况请参考使用,更多问题请参考博客中的其他文章。环境:win7+vs2013+NetCDF4.4.2。原创 2024-04-19 16:31:12 · 168 阅读 · 0 评论 -
vs2013+NetCDF三维数据的读取方法
说明:根据自己的实际情况请参考使用,更多问题请参考博客中的其他文章。480个,我这里的120指的是时间索引数,241和480指经纬度。本文为博主原创文章,未经博主允许请勿转载!作者:ISmileLi。环境:win7+vs2013+NetCDF4.4.2。测试的是读取三维经度是的数据,该数据个数总共有120。2、scale_factor:缩放因子。5、missing_value:无效值。3、add_offset:截距值。4、_FillValue:填充值。1、时间、经度、纬度个数。6、units:温度单位。原创 2024-04-19 16:30:21 · 317 阅读 · 0 评论 -
netcdf库读取nc格式文件中的字符串类型的数据
这两天解析数据需要解析nc格式的文件,时间是字符串类型的,最开始还以为这个数据有问题呢,使用panoply打不开该时间格式的文件,于是就确定应该是panoply的支持不好,后来使用HDFView打开了。(正是:踏破铁鞋无觅处,得来全不费工夫!数据可以使用panoply和HDFView打开查看。原创 2024-04-19 15:10:43 · 228 阅读 · 0 评论 -
NetCDF 读取NC文件 判断变量属性是否存在
读取之前,先判断变量/属性是否存在,没有直接的判断函数,通过读取所有的属性/变量到内存中,然后再判断。问题:直接读取不存在的变量或属性,程序崩溃。版本:NetCDF-C 4.2。原创 2024-04-17 16:00:32 · 145 阅读 · 0 评论 -
Qt 基于NetCDF-CXX4 转存写NC文件
从一个NC文件读取内容,转存到另外一个NC文件。原创 2024-04-17 15:59:45 · 102 阅读 · 0 评论 -
[c++][netcdf]通过c\c++读取字段的scale_factor与add_offset
【代码】[c++][netcdf]通过c\c++读取字段的scale_factor与add_offset。原创 2024-04-17 15:14:45 · 363 阅读 · 2 评论 -
用Qt+NetCDF 读取NC文件
基于NetCDF-CXX4 封装,对NC文件进行读取,读取内存放到。原创 2024-04-17 15:02:58 · 333 阅读 · 0 评论 -
基于C++中netCDF库读取.nc数据时的一些坑
本文介绍基于C++ 语言的netCDF库读取.nc格式的栅格文件时,出现数据无法读取、数据读取错误、无法依据维度提取变量等情况的原因与解决方法。最近,由于需要读取ERA5气象数据,因此使用C++语言中的netCDF库读取.nc格式文件;这其中也是踩了很多的坑,所以在此记录一下,也相当于是汇总了C++ 的netCDF库读取.nc文件时的一些常见问题。原创 2024-04-16 15:15:07 · 1089 阅读 · 0 评论 -
C++读取NC数据的结果与真实数值不一致的解决方法
其中,偶然发现在Visual Studio的代码中读取到的.nc文件的数据,和其实际的数据(ArcMap等软件打开所显示的数据)不一致;那么,我们就可以将这个scale_factor和add_offset,分别作用到我们读取得到的原始数据上(因为我这里.nc格式数据的数据量非常大,所以我们就只处理前100个),来看看其数值是否正确;可以看到,此时上图中所显示的数据,就和上上图中,我们在Visual Studio的代码中读取到的.nc文件的数据是一致的了。可以看到,此时得到的结果,就符合实际了;原创 2024-04-16 15:08:02 · 781 阅读 · 0 评论 -
在Visual Studio配置C++的netCDF库的方法
如果出现如下图所示的情况,提示This function or variable may be unsafe类似的报错,那么可以看到,这个报错给出了一个字段——在我这里就是_CRT_SECURE_NO_WARNINGS这个字段。如果项目里有关netCDF库的代码可以成功运行(如果大家此时还没有写完用到netCDF库的代码,那么可以用本文末尾给出的简单的测试代码),那么就大功告成了。安装过程中,主要注意以下几个界面的设置即可——首先,如下图所示,选择第二项,即。结尾的代码文件放入,得到的结果如下图所示。原创 2024-04-16 14:55:51 · 1158 阅读 · 0 评论 -
gdal3.0以后更新引起的坐标转换的问题
在GDAL 3.0之前 OGRSpatialReference 类不遵守由定义CRS的机构强制的轴顺序,因此当顺序是纬度第一、经度第二时,从WKT字符串中剥离轴顺序信息。使用ogrcoordinateransformation类的坐标转换还假定该类的Transform()方法传递或返回的地理坐标使用经度、纬度顺序。为了帮助从仍然使用经度、纬度顺序坐标的代码基迁移,可以将元数据信息附加到OGRSpatialReference实例,以指定为了进行坐标转换,有效传递或返回的值的顺序将是经度、纬度。原创 2024-04-12 12:17:34 · 846 阅读 · 0 评论 -
关于GDAL计算图像坐标的几个问题
比如第一个,如何计算图像的四至范围,图像的四至范围从图1中可以看出,图像的四至其实就是图像左上角坐标和右下角的坐标为起来的矩形区域,那么就分别将左上角和右下角的行列号按照上面的公式进行转换即可得到四至范围;对于一个普通的标准图像来说(这里的标准图像是指GT(2)和GT(4)都为0),如图1所示,图像的行列号坐标为XOY,每个网格代表一个图像像素区域,i表示列号,j表示行号,淡蓝色右下角的行列坐标为(i,j),图中红色方块纵向长度为dy,横向长度为dx,分别为图像的分辨率;2:如何获取图像的四至范围?原创 2024-04-11 22:45:32 · 985 阅读 · 0 评论 -
【GDAL】找不到proj.db问题解决
GDAL是一个开源的地理空间数据处理库,它提供了许多用于读取、写入和转换各种地理空间数据格式的功能。大家根据自己的实际情况修改,目录名不一定非得是 proj4,也可能是 proj6 或 proj7。代码的第一行,需要我们找到包含proj.db文件的目录,并将这个目录的路径赋值给 path。,因为程序是要给用户使用的,而且不需要去修改用户的系统环境变量,会更好用。path的路径是可以根据项目需求进行修改的,我这里写死了,大家可以修改。从上图可以看到,在这个路径下,包含我们需要的 proj.db。原创 2024-04-11 15:48:00 · 834 阅读 · 0 评论 -
使用GDAL进行影像投影坐标、地理坐标、图上坐标的转换
其中参数-geoloc表示的后面给定坐标是投影坐标,-wgs84表示是WGS84参考系下的地理坐标(经纬度)。其输出是对应的图上坐标(行列号)。具体参数可以使用gdallocationinfo –help查看。四个函数分别进行投影坐标与地理坐标(经纬度)之间的转换,投影坐标和图上坐标(行列号)之间的转换。我们可以使用GDAL库自带的。,其实质就是一个仿射变换。原创 2024-04-11 13:54:31 · 449 阅读 · 0 评论 -
GDAL开发:地理坐标与投影坐标的转换
最近运用到QGis的开发,通过gdal库(操作各种栅格地理数据格式的库)解析shp文件得到想要的地理数据,开发过程中,想得到某段道路的折线长度,网上找很多资料都没有类似的代码示例(主要是讲解地理坐标和投影坐标的定义,很清晰、易理解,但没有找到自己想要的示例代码)。需要得到投影坐标对应的坐标参考系如图:WGS 84/UTM zone 50N, 选择坐标系过程中需要一一对应,如果不对图层覆盖范围是不对的。查询发现,发现好像没有可以直接获取椭球体的长度接口,因此获取的点坐标需要进行转换,转换代码很简单。原创 2024-04-11 13:52:20 · 183 阅读 · 0 评论 -
基于GDAL的地理坐标与投影坐标互转
在地理数据处理过程中,往往需要进行坐标之间的转换,地理坐标与投影坐标之间的转换是最常见的需求。然而由于在坐标转换时涉及过多参数,处理方式较为复杂,如何通过C++快速实现坐标转换成为亟需解决的难题。GDAL是处理地理数据的高效开源库,支持C++、Python等多种语言,可实现绝大部分数据处理需求,因此本人采用C++语言基于GDAL库进行坐标转化处理。我们发现,只需更新函数中的两个参数即可实现地理坐标与投影坐标互转,该方法更为简单快速!地理坐标——>投影坐标。投影坐标——>地理坐标。原创 2024-04-11 13:49:22 · 477 阅读 · 0 评论 -
C/C++ 实现 WGS84 经纬度(Longitude & Latitude)与 UTM 通用横轴墨卡托投影坐标系(XY, Easting & Northing)的转换
本文要解决的是如何将定位方案(例如组合导航)返回的经纬度信息转换为用 XY 表示的平面坐标,从而更加直观地描述位置与位置变化,且保持较高的精度。原创 2024-04-11 13:31:43 · 1479 阅读 · 0 评论 -
Proj4 坐标转换(以北京54坐标转WGS84投影坐标系为例)
【代码】Proj4 坐标转换(以北京54坐标转WGS84投影坐标系为例)原创 2024-04-11 13:24:42 · 308 阅读 · 0 评论 -
创建大量栅格文件并分别写入像元数据:C++ GDAL代码实现
中遍历(虽然我们这里是需要建立新的栅格文件,但由于我这里新的栅格文件的命名规则是与原有的栅格文件一致的,所以就还是从原有的文件列表中遍历),函数新建栅格文件时,新的栅格文件的各项属性,比如行数、列数、像元大小、坐标信息等,都直接与这个模板栅格文件保持一致。而随后,就需要对我们处理后的栅格数据再进行输出,即建立新的大量的栅格遥感影像,并将我们处理后的像元数据依次输入进去。库中栅格文件的创建,但此时还没有将数据导入进去,因此在资源管理器中也是看不到具体的新的栅格文件的。首先,我们来明确一下本文所需实现的需求。原创 2024-04-10 18:01:28 · 387 阅读 · 0 评论 -
C++ GDAL提取多时相遥感影像中像素随时间变化的数值数组
这一部分主要是代码的头文件命名空间与我们自行撰写的自定义函数的声明;具体代码如下所示。其中,由于我们在接下来的代码中需要用到容器vector这一数据类型,因此首先需要添加;同时,我们在接下来的代码中需要用到头文件io.h中的部分函数(主要都是一些与计算机系统、文件管理相关的函数),因此需要添加;此外,我们是基于GDAL库来实现栅格数据读取的,因此需要添加。接下来,这里声明了一个自定义函数,具体我们在本文1.2部分介绍。这一部分是我们的自定义函数。= -1)do。原创 2024-04-10 18:00:09 · 989 阅读 · 0 评论 -
遥感影像为什么需要分块处理
在具体的应用中,例如深度学习的训练过程,我们通常需要将遥感影像切割成较小的样本,如512x512像素的图像块,以适应GPU的内存限制。这个函数的参数是块的左上角坐标(x,y)和块的大小(cols,rows),返回的是一个二维数组,包含了块内的所有像素值。对于每个垂直条带,如果条带的右边界超过了图像的宽度,那么就将条带的宽度设置为从当前位置到图像右边界的距离,否则就使用。对于每个块,如果块的下边界超过了图像的高度,那么就将块的高度设置为从当前位置到图像下边界的距离,否则就使用。其实是有的,比如,请看下图。原创 2024-04-09 18:24:02 · 901 阅读 · 0 评论 -
(Python)根据经纬度从数字高程模型(DEM)文件获取高度
在地理信息系统(GIS)和遥感中,数字高程模型(Digital Elevation Model,简称DEM)是一种表示地表或地形高程信息的重要数据。DEM数据通常以栅格(raster)形式存在,其中每个像素的值表示相应地理位置的高程。之前介绍了如何进行6S大气校正,其中有一段代码是自动获取DEM的高度。原理及过程是,输入参数分别是经纬度、DEM文件。输入参数是高度。先把DEM文件读取为栅格,再把经纬度转换为行列号,根据行列号定位到DEM栅格,读取该栅格的数值,返回数据。原创 2024-04-09 18:19:36 · 736 阅读 · 2 评论 -
C++版本GDAL3.5无法找到proj.db文件
添加变量:PROJ_LIB,系统环境值:C:\Program Files\PROJ\share\proj。方法二、使用OSRSetPROJSearchPaths()加载proj.db文件.方法一、设置proj环境环境变量,将proj.db文件添加至系统环境中;重启或者打开cmd,更新路径,设置PATH=“”即可;问题:C++版本的GDAL无法找到proj.db文件。其中proj.db文件放在exe文件下面。原创 2024-04-08 10:48:09 · 350 阅读 · 0 评论 -
GDAL升级到3.0之后遇到的坑
空间参考定义由于GDAL3.0以后的版本依赖的PROJ库必须是6.0+的版本,而且是必须依赖,不像以前的版本proj库可以动态加载,在编译GDAL是不需要PROJ库也可以,但是3.0以后的版本就不行了,编译GDAL的时候必须要有PROJ6.0以上的版本才可以。这样就会引入一个问题,由于PROJ6里面需要proj.db数据库的支持,这样的话,在GDAL库使用的话也需要proj.db的支持,否则定义空间参考时会报错。原创 2024-04-04 21:08:46 · 616 阅读 · 0 评论 -
GDAL源码剖析(十三)之GDAL网格插值说明
英文网址:http://www.gdal.org/grid_tutorial.html。网格插值的意思就是从离散的数据点创建一个栅格图像的过程。通常情况下,你有一系列研究区域的离散点,如果你想将这些点转换为规则的网格数据来进行进一步的处理,或者和其他网格数据进行合并等处理。下图是网格插值的一个示意图:网格插值示意图使用数据插值和逼近算法可以用来解决这个问题,但是插值的作用并不仅仅用来处理这个问题。有时候,你并不需要对数据进行插值处理,你需要做的就是计算一下数据覆盖区域的统计值和其他指标。原创 2024-04-04 11:33:58 · 815 阅读 · 0 评论 -
GDAL源码剖析(十二)之GDAL Warp API使用说明
本文原文地址:http://www.gdal.org/warptut.htmlGDAL Warp API(在文件gdalwarper.h中定义)是一个高效的进行图像变换的接口。主要由几何变换函数(GDALTransformerFunc),多种图像重采样方式,掩码操作选项等组成。这个接口可以对很大的图像进行处理。下面说明示例让你如何在程序中使用变换API。首先假定你已经熟悉了GDAL的抽象数据模型,以及GDAL的API。原创 2024-04-04 11:30:36 · 955 阅读 · 0 评论 -
GDAL源码剖析(十)之编写自己的扩展格式
该节内容参考GDAL的英文原文:http://www.gdal.org/gdal_drivertut.html。通常,可以通过从GDALDataset和GDALRasterBand继承来实现GDAL对新的数据格式支持。同时,还需要为这种格式创建一个GDALDriver的实例,让后通过GDALDriverManager将该新的驱动注册给GDAL系统。该教程将为JDEM数据格式实现一个简单的只读驱动开始,进而使用RawRasterBand类,实现一个可创建和修改图像数据的格式以及更高级的问题。原创 2024-04-04 11:26:48 · 953 阅读 · 0 评论