![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GIS相关
文章平均质量分 67
wb175208
这个作者很懒,什么都没留下…
展开
-
QGIS获取点图层中各个点的坐标信息
由于项目中需要获取点图层的所有点的位置,通过查看源码找到以下方法,经测试有效 QgsMapCanvas*canvas = dynamic_cast<QgsMapCanvas*>(GlobalUseInst()->load2DMapCanvas()); QList<QgsMapLayer*> layerList = canvas->layers(); int numLayer = layerList.size(); for (size_t i = 0; i <原创 2020-07-07 16:17:50 · 6924 阅读 · 0 评论 -
QGIS在地图上绘制经纬网
利用GIS加载经纬网的SHP数据可以显示经纬网数据,但是QGIS本身也具备显示经纬网的功能。QGIS显示经纬网数据利用类:QgsDecorationGrid 。这个类可以构造一个SHP图层来显示出来。但是我并没有使用QGIS库中的这个类,而是直接使用的源码,把这个类进行了改造,并且可以修改样式(颜色、字体等信息)。先贴上修改过的类文件:#ifndef QGSDECORATIONGRID...原创 2019-10-19 10:59:34 · 8981 阅读 · 15 评论 -
QGIS导出符号的宏定义
在使用QGIS的时候,引用里面的库文文件和头文件,有的QGIS里面并没有定义导出符号宏。所以在编译的时候回出现以下的错误:“QgsWKBTypes”使用未定义的 class“CORE_EXPORT” (编译源文件 MapGrid\qgsdecorationgrid.cpp)这个错误表明CORE_EXPORT这个符号没有定义,所以需要重新定义一下,可以直接在项目中进行定义:CORE_EXP...原创 2019-10-18 17:48:14 · 469 阅读 · 1 评论 -
QGIS中MVC架构-接口的设计
QGIS是基于QT开源框架的二维地理信息处理工具,使用非常方便,同样也是开源的。大家除了使用QGIS加载显示二维地图矢量或者栅格数据外,还要在二维地图上显示一些其他的基于WGS84坐标系自定义数据,比如点、线和多边形等。除了显示以外还有有相应的数鼠标操作,比如鼠标选中或者鼠标进行拖动等。上面这些需求体现了一个程序中常见的三要素:数据、显示和操作。数据也就是模型(Model);显示(View)就是...原创 2019-05-03 12:31:29 · 1057 阅读 · 1 评论 -
Qt调用QGIS出现的问题总结
QGis具有非常强大的矢量数据功能,但是Qt关于调用QGis二次开发过程中会出现一系列的问题,特此在这记录一下。环境:Qt5.7+VS2013+QGIS.Release版1.首先要注意的是,如果你的程序是Debug版本调用的QGis版本也必须是Debug版本;如果你的程序是Release版本,那么调用的QGis版本也必须是Release版本。如果它们的版本不一致,例如程序是Debug版本但原创 2018-01-10 09:57:51 · 4876 阅读 · 0 评论 -
C++ 设计模式之外观模式
在做QGIS方面的工作时,经常会用到在地图上绘制方面的需求,比如测量面积、测量长度、计算角度等等。在绘制的时候,都会调用:paintEvent 这个函数void MainCanvas::paintEvent(QPaintEvent *event) { QgsMapCanvas::paintEvent(event); //绘制内容 ...}仔细想想,如果把所有的原创 2018-01-16 12:26:15 · 377 阅读 · 0 评论 -
TIFF工具使用说明
把之前处理TIFF文件的工具集成到一起,顺便写了一个使用说明。以下是GIF使用演示,GIF图片经过压缩后,变得模糊不清楚了。但是基本的使用过程还是清楚的。代码中有详细的说明文档。 一、简介 TIFF全名 tag image file format,是一种基于标志域的图形,TIFF 是一个灵活适应性强的文件格式,通过在文件头中包含“标签”它能够在一个文件中处理多幅图像和数据。标签能够标明图像的原创 2017-04-27 22:17:47 · 4434 阅读 · 0 评论 -
RecyclerView存在大量Item时,当滚到底部时快速滑到顶部
在使用RecyclerView展示图片或者其他信息时,往往需要展示很多的Item,当滚到底部时又想回到顶部,如果一点一点的向上划去比较麻烦,而且用户体验不好。因此添加一个快速回到顶部的按钮是很有必要的,并且刚开始的时候这个按钮是隐藏的,当滑动超过超过一屏的时候才会出现,在滑动的过程中也是不会出现的。很多类似的项目都会使用到,但是如何在快速回到顶部的过程中不出现卡顿,体现的很是流畅,这点很重要。下面是原创 2017-03-17 10:00:12 · 9551 阅读 · 0 评论 -
剪切大的TIFF图片生成小的TIFF图片
有时TIFF图片都是很大的,但是我们又不是需要那么大的图片,只是需要其中的某一部分,这就需要我们裁剪其中的一块,同时还要把相应的坐标信息也要保存下来。 1.头文件#pragma once#include <Windows.h>#include"tiflib.h"#include<string>#include <vector>#include <algorithm> using na原创 2017-04-10 22:37:51 · 4672 阅读 · 6 评论 -
TIFF添加坐标信息
处理tiff图片过程中,需要给TIFF图片加上相应的坐标信息,来表示当前图片的坐标范围。下面就给出如何在一张空白的TIFF图片中添加坐标信息。 1.头文件#pragma once#include"tiflib.h"#include<string>#include <vector>#include <algorithm> using namespace std;#define TIFF_原创 2017-04-10 22:29:14 · 5052 阅读 · 1 评论 -
TIFF坐标的转换,生成新的图像
TIFF图片可以存储坐标信息,但是如何对这些坐标信息进行转换,然后生成新的图片呢?首先需要知道现在TIFF图片中的坐标系,然后要知道被转换的坐标系。现在我们只支持WGS84、西安80、北京54等中国常用的坐标系。 坐标系转换的头文件:#pragma once#include "proj_api.h"#define PROJ4_COUNT 1024#define coord_wgs84 "+pr原创 2017-03-14 23:23:20 · 7321 阅读 · 0 评论 -
TIFF文件解析
TIF文件是一种标签标记文件,为什么这么说呢?它的文件的构成方式就是根据Tag来标记的。同时还可以记录地理信息,坐标、投影等信息,非常方便在GIS领域使用。网上关于TIFF文件的介绍也是不少,今天我主要是把我之前使用C++解析TIF文件的过程记录下来。 1.定义TIFF文件的结构体//TIFF文件的数据结构typedef struct { FILE* pfile;原创 2017-03-06 22:51:19 · 7228 阅读 · 10 评论 -
TIFF图像数据的排列方式的装换
tiff图片在图片数据的排列方式有两种:一种是线性排列方式,一种是块状(瓦片状)的排列方式。线性排列方式的数据在读取的时候还是比较快的,但是块状的排列方式读取的时候就是比较慢了。现在要把块状的数据转换成线状的数据。 1.头文件#pragma once#include"tiflib.h"#include<string>#include <vector>#include <algorithm>原创 2017-03-08 22:08:20 · 1439 阅读 · 1 评论 -
ArcGIS的.prj文件生成proj4格式的字符串
ArcGIS的prj文件是一个专门用来描述坐标系投影的文件,里面定义了坐标系的名称、长短半轴、基准面、投影参数等一些其他重要的信息。proj4是C用语言编写的专门用来处理各个坐标系之间的转换的开源库。可以实现经纬度坐标转平面坐标或者两个不同的椭球体之间的坐标系转换,运算精度高,计算准确,在很多GIS项目和软件中都有使用。 那么既然都是描述坐标系的文件,如何在他们之间进行转换呢,下面举个例子:P原创 2017-01-10 23:35:41 · 12015 阅读 · 6 评论 -
Google投影坐标和WGS84坐标系的转换
web墨卡托坐标是google投影坐标系,而google投影坐标系是建立在一个长半轴等于短半轴的椭球上面,也就是所google投影是建立在一个正圆球上面,是平面坐标系,而WGS84经纬度坐标是GPS定位是的坐标系。他们之间的坐标之间的关系如下: C++代码:typedef struct{ double x; double y;}coordPairs;//web墨卡托转成WGS经原创 2017-01-09 22:28:47 · 9518 阅读 · 0 评论 -
获取某种颜色在图片中所占的比例
如何在一张图片中找到与自己想要的颜色值最相近的颜色,并且求出这些颜色在整张图片中所占的比例。比如对着一片绿地拍了一张照片然后想要查看一下那片绿地在整张照片中的范围,大概估算一下绿地的面积等等类似的场景。虽然比一定准确但是还是会有一定的参考价值。 核心算法代码:/*init_red, init_green, init_blue --- 需要查找到的颜色值red, green, blue ---原创 2016-12-25 21:48:39 · 24165 阅读 · 4 评论