- 博客(206)
- 资源 (30)
- 收藏
- 关注
原创 史上最全的QMap遍历方式
使用C++11的for循环遍历和std::for_each遍历QMap的方式最为常用和简洁,效率也比较高,占用资源较少。但是,不同的遍历方式适用于不同的场景,需要根据具体情况选择合适的遍历方式。如果需要修改QMap中的元素,应该使用迭代器进行遍历。如果只需要读取QMap中的元素,可以使用const迭代器或者C++11的for循环遍历。
2024-04-25 19:11:34 137
原创 绘制等高线图的算法
实际地图上实用的单位是米,但我们显示时使用的单位是像素,这里面有一个转换的关系。而且,显示的图形有可能需要缩放。所以我们收集的数据,x和y统一使用相对值。我们把总长和总宽都定为1,实际的坐标相对于单位1来定。例如地图长8km,然后我们的坐标点x为1km,那么x就是1/8=0.125。实际上,等高线图是分成一个一个网格的,我所使用的网格大小是10*10。每个网格里的线和颜色组成了整张的等高线图。
2024-04-25 16:19:30 414
原创 等值线算法
我们令黑点上的值大于阈值(等值线值)时为1,小于阈值时为0,我们可以保存在一个4位2进制内。比如我们的1,2,4号顶点标记为0。我们还可以同样的建立一个线表,表示该网格连接的线为哪两条边(由于有可能出现2条线的情况,所以我们第二维用大小为5的数组,便于之后的遍历)。通过网格索引获取边信息,然后转化为所有边的编号,然后获取边的两个顶点,进行插值计算点的位置,我们就保存该点的位置信息和边编号。通过网格索引,获取连线的两个顶点信息,通过在边索引表阶段保存的点信息和编号,保存连线的最终点信息。
2024-04-24 16:34:26 373
原创 通过标准网格点计算等值线
本资源提供了通过输入标准网格点数据计算等值线的接口,接口通过Qt实现,调整部分数据类型后也可转为C++代码。接口使用也比较简单,将本资源的源码添加到工程中,然后调用。函数即可得到等值线。该函数输入有2个,第一个是所有标准网格点的值,第二个参数是等值线的间隔。ContourGenerator.cpp接口实现代码文件。ContourGenerator.h接口定义头文件。struct.h:结构体定义文件。
2024-04-24 16:08:47 71
原创 【OSG】OSG环境部署 OSG3.6.5+vs2017+win10_x64(超详细)
原文链接最近开始了OSG的学习,开始搭建OSG开发环境,期间遇到了很多问题,也查阅了很多资料,最终搭建成功。OSG本来就是开源的,不应该敝帚自珍,应该多交流多分享,所以在此记录一下环境搭建的过程,方便以后查阅和交流。
2024-04-24 14:13:53 779
原创 C/C++代码检查工具——Qt creator 中安装cppcheck插件
pc-lint是资格最老,最强力的工具,但是是收费软件,并且配置起来有一点点麻烦。是免费的开源软件。使用起来也很方便。我在qt creator集成cppcheck插件 绕了点弯,所以记录一下;
2024-04-22 17:13:33 375
原创 C/C++ 静态代码检查工具cppCheck
Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误;Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等;Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为;使用--suppress如果你想要忽略某些警告,可以在命令行中使用 --suppress 选项。
2024-04-22 16:56:35 695
原创 error while loading shared libraries解决
因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下 /sbin/ldconfig使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果编译过程中报错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。需要注意的是:第二种搜索路径的设置方式对于程序连接时的库(包括共享库和静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。
2024-04-22 11:41:05 921
原创 error while loading shared libraries的解决方案
当运行程序时会出现如下类似错误时:默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。在明确已经安装该库的情况下出现上述错误,可能是这个库目录并没有加入到该环境变量中,解决办法如下。
2024-04-22 11:37:19 943
原创 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 766
原创 Proj 理空间坐标转换库安装及c++引用该库(linux系统)
坐标时,做一些坐标计算,如果直接使用GPS坐标会导致精度下降,或是不适用计算模型,这时候就需要将GPS坐标转化为平面坐标。在安装过程中如果遇到问题可以联系我,一般问题都是版本没有对应好。,该链接里有跳转proj主页的连接,上面有相关。
2024-04-20 00:02:59 302
原创 NetCDF(nc)读写与格式转换介绍
由于栅格结构是按照一定的规则排列的,因此其所表示实体的位置很容易隐含在网格文件的存储结构中,每个存储单元的行列位置可以根据其在文件中的记录位置得到,而行列坐标可以很容易地转换成任意坐标系下的坐标。在NetCDF的基础上,随着软硬件和应用场景的变化,逐渐发展出了多个版本,不同版本的文件格式各有不同。公约,其目的是要求符合要求的数据集包含足够的元数据,这些元数据是自描述的,即文件中的每个变量都有对其所表示内容的相关描述,包括物理单位(如果适用),并且每个值可以位于空间(相对于基于地球的坐标)和时间中。
2024-04-19 18:11:09 917
原创 vs2013+NetCDF4.4.2一维数据读取
仔细观察的数据对吗,数据貌似和表格中的有点出入,但出入不大,这是因为表格中存储的都是小数点后保留一位,而我们读取的是保留小数点后两位,仔细看数据图表格头上的数据。(数据中显示的小数点后几位是可以调节的,和你打开使用的工具有关系)说明:由于自己目前正在学习NC文件的读取与写入并不是擅长难免有错,这里只是自己的一点思路,希望能帮助刚开始学习的人。后续自己会把自己的一些心得分享出来。测试的是读取一维经度是的数据,该数据个数总共有241个。环境:win7+vs2013+NetCDF4.4.2。
2024-04-19 16:32:12 203
原创 vs2013+NetCDF二维数据的读取方法
说明:根据自己的实际情况请参考使用,更多问题请参考博客中的其他文章。环境:win7+vs2013+NetCDF4.4.2。
2024-04-19 16:31:12 135
原创 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 245
原创 netcdf库读取nc格式文件中的字符串类型的数据
这两天解析数据需要解析nc格式的文件,时间是字符串类型的,最开始还以为这个数据有问题呢,使用panoply打不开该时间格式的文件,于是就确定应该是panoply的支持不好,后来使用HDFView打开了。(正是:踏破铁鞋无觅处,得来全不费工夫!数据可以使用panoply和HDFView打开查看。
2024-04-19 15:10:43 195
原创 #include <string> 和 #include <string.h>
一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h。在新标准后的标准库中都有一个。区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。”的头文件,包含一些常用的C字符串处理函数,比如strcmp。C的标准库里碰巧也已经有一个名字叫做“他们是毫无关系的两个头文件。类半点关系也没有,所以。
2024-04-18 19:11:45 228
原创 麒麟系统安装netcdf库教程
由于项目中需要解析,而解析nc遥感影像, 就需要安装netcdf4库这里简单记录下安装过程。麒麟桌面系统V10在网站里下载zlib-1.3.1。
2024-04-18 14:58:21 914
原创 UBUNTU新版本,一键安装NETCDF,安装netcdf-c netcdf-v
3)由于脚本中netcdf-c和netcdf-fortran链接不能下载,手动下载,最重要的名字要对应,zlib也要下载解压,因为解压注释掉了。1)保存bash代码,文件名为netcdf_install.sh。4)执行脚本,ubuntu20以上版本实测成功。2)进入root模式执行前本,可一句一句执行。5) 查看配置选项。
2024-04-18 14:25:11 401
原创 xftp、xshell连不上虚拟机解决方法
五、如果是centos则有可能在配置主机网络时进行网络共享了,解决方法是关闭主机网络共享VMnet8。四、查看VM的相关服务是否打开,如果没打开的先手动开一下。若上述五种方法未能解决问题,则很大可能是网络配置出问题了。-client、openssh-server是否安装。步骤:点击此电脑–>管理–>服务和应用程序–>服务。一、检查连接虚拟机ip看是否正确。三、确认ubuntu中的。二、检查虚拟机防火墙是否关闭。如果没有安装,则安装。查看虚拟机系统 IP。
2024-04-17 18:56:51 248
原创 ubuntu 22.04 -- cmake安装
错误描述- 解决方案缺少 openssl 的编译依赖,安装即可安装cmake,没有sudo权限,cannot find openssl;
2024-04-17 18:23:23 407
原创 NetCDF 读取NC文件 判断变量属性是否存在
读取之前,先判断变量/属性是否存在,没有直接的判断函数,通过读取所有的属性/变量到内存中,然后再判断。问题:直接读取不存在的变量或属性,程序崩溃。版本:NetCDF-C 4.2。
2024-04-17 16:00:32 123
原创 C++ vector容器的swap方法(容器互换)
答案当然是否定的,如下图,原容器容量为5,里面存储了5个数据。当我们再向里面添加数据的时候,因为容器已满,所以容器会动态扩充,但是会多扩充一些空位,以防下次再次增加数据。这样做时有好处的,因为当数据量比较少的时候,将旧容器拷贝至新容器可能会很快,当时当数据量比较大的时候呢?很简单,当vector容器满了,就再重新建一个vector容器,然后将原vector容器的内容拷贝至新容器。,这个匿名对象拥有v的全部数据,但是,没有空闲的空间,也就是说,这个匿名对象的。创建出来的匿名对象是没有空闲空间的,此时,通过。
2024-04-17 15:40:25 843
原创 [c++][netcdf]通过c\c++读取字段的scale_factor与add_offset
【代码】[c++][netcdf]通过c\c++读取字段的scale_factor与add_offset。
2024-04-17 15:14:45 337 1
原创 基于C++中netCDF库读取.nc数据时的一些坑
本文介绍基于C++ 语言的netCDF库读取.nc格式的栅格文件时,出现数据无法读取、数据读取错误、无法依据维度提取变量等情况的原因与解决方法。最近,由于需要读取ERA5气象数据,因此使用C++语言中的netCDF库读取.nc格式文件;这其中也是踩了很多的坑,所以在此记录一下,也相当于是汇总了C++ 的netCDF库读取.nc文件时的一些常见问题。
2024-04-16 15:15:07 1013
原创 C++读取NC数据的结果与真实数值不一致的解决方法
其中,偶然发现在Visual Studio的代码中读取到的.nc文件的数据,和其实际的数据(ArcMap等软件打开所显示的数据)不一致;那么,我们就可以将这个scale_factor和add_offset,分别作用到我们读取得到的原始数据上(因为我这里.nc格式数据的数据量非常大,所以我们就只处理前100个),来看看其数值是否正确;可以看到,此时上图中所显示的数据,就和上上图中,我们在Visual Studio的代码中读取到的.nc文件的数据是一致的了。可以看到,此时得到的结果,就符合实际了;
2024-04-16 15:08:02 744
原创 在Visual Studio配置C++的netCDF库的方法
如果出现如下图所示的情况,提示This function or variable may be unsafe类似的报错,那么可以看到,这个报错给出了一个字段——在我这里就是_CRT_SECURE_NO_WARNINGS这个字段。如果项目里有关netCDF库的代码可以成功运行(如果大家此时还没有写完用到netCDF库的代码,那么可以用本文末尾给出的简单的测试代码),那么就大功告成了。安装过程中,主要注意以下几个界面的设置即可——首先,如下图所示,选择第二项,即。结尾的代码文件放入,得到的结果如下图所示。
2024-04-16 14:55:51 1133
原创 QT QScrollBar 滚动条美化
滚动条区域是指滚动条中可单独通过qss修改样式的部分垂直滚动条包括:sub-line、add-line、add-page、sub-page、up-arrow、down-arrow、handle水平滚动条:sub-line、add-line、add-page、sub-page、left-arrow、right-arrow、handle。
2024-04-13 13:44:38 175
原创 QScrollBar滑块颜色通过setStyleSheet设置时未生效现象
方案:通过setStyleSheet设置QScrollBar::handle:vertical的。需求:需要单独修改QScrollBar的。通过以下方式设置滑块颜色,并未生效。现象:颜色修改未生效。
2024-04-13 13:41:00 123
原创 gdal3.0以后更新引起的坐标转换的问题
在GDAL 3.0之前 OGRSpatialReference 类不遵守由定义CRS的机构强制的轴顺序,因此当顺序是纬度第一、经度第二时,从WKT字符串中剥离轴顺序信息。使用ogrcoordinateransformation类的坐标转换还假定该类的Transform()方法传递或返回的地理坐标使用经度、纬度顺序。为了帮助从仍然使用经度、纬度顺序坐标的代码基迁移,可以将元数据信息附加到OGRSpatialReference实例,以指定为了进行坐标转换,有效传递或返回的值的顺序将是经度、纬度。
2024-04-12 12:17:34 769
原创 关于GDAL计算图像坐标的几个问题
比如第一个,如何计算图像的四至范围,图像的四至范围从图1中可以看出,图像的四至其实就是图像左上角坐标和右下角的坐标为起来的矩形区域,那么就分别将左上角和右下角的行列号按照上面的公式进行转换即可得到四至范围;对于一个普通的标准图像来说(这里的标准图像是指GT(2)和GT(4)都为0),如图1所示,图像的行列号坐标为XOY,每个网格代表一个图像像素区域,i表示列号,j表示行号,淡蓝色右下角的行列坐标为(i,j),图中红色方块纵向长度为dy,横向长度为dx,分别为图像的分辨率;2:如何获取图像的四至范围?
2024-04-11 22:45:32 954
原创 【GDAL】找不到proj.db问题解决
GDAL是一个开源的地理空间数据处理库,它提供了许多用于读取、写入和转换各种地理空间数据格式的功能。大家根据自己的实际情况修改,目录名不一定非得是 proj4,也可能是 proj6 或 proj7。代码的第一行,需要我们找到包含proj.db文件的目录,并将这个目录的路径赋值给 path。,因为程序是要给用户使用的,而且不需要去修改用户的系统环境变量,会更好用。path的路径是可以根据项目需求进行修改的,我这里写死了,大家可以修改。从上图可以看到,在这个路径下,包含我们需要的 proj.db。
2024-04-11 15:48:00 292
原创 C++ Primer学习笔记 第3章 字符串,向量和数组
/初始化string对象的方式string s1;//默认初始化,s1是一个空字符串//s2是s1的副本//等价于s2(s1),s2是s1的副本//s3是该字面值"hiya"的副本,除了字符串//s4是该字符串字面值的副本//s5的内容是cccccccccc直接初始化和拷贝初始化如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化(copy initialization),编译器把等号右侧的初始值拷贝到新创建的对象中去。如果不使用等号,则执行的是。
2024-04-11 15:45:40 307
java Threads and the Concurrency Utilities
2017-10-08
jquery官方指定教材三本
2017-06-18
java se 8.0 pdf
2017-03-09
银河麒麟V10环境下 netcdf-c-4.9.2, netcdf-cxx-4.3.1相关库
2024-04-19
HLMSEditor/bin目录下缺少的dll文件
2023-05-24
xshell5安装配置.docx
2020-02-25
CGAL Arrangements and Their Applications A Step-by-Step Guide.rar
2020-02-15
架构探险——从零开始写Java Web框架 绝对完整!强烈推荐
2019-01-16
《跟老男孩学习Linux运维:Shell编程实战》带标签目录 绝对完整!!!
2019-01-09
跟老男孩学linux运维 核心系统命令实战-高清-完整-带目录 绝对完整!!! 绝对完整!!!
2019-01-09
跟老男孩学linux运维 web集群实战
2019-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人