
原创
文章平均质量分 67
凡先生_WHU
锲而舍之,朽木不折;锲而不舍,金石可镂。
展开
-
算法学习(2)--数组、链表和跳表的基本实现与特性
一、数组数组是一段连续地址的内存,使用内存管理器(memory controller)访问,访问的时间复杂度为O(1)。 增(删)元素:插入(删除)一个元素,该位置后元素全部后移(前移),时间复杂度为O(n)。 数组扩张时,如果原有内存大小不能满足需求,则开辟一块原来大小两倍的内存,用以复制旧数组。二、链表node,有单链表、双向链表、循环链表,pHead/pTail/构造函数。 增删不涉及群移操作,移动和修改操作的时间复杂度为O(1)。 访问元素节点的时间复杂度为线性复杂度O(n).原创 2020-08-06 00:09:10 · 283 阅读 · 1 评论 -
利用道格拉斯·普客法(DP法)压缩矢量多边形(C++)
1.算法描述经典的Douglas-Peucker算法(简称DP法)描述如下:(1)在曲线首尾两点A,B之间连接一条直线AB,该直线为曲线的弦;(2)得到曲线上离该直线段距离最大的点C,计算其与AB的距离d;(3)比较该距离与预先给定的阈值threshold的大小,如果小于threshold,则该直线段作为曲线的近似,该段曲线处理完毕。(4)如果距离大于阈值,则用C将曲线分为两段...原创 2019-02-22 11:50:56 · 1407 阅读 · 0 评论 -
C++中值传递(pass-by-value)和引用传递(pass-by-reference)
1.pass-by-value的情况:缺省情况C++以pass-by-value(继承C的方式)传递对象至(或来自)函数。函数参数都是以实际参数的复件为初值,调用端所获得的也是函数返回值的一个复件,复件由对象的拷贝构造函数产出,可能使pass-by-value成为耗时的操作。2.耗时的原因类的对象作为函数参数时,如果使用值传递,要先拷贝一份实参的副本,需要调用类的拷贝构造函数,函...原创 2019-05-31 10:07:45 · 2054 阅读 · 0 评论 -
操作系统原理学习(第二周)_操作系统结构
2-1 计算机硬件1.计算机系统体系结构2.设备控制器①I/O设备与CPU可并行执行(execute concurrently)②每一设备控制器负责一个设备类型③每一设备控制器有一局部缓存(CPU与I/O交互)③CPU通过局部缓存与主缓存交换数据④I/O从设备到设备控制器的局部缓存⑤设备控制器通过引起中断来通知CPU的操作已经完成3.中断定义:...原创 2019-06-15 13:12:24 · 844 阅读 · 0 评论 -
操作系统原理学习(第五周)_CPU调度
5-1 CPU调度的基本概念1.进程的CPU和I/O burst的交替序列①交替序列的图②CPU脉冲的分布:在系统中存在许多短CPU脉冲,只有少量的长CPU脉冲。③I/O型作业,许多短CPU脉冲;CPU型作业,有几个长CPU脉冲。2.当CPU空闲时,OS就选择内存中某个就绪进程,并给其分配CPU3.进程的CPU调度可能发生在以下情况下:①从运行转到等待 ...原创 2019-07-01 23:48:35 · 994 阅读 · 0 评论 -
操作系统原理学习(第四周)_线程
4-1 线程的引入1.线程的概念①进程具有两个基本属性:是一个拥有资源的独立单位,可独立分配虚地址空间、主存和其他 又是一个可独立调度和分派的基本单位这使得进程成为并发执行的基本单位②问题:由于进程是一个资源的拥有者,因而在创建、撤销、切换调度时,系统需要付出较大的时空开销,故进程的数目不宜过多,进程的切换频率不宜过高,限制了并发程度。③方法:将进程的两个基本属性分开对...原创 2019-06-27 21:33:40 · 396 阅读 · 0 评论 -
python读取数据库PostgreSQL导出excel表格
1.现有数据和目标成果1.1现有数据源数据保存在数据库中,使用的数据库管理软件是PostgreSQL。本质上来说,数据存储在数据库中是以记录存储在表上实现的,在excel表格中也是以记录的形式存在。所以数据库中表的列(字段)可以与excel表的列一一对应。形式大致如下:1.2目标成果导出成果是excel表格,文件后缀名是.xlsx。形式大致如下:2.代码过程...原创 2019-07-04 11:14:27 · 3804 阅读 · 6 评论 -
python读取数据库PostgreSQL导出shapefile(shp)文件
1.现有数据和目标成果1.1现有数据源数据保存在数据库中,使用的数据库管理软件是PostgreSQL。本质上来说,数据存储在数据库中是以记录存储在表(table)上实现的,在shapefile中也是以记录的形式存在属性表(dbf)。所以数据库中表的列(字段)可以与dbf表的列一一对应。数据库中数据形式大致如下:1.2目标成果众所周知,shapefile是ESRI公司制...原创 2019-07-05 17:31:06 · 2747 阅读 · 0 评论 -
操作系统原理学习(第六周)_进程同步
6-1进程同步背景1.生产者消费者问题采用共享内存解决生产中消费者问题时,N个缓冲区最多只能用N-1个,如何解决?2.共享数据的一致性①对共享数据的并发访问可能导致数据的不一致性②要保持数据的一致性,需要一种保证并发进程的正确执行顺序的机制。③竞争条件 race condition若干并发的进程(线程)都可以访问和操纵同一共享数据,从而执行结果取决于并发进程对这个...原创 2019-07-17 23:25:06 · 696 阅读 · 0 评论 -
shp系列(七)——利用C++进行Shx文件的写(创建)
之前介绍了Shp文件和Dbf的写(创建),最后来介绍一下Shx文件的写(创建)。Shx文件是三者之中最简单的一个,原因有两个:第一是Shx文件的头文件与Shp文件的头文件几乎一样(除了FileLength);第二是Shx文件的主体只有两个记录项,分别是Offset和ContentLength。推荐结合读取shx的博客一起看!推荐结合读取shx的博客一起看!推荐结合读取shx的博客一起看...原创 2018-12-22 13:03:49 · 1286 阅读 · 0 评论 -
shp系列(六)——利用C++进行Dbf文件的写(创建)
上一篇介绍了shp文件的创建,接下来介绍dbf的创建。推荐结合读取dbf的博客一起看!推荐结合读取dbf的博客一起看!推荐结合读取dbf的博客一起看! 1.Dbf头文件的创建Dbf头文件的结构如下:记录项数组说明:字段类型说明:关于每项的具体含义参照读取dbf文件的解释,这里重点解释几项:HeaderByteNum指dbf头文件的字节数,数值不用...原创 2018-12-22 12:08:41 · 1492 阅读 · 2 评论 -
(三)建筑物多边形化简系列——去除冗余点
制图综合和建筑物数据处理等都涉及到建筑物多边形的化简。制图综合中,由于比例尺的变小,建筑物在小比例尺地图上所占面积变小,这意味着建筑物图形的形状精度也有一定的损失,为了更好地表示原有建筑物的特征(面积、图形和方向),需要对建筑物多边形进行化简。另外,从遥感影像提取的建筑物矢量数据需要经过图形化简等一系列操作才能作为可使用的数据。首先明确,矢量数据结构中,建筑物多边形是由一些列环(circle)...原创 2018-07-18 00:02:24 · 2086 阅读 · 1 评论 -
(一)建筑物多边形化简系列——去除噪点环
由于本人最近在进行建筑物数据处理的项目,遇到了较多的问题,同时也收获了很多知识。所有打算写一个建筑物处理的系列博客。要处理建筑物多边形,首先得理解结构关系,这是所有实现处理的基础。建筑物多边形是由一条条封闭的环(线状)组成,环是由一组首尾相同的点组成,所以对建筑物多边形的处理实质是对环和点处理。实际项目中,所给的数据是非常凌乱的,杂质非常多。下图是初始的建筑物多边形数据,我们可以发现:局部...原创 2018-07-19 12:56:04 · 1615 阅读 · 1 评论 -
(二)建筑物多边形化简系列——多边形点数化简
1.目的实验发现,一个多边形由多个环,每个环的点数数量都比较大,这直接导致程序处理速度非常慢。为了简化图形,加快程序运行速度,为方便后期拟合建筑物,打算对建筑物原始数据进行化简。2.做法化简的内容是去除部分建筑物多边形的点,采取保留一半点的做法,观察每次化简后图形与原始图形的差别。3.实施对去除噪点环之后的建筑物多边形数据进行处理。处理的方法是对半,函数为:// 0904,...原创 2018-09-04 11:00:15 · 1103 阅读 · 0 评论 -
(四)建筑物多边形化简系统——“去尾巴”和分割复杂多边形
问题说明实际操作中,发现有的多边形存在“尾巴”或者很细的部分。“尾巴”细长,明显不是有效建筑物区域,特点就是区域面积小,看起来细长,附着于大面积多边形外测或者连接两个多边形。需要去除尾巴或者分割多边形,为后面拟合多边形做准备。 算法思想去除“尾巴”(凸出部分)和分割多边形的算法思想:1.求平均距离。针对环,遍历每个点,求到下一个点之间的距离,计算该环两点间...原创 2018-10-06 21:36:30 · 832 阅读 · 0 评论 -
shp系列(二)——利用C++进行shp文件的读(打开)
1.各数据类型及其字节数BYTE 1; char 1; short 2; int 4; double 8;2.位序big和little及其转换对于位序是big的数据我们在读取时要小心。通常,数据的位序都是Little,但在有些情况下可能会是big,二者的区别在于它们位序的顺序相反。一个位序为big的数据,如果我们想得到它的真实数值,需要将它的位序转换成...原创 2018-12-20 14:47:33 · 7056 阅读 · 3 评论 -
shp系列(三)——利用C++进行DBF文件的读(打开)
1.DBF文件要点DBF文件又叫属性文件,也叫dBASE文件,文件后缀是.dbf,实际上ArcGIS打开后的属性表就是DBF的信息。DBF文件遵循以下几个条件:每个要素在表中必须要包含一个与之相对应的记录。 记录的顺序必须与要素在主文件中(*.shp)的顺序一样。 dBASE 文件头中的年份值必须要晚于 1900 年。2.DBF文件的组成属性文件(.dbf)用于记录属性信息。它是...原创 2018-12-20 17:24:33 · 2686 阅读 · 0 评论 -
shp系列(四)——利用C++进行Shx文件的读(打开)
1.shx文件的基本情况shx文件又叫索引文件,主要包含坐标文件的索引信息,文件中每个记录包含对应的坐标文件记录距离坐标文件的初始位置的偏移量。通过索引文件可以很方便地在坐标文件中定位到指定目标的坐标信息。 2.shx文件的组成索引文件也是由头文件和实体信息两部分构成,其中文件头部分是一个长度固定(100 bytes)的记录段,其内容与坐标文件的文件头基本一致(FileLength...原创 2018-12-20 18:04:03 · 2465 阅读 · 0 评论 -
shp系列(五)——利用C++进行shp文件的写(创建)
之前介绍了shp文件、dbf文件和shx文件的的读取,接下来将分别介绍它们的创建过程。一般来说,读和写的一一对应的,写出的文件就是为了保存数据供以后读取的。写的文件要符合shapefile的标准。之前读取的时候使用的函数是fread,写的函数对应为fwrite,文件为二进制流文件。建议本博客和之前shp读取的博客一起看!建议本博客和之前shp读取的博客一起看!建议本博客和之前shp读取...原创 2018-12-21 18:37:54 · 2624 阅读 · 7 评论 -
(五)建筑物多边形化简系列——最小外接矩形的获取
最小外接矩形问题是在给出一个多边形(或一群点),求出面积最小且外接多边形的矩形的问题。这个问题看起来并不难,但是具体实现并不简单。除了调用现有的公开库之外,这里给出一种简单且易理解的方法。 算法的主要思想是:(1)先实现多边形的简单外接矩形的算法。简单外接矩形是指边平行于x轴或y轴的外接矩形。简单外接矩形很有可能不是最小外接矩形,却是非常容易求得的外接矩形,这为后面做铺垫。(2)实...原创 2018-07-08 17:28:04 · 6463 阅读 · 2 评论