C++
蒙山蒙水
遥感和地理信息系统,略懂
展开
-
GDAL读取Jpeg2000格式图像
除了基本的图像压缩功能外,还支持其他的功能:1)对图像进行按精度或者按分辨率来渐进显示。2)感兴趣编码,就是对不同的图像区域给予不同的精度。其中最常见的是前两种方法。以上的所有的库默认编译都是没有的,都需要第三方库的支持。以上提到的功能特性都不是遥感图像选择Jpeg2000格式的主要理由,主要原因是它能记录空间坐标系(CRS),本文简要介绍GDAL读取Jpeg2000格式图像的相关知识。如果你也是用的ECW库来实现对JP2K格式的支持,那么编译完依赖库以后,首先用GetDriverByName来获取驱动。原创 2023-04-18 14:25:27 · 796 阅读 · 0 评论 -
Qt moc 功能限制导致的一些问题
moc并不能处理所有的C++特性。预编译宏的处理也不够完善。体现在不能够处理其他工程中引入的宏。比如我在A工程中定义了命名空间宏:#define NAMESPACE_BEGIN namespace Tpt { \ namespace Wow { \ namespace View {#define NAMESPACE_END } \ }原创 2021-08-18 08:53:36 · 288 阅读 · 0 评论 -
关于C++库发生变动,何时需要重新编译 依赖其的库
在VS环境下(VS2015)静态编译情况下,只要有变动就得重新编译。动态库,只要头文件不变化,就不需要重新编译。原创 2021-08-13 10:21:32 · 1774 阅读 · 0 评论 -
记一次非常隐蔽的程序崩溃原因
起因是编译一个经常编译的工程,今天突然蹦出非常奇怪的错误,提示内存越界。出错的地方都是JSONCPP库代码出现的地方。从代码的角度查找原因,都没找到。想了下,今天添加了环境变量,把另一个不相干的路径加到PATH环境变量了,为了验证,启动debug,在输出窗口查看加载的库,果然把PATH变量路径加进来了解决方法当然就是把环境变量去掉。去掉后需要重启VS才能生效。...原创 2021-08-12 17:11:33 · 158 阅读 · 0 评论 -
VS2015编译SpatiaLite库
SpatiaLite库http://www.gaia-gis.it/gaia-sins/libspatialite-sources/原创 2021-06-17 18:54:45 · 426 阅读 · 0 评论 -
Linux下软件打包发布细节
我用的操作系统是Centos7,开发环境是eclipse,C++编译环境。 中间的编译过程忽略。这里只记录编译完成后该如何打包部署。首先,去程序生成目录下执行应用程序,正常是应该可以启动的。然后在程序目录编写一个脚本文件,内容如下:#! /bin/bash #执行脚本时在终端输入 ./copy.sh ./test ./copy#其中./test为ldd所要查看的可执行程序的路径,./copy为依赖文件最终拷贝到的文件夹路径 #以下三个参数为终端输入# $0 为 ./copy..原创 2021-04-08 12:34:06 · 677 阅读 · 1 评论 -
VS2015的C++工程提示LNK2005
库之间的相互依赖没有任何问题,网上说的各种情况都一一排查了,没发现错误。后来通过修改字符集,问题解决了。实际情况是,各个依赖库都是使用的Unicode字符集,而出现问题的工程没有使用字符集。统一改为Uniconde字符集后,问题解决了。...原创 2019-09-27 13:47:23 · 485 阅读 · 0 评论 -
QtitanRibbon不起作用?
QtitanRibbon是一个收费的QT第三方界面库,官网在这里。QtitanRibbon实现了office风格的Ribbon界面效果。用户基于QtitanRibbon在创建Ribbon风格的QT应用程序时,往往遇到QtitanRibbon不起作用的问题。在此记录一下。用户一般都是从创建QT GUI的工程开始,截图如下这时候其实主界面是继承自QMainWindow。这时候...原创 2019-09-25 16:04:26 · 2222 阅读 · 5 评论 -
C/C++ string类型问题汇总
写入数据库一律转为utf8字符编码。转换方法:sql = QString::fromLocal8Bit(sql.c_str()).toUtf8();原创 2020-05-09 13:07:22 · 276 阅读 · 0 评论 -
#define 中的特殊符号#与##
(1)# 在一个宏中的参数前面使用一个#, 预处理器会把这个参数转换为一个字符数组 简化理解:#是“字符串化”的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串例如代码:#define ERROR_LOG(module) fprintf(stderr,"error: "#module"\n")则:ERROR_LOG("add"); 转换为 fprintf(stde...转载 2020-04-03 11:10:55 · 542 阅读 · 0 评论 -
OGRGeometry和geos::Geometry之间的相互转换
OGRGeometry属于OGR库,OGR库通常是和GDAL一起封装供用户使用的。GDAL&OGR库支持了大多数地理数据格式的读写,通常用户使用OGR库可以完成大部分矢量相关的任务。但是OGR并没有对特征之间的空间关系计算提供原生支持。尤其是空间矢量之间的拓扑关系计算,其内部是采用的第三方库geos。所以有时候我们干脆直接使用geos进行矢量运算。这时候就有可能遇到OGRGeometry和...原创 2019-10-31 18:14:34 · 2877 阅读 · 2 评论 -
stl::map与boost::unordered_map的区别
这篇文章说的比较精髓,所以就原文转过来了。stl中的map基于红黑树实现,并且在insert元素的时候,通过operator<来比较元素以及找到可以插入元素的位置,因此最终遍历结果有序。而boost中unordered_map是基于哈希值来比较元素的,有的元素可能哈希值相同但元素不同,因此需要先定义hash_value函数以及operator==。因此遍历unordered_map的...转载 2019-09-28 14:09:47 · 256 阅读 · 0 评论 -
C++的预处理命令和宏
转自https://blog.csdn.net/ailong91/article/details/79390250一、# —— 表示编译预处理如 :#ifdef ... #endif ; #define NUMBER 等二、## ——在宏定义中将两个字符连接起来,构成一个新的标识符如:宏定义以下结构:#define SETTEST(N)...转载 2019-06-20 18:00:21 · 563 阅读 · 0 评论 -
径向基函数
径向基函数是某种沿径向对称的标量函数,通常定义为样本到数据中心之间径向距离(通常是欧氏距离)的单调函数(由于距离是径向同性的)。RBF核是一种常用的核函数。 ...翻译 2019-01-16 11:40:35 · 1466 阅读 · 0 评论 -
Boost - 多线程-boost recursive_mutex用法
#include <iostream> void run() { for (int i = 0; i < 10; ++i) { std::cout << i << std::endl; } } int main(int arg...转载 2019-01-16 09:14:53 · 1251 阅读 · 0 评论 -
tbb基础之parallel_for用法详解
要讲解parallel_for,我们首先讲一个例子,该例子是对数组的每一个元素进行遍历,常规的串行算法代码如下:template<typename T> void Visit( T var){ printf("%0.2f, ", var);}void Sequence_Visit( const float* fArray, int nSize){ for ( int...转载 2018-12-26 08:37:36 · 5992 阅读 · 0 评论