
C++札记
不定期记录技术成长历程, 主要记录GIS底层开发的技术要点
cejutue
分享经验,提升自我
展开
-
量化地形处理
正向合并:只需要处理边界瓦片(边界定义,获取量化地形高度范围,如果最低值都大于0,说明不需要合并);找出待生产瓦片边界三角形(左右上下位置比较),判断此三角形是否需要加点(周围边界点查待生产瓦片),重新生成三角形;1: 量化地形切片:GDAL查询数据;按照量化地形tilesize建立位图,位图每个位置(x,y)去查询所在三角形(三角形使用rtree索引,精确查询使用二维点是否在三角形内,边界也算);反向合并:使用带生产瓦片边界查询周围瓦片边界,如果待生产边界点有不与边界瓦片点高度不同,用边界修改自身;原创 2024-05-08 16:45:18 · 456 阅读 · 0 评论 -
建筑点云求边界
点云原创 2023-03-01 19:13:16 · 493 阅读 · 2 评论 -
相机照片的像素坐标和世界坐标转换
相机照片的像素坐标和世界坐标转换原创 2023-01-31 17:56:27 · 3571 阅读 · 1 评论 -
CGAL点云重建白膜
点云重建原创 2022-09-29 13:55:48 · 1055 阅读 · 0 评论 -
meshlab 倾斜瓦片顶层重建简化
meshlab 模型重建后简化原创 2022-08-25 11:30:43 · 2124 阅读 · 0 评论 -
使用 GRPC C++ API连接Java的RPC服务
grpc C++使用原创 2022-07-28 11:53:57 · 863 阅读 · 0 评论 -
PostgreSQL 内存暴涨编程总结
客户端缓存直接用stdmap存起来即可,key可以是sql语句,value可以是uuid。一般来说内存暴涨都是资原未释放,或者说创建了太多资原。服务端内存暴涨最常见就是创建了太多服务端资原对象.原创 2022-07-19 10:18:30 · 1525 阅读 · 0 评论 -
关于Oracle Spatial 三维数据支持得坑
Oracle Spatial 存储三维数据原创 2022-04-14 11:37:28 · 1030 阅读 · 0 评论 -
GDAL VSI文件扩展(virtual_file_systems扩展)
GDAL 扩展原创 2022-04-14 10:12:45 · 708 阅读 · 0 评论 -
求三角网的边界, 用以改进QEM算法简化破洞问题
改进QEM 算法 三维简化 GIS原创 2022-04-01 09:58:21 · 893 阅读 · 0 评论 -
如何将c风格的stb单头文件库给多个cpp使用
stb的文件库多个cpp引用原创 2022-03-24 16:07:38 · 1662 阅读 · 1 评论 -
XZordering 的C++实现
网上搜了很多XZ-Ordering实现没搜到,通过 sfcurve-master和geomesa-geomesa-3.2.2 得scala代码改编而来, 环境为C++, vs2015, 理论#include "stdafx.h"#include <vector>#include <list>#include <queue>#include <map>#include <algorithm>#include <iostream原创 2022-03-04 16:55:48 · 563 阅读 · 1 评论 -
c++中 lambda函数中调用自身类函数
类函数中得lambda表达式中一般不能调用 自身类得函数有两种办法可以调用:1: 将需要调用得函数编程静态函数, 那么可以在lambda中直接调用2: 将this指针传入进lambda函数 XZOrdering* ths = this; auto checkValue = [&ranges, &remaining, isContained, isOverlapped, ths](XElement & quad, short level) { ull原创 2022-03-04 09:33:07 · 2236 阅读 · 0 评论 -
Z-Ordering 编码及查询c++实现(简称Z2)
通过 sfcurve-master和geomesa-geomesa-3.2.2 得scala代码改编而来, 环境为C++.#include "stdafx.h"#include <vector>#include <list>#include <queue>#include <algorithm>#include <iostream>#include <deque>#inclu原创 2022-03-03 18:26:47 · 774 阅读 · 0 评论 -
OracleSpatial ST_XXX 相关函数几何操作容差
无意中在spatial-and-graph-developers-guide 12.2.pdf读到一段说明:Tolerance Value with SQL Multimedia TypesBecause the SQL Multimedia standard does not define how tolerance is to be used with the ST_ xxx, Spatial and Graph uses a default value of 0.005 in all th...原创 2022-01-17 14:49:57 · 651 阅读 · 0 评论 -
FileGDBAPI 二次查询空间数据失败解决办法
问题: 坑爹得filegdb数据,只能查询一次, 第二次查询只返回2条数据分析: 在QGIS, ArcMap中重新查看, 数据正常, 使用FileGDB_API_1_5_1-VS2015\samples\Querying 这个库里面用例直接查也是正常. 但是我使用得时候先统计了个数, 再执行查询, 于是出问题得代码出现了,:int Searchtest(Table &table){ fgdbError hr; wstring ...原创 2021-11-09 09:27:13 · 327 阅读 · 0 评论 -
Lambert 投影转换相关代码
最近与Lambert投影做了一段时间斗争, 从saga中扣出来一个可直接使用得方法调用代码 double a = 6378245;// oSourceSRS.GetSemiMajor(); //oSourceSRS.get double f = 1.0000000000000000000 / 298.3;// oSourceSRS.GetInvFlattening(); double Origin_Latitude = 0 * PI / 180; double Central_Merid原创 2021-09-27 09:36:09 · 1207 阅读 · 3 评论 -
河流溯源分析
需求: 基于水系分析河流溯源路径输入: 河流数据实现思路: 基于网络模型, 根据 河流交点打断生成河流网数据, 这跟路网不同, 河流一般都是单向流向, 所以是有向图.基于GDAL gnm算法数据结构有以下实现:/// \brief 顶点对象, 顶点内不带几何,方便算法运行,要查询几何可以直接去Storage根据ID查询struct Vertex{public: /// \brief 顶点ID long long VertexID = 0; /// \brief 是...原创 2021-09-09 14:12:20 · 505 阅读 · 0 评论 -
错误:‘make_unique’不是‘std’的成员
//如果gcc 小于6.1 不支持c++14 那么make_unique不支持, 自定义个一个也是可以玩的 #ifdef __GNUC__ #ifdef __GNUC_MINOR__ #if ((__GNUC__ < 6)) || ((__GNUC__ == 6) && (__GNUC_MINOR__<2))...原创 2019-10-23 18:30:16 · 4304 阅读 · 0 评论 -
Oracle 批量提交,批量绑定 OCIBindByName 和OCIBindObject 的使用
穷遍所有OCI文档找不出一个能绑定多行数据的说明和示例,自己尝试快两周解决了Oracle Spatial 批量绑定将Oracle的写入效率提升到了5000行左右,以下是一点心得Oracle OCI 基本操作 本文不多说,假设你会用基本的OCI操作数据,但是不知道怎么用OCIBindByName 一次可以绑定级别上千行数据, 本文将对你有点用从Statement 说起,分以下三步1...原创 2020-04-29 13:02:21 · 1778 阅读 · 0 评论 -
利用swig封装c++给Java 试用
swig官网文档http://www.swig.org/网上收集的一个较全的流程https://www.iteye.com/blog/yingchao-625797转载 2020-11-03 10:21:47 · 273 阅读 · 0 评论 -
记录一次 c++编译Android 应用的各种版本配置,
Android-ndk r16 以上最多支持API_LEVEL 27,最低API_LEVEL14, 编译设定第三方的c++库 API_LEVEL =21 ,使用交叉编译Linux,c++版本>=4.8.5 , app应用的使用Android studio 主要版本配置如下:buildToolsVersion '27.0.3'compileSdkVersion 26minSdkVersion 26targetSdkVersion 26Android-ndk r17 暂不支持,编译...原创 2020-08-04 17:54:40 · 524 阅读 · 0 评论 -
UML 关系复习记录
此文复习一遍类静态设计图类图关系表达, 总的大类关系有 依赖,关联,实现, 关联又分为组合和复合关系选举建议按照以下原则:关联关系的强弱,由弱到强分别是 依赖 < 关联 < 聚合 < 组合, 如果不知道用啥用关联一般不算错没 ...原创 2020-07-30 17:24:22 · 148 阅读 · 0 评论 -
CGAL 求三维体数据的交并差(三维布尔运算)
本示例使用 boost_1_68_0, CGAL-5.1.2特别提醒: 目前CGAL5以上版本可以用头文件模式使用, 编译出来的东西运行仅仅依赖libgmp和libmpfr , 以前编译出来的会依赖一堆boost和cgal 的dll,部署容易出错.CGAL首先是模板库开发, 要先定义一堆模板对象:#pragma once// Construction kernel#include "CGAL/Exact_predicates_exact_constructions_kerne...原创 2021-08-23 11:41:09 · 3307 阅读 · 0 评论 -
netcdf 读写 c++示例(附示例下载)
使用两个第三方库:netcdf-c-4.7.4 和netcdf-cxx4 一个是原始库,一个是c++包装, 下载链接 示例支持常用未压缩数据读写, 不支持netcdf4 因为这个要依赖一堆hdf5 库, hdf5 又依赖一堆库, 可能比你的程序都大, 那不如直接用hdf5 用啥netcdf.写数据用例void FillData(){ std::shared_ptr< NcFile> m_dataFile; m_dataFile.reset(new NcFile("D:...原创 2021-03-17 13:51:47 · 1458 阅读 · 0 评论 -
curl 在Android上的post问题
最近调试跨平台的curl 使用POST,GET请求, 但是同样的代码在Windows, CentOS都可以, 但是在Android 9上却不行, 服务始终报错误说传输的数据不正确,为空值, 但是调试客户端代码发现压根就没进入 post 发数据的回调函数, 也就是数据压根就没发出来,最后拿官方示例: https://curl.haxx.se/libcurl/c/post-callback.html 和 https://curl.haxx.se/libcurl/c/postinmemory.h...原创 2020-09-25 11:45:02 · 451 阅读 · 0 评论 -
Java和c++互相回调的例子(C++不直接调用jar包中的类)
实现原理,Linux 通用:c++定义接口类; c++定义调用接口类调用方法类; 通过SWIG 导出jar 包; 编译c++的DLL; Java应用程序实现c++定义的接口类; Java程序调用 调用接口类的方法调用接口类 即可完成Java方法回调进入C++;整个程序结构如下:下面以一个例子来说明以上五个步骤:1:c++定义接口类;struct CTS_API ClacData{ std::string m_strData; int nID; std:...原创 2020-11-10 19:49:53 · 472 阅读 · 0 评论 -
opengl 绘制 椭球并可以鼠标滚动,滚轮放大缩小
#include "pch.h"#include "testpublic.h"#include "include/glad/glad.h"#include "shader.h"#include "camera.h"#include <glad/glad.h>#include <GLFW/glfw3.h>#include "stb_image.h"#include <glm/glm.hpp>#include <glm/gtc/matr...原创 2021-06-23 11:59:33 · 578 阅读 · 1 评论 -
GIS内核加载失败的解决办法
内核加载Java代码: System.loadLibrary("gsjavaport"); // 另外加载方式同理 win System.load("C:\testkernel\gsjavaport.dll"); //linux System.load("C:\testkernel\libgsjavaport.so"); com.geostar.kernel.GsKernel.Initialize();本文下面内容按照每行代码分...原创 2020-07-10 12:43:53 · 1183 阅读 · 0 评论 -
使用libwebp 库编解码图片
webp格式可以大幅压缩图像的数据大小, 比png和jpg还要高很多, 具体高多少网上一堆,不做过多叙述, 直接上例子1:编码 WebPPicture m_Picture; WebPConfig m_Config; GsRGBAType m_inputType;if (!WebPPictureInit(&m_Picture) || !WebPConfigInit(&m_Config)) GS_E << "W...原创 2021-03-17 14:05:55 · 4264 阅读 · 0 评论 -
c++封装为python技术选型总结
c++封装为python技术选型 工具 支持类 工作量 封装语法难度 协议 依赖 Pyside 支持 大 难 LGPL 可商业 有一...原创 2020-04-12 22:33:55 · 265 阅读 · 0 评论 -
Android NDK 使用miniz读取大的zip文件的问题
问题发生在打开文件的时候, 我用的ANDROID_API 级别为21, fopen 无法打开大文件, 超过2g的, 需要用fopen64 但是次api在ndk下只有24级别才支持,另外使用了在makefile编译选项里加上-D_FILE_OFFSET_BITS=64 -D_LARGE_FILE 也是无效的用ifstream可以考虑....原创 2020-10-23 15:40:02 · 714 阅读 · 0 评论 -
反射-C++属性反射简单实现
#pragma once#include "preconfig.h" #include "object.h"#include "any.h"#include "configuration.h"#include <iostream>#include <cstring>#include <string>#include <sstream>#include <vector>#include <cassert>#inc.原创 2020-06-18 16:05:40 · 624 阅读 · 0 评论 -
华为云arm+centos 安装cmake后找不到cmake命令
华为云的centos 默认不安装cmake我们可以使用yum search cmakeyum install cmake.arrch64完成后我们使用cmake还是找不到命令cmake,这是由于此版本的系统默认命令为 cmake3, 我们之前写的很多脚本都是 cmake . 等, 此时只需要在执行脚本前使用alias cmake=cmake3 将cmake命令映射为cm...原创 2020-04-25 14:06:15 · 1237 阅读 · 0 评论 -
android app工程 强制切换debug和release
在Android中buildtype 选择的时候无法切换release和debug, 多种情况无法切换可以直接修改工程的配置文件.在app的目录下有app.iml文件, 在facet/configuration/ option[name='SELECT_BUILD_VARIANT'] 的value可以修改为debug或者release , 如下图红色中只要带debug的都可以替换为release....原创 2020-05-26 11:59:17 · 738 阅读 · 0 评论 -
qt for python 环境安装介绍
安装包CMake3.6,VS2017+sp,QT5.14,Python3.6,pyside2,shiboken2,shiboken2-generator,qt-vsaddinn-msvc2017-2.4.3安装方法:安装pyside2 环境网络安装:pip install pyside2pyside2 内带 pyside 和 shibo...原创 2020-04-12 22:37:18 · 727 阅读 · 0 评论 -
使用vs调试c++和python
1:在Windows上将c++编译输出的pyd, pdb文件拷贝到python的目录下去,我的目录C:\Users\****\AppData\Local\Programs\Python\Python37\DLLs2: vs的pyd工程直接使用命令行启动python.exe, 并附加写好的py文件,如下图的配置:3: 直接f5 运行, 在调用函数上打断点即可进入...原创 2020-03-19 16:30:12 · 611 阅读 · 0 评论 -
Android , Linux, Windows 下UTF8编码问题
跨平台开发中c++编译的代码难免写一些中文进去, 但是要想在每个平台使用必须要转码,原则如下:1: cpp文件必须是utf82: 必须使用u8 限定字符串,这样可以平台通用原创 2020-05-27 12:02:42 · 214 阅读 · 0 评论 -
rapidjson 读写json的注意事项
1:读取json读一般值 : rapidjson::Document *doc = new rapidjson::Document();原创 2021-01-18 15:32:12 · 839 阅读 · 0 评论 -
arcgis wmts 和天地图 服务叠加的偏移问题解决
首先直接说问题本质:图层分辨率计算方式不一致,arcgis 通常有两个分辨率矩阵:天地图通常只有一个:综合来看上面的两个服务arcgis 有一个96dpi和90.7dpi(25.4 / 0.28)的瓦片矩阵, 如果用90.7得当然不能和天地图96dpi得数据对得上, 有两种解决方法:1: 不用arcgis 90.7dpi得矩阵, 用96的, 这种需要切片...原创 2020-04-13 13:22:06 · 7203 阅读 · 2 评论