学习
文章平均质量分 55
周旭光
2013年6月毕业于福州大学,目前在北京的互联网地图厂商从事地图渲染引擎的研发工作,专注于GIS,专注于C++。如果有什么事可以通过邮箱zhouxuguang236126.com联系到我,也可以加我QQ672218231
展开
-
iOS编译openmp
iOS编译openmp。原创 2022-08-22 19:52:38 · 784 阅读 · 2 评论 -
DirectXShaderCompiler mac编译
mac记录directshadercompiler编译原创 2022-07-30 16:21:55 · 496 阅读 · 0 评论 -
java与VC通信-socket
最近,要做一个东西,是android客户端要与VC写的服务器端进行数据连接与交换,无奈,先从java测试吧,android还没弄,其实只要是遵循的同一个协议就可以通信了,不管你的客户端和服务器是什么编程语言,什么操作系统,都不重要,重要的是遵循TCP或UDP协议等,先不废话了,上代码再说,服务器端VC代码如下:void main(){ WORD wVersionRequested;原创 2012-09-23 17:03:22 · 4978 阅读 · 5 评论 -
点与多边形关系(改进射线法)
在GIS软件开发中,经常要用到一些几何的算法,比如三角网构建,多边形的剖分,点,线,面之间的关系。而点与多边形关系的判断是一项非常重要的基础工作。在点与多边形关系的判断中,经常用到的方法是射线法和夹角和方法,其中射线法能够针对带岛的多边形进行判断,而夹角和方法就显得无能为力。射线法的基本思想是:从待判断的点向某一个方向引射线,计算和多边形交点的个数,如果个数是偶数或者0则点在多边形外,如果原创 2012-05-10 09:02:16 · 12735 阅读 · 9 评论 -
GIS底层开发的定义
今天听一个朋友在群里说到了底层GIS开发的定义,觉得挺好玩,就转过来了1.结合具体行业的二三维二次开发,基于主流GIS平台;(二次开发,不属于底层开发)2.在现有三维GIS平台的扩展接口上,渲染具体行业模型的3D图形,这种开发方式属于半底层的,直接调用DirectX 3D或者OpenGL库的;3.利用现有的开源GIS库,比如常见的GDAL库,结合自己的行业直接开发GIS应用产品,这也是转载 2012-07-24 17:39:35 · 3974 阅读 · 0 评论 -
zlib1.2.5 编译(VS2010, VS2008)
最近毕业论文要用到这个东西,所以下载下来研究。 一、下载 官网下载地址:http://zlib.net/zlib-1.2.5.tar.gz 这个官网基本上不去,CSDN上的下载地址:http://download.csdn.net/detail/huang_xw/4416672二、编译 1. 解压到目录,如d:/zlib 2. 开启VS2010的Co转载 2012-12-08 21:01:43 · 4067 阅读 · 2 评论 -
GPS Intermediate Driver (GPS访问中间件)
GPS Intermediate Driver自从 Windows Mobile 5.0 引进了 GPS Intermediate Driver(GPS 中间驱动程序,以下简称 GPSID),开发基于 GPS(Global Positioning System,全球定位系统)的 Windows Mobile 应用程序变得简单多了。原因是它在开发人员编写的应用程序和 GPS 设备之间加入了一转载 2012-12-09 17:15:26 · 1509 阅读 · 0 评论 -
遥感影像彩色空间变换
在影像处理系统中,彩色空间变换时一个常见的基础功能,虽然功能不是特别复杂,但是也遇到了一些问题,毕竟第一次做图像处理的工作。在此,先介绍影像的RGB模型和HSI模型之间的转换。 在HSI模型中,H:Hue 代表色调(纯度、颜色) S:Saturation 代表饱和度 I: Intensity原创 2013-07-22 17:42:20 · 5123 阅读 · 0 评论 -
OCCI上载空间数据
众所周知,数据是GIS的血液,一个GIS系统最重要的是数据,而且在整个系统的建设过程中的花费也比较大。为此,许多GIS厂商和数据库厂商逐渐推出空间数据的存储解决方案。其中Oracle Spatial是目前最大的数据库厂商Oracle公司推出的新一代空间数据库,它采用对象关系型数据存储模式来存储空间数据。空间数据在Oracle中是以SDO_GEOMETRY数据类型来存储的,它的定义为:原创 2012-05-31 14:36:41 · 2040 阅读 · 0 评论 -
Oracle Spatial研究
Oracle Spatial是Oracle公司推出的空间数据库组件,通过Oracle数据库系统存储和管理空间数据。 Oracle从9i开始对空间数据提供了较为完备的支持。由于Oracle Spatial本身是ORACLE数据库的一个特殊的部分,因此可以用ORACLE提供的程序接口来对Oracle Spatial管理的空间数据进行操作。目前,ORACLE数据库主要提供两种接口方式对其数据进行存取原创 2012-09-21 08:27:23 · 12499 阅读 · 1 评论 -
R树空间索引
R树在数据库等领域做出的功绩是非常显著的。它很好的解决了在高维空间搜索等问题。举个R树在现实领域中能够解决的例子吧:查找20英里以内所有的餐厅。如果没有R树你会怎么解决?一般情况下我们会把餐厅的坐标(x,y)分为两个字段存放在数据库中,一个字段记录经度,另一个字段记录纬度。这样的话我们就需要遍历所有的餐厅获取其位置信息,然后计算是否满足要求。如果一个地区有100家餐厅的话,我们就要进行100次位置转载 2012-08-23 09:06:18 · 49384 阅读 · 23 评论 -
C++学习路线
从学习C++到现在已经有四个年头了,但是从来没有很深入学习,有人说C++是面向对象的编程语言,但是我在这里想说的是,C++是一个多泛型的编程语言,它既可以面向过程,比如我们完全可以用C++写C的代码,这是没问题的,它也是一个面向对象的语言,它具有面向对象的特征,可以模拟现实世界中的各种事物;它也是一个泛型编程语言,里面包含大量的模板特性,比如C++的标准库STL就是基于模板的一个库,C++语言的难原创 2012-07-07 17:41:26 · 49496 阅读 · 23 评论 -
地理坐标与屏幕坐标转换(VC++)
在底层GIS开发中,我们经常会碰到空间数据可视化问题,当我们拿到地理数据之后,我们该怎么把它展现在我们的计算机屏幕中呢,这或许是一个比较简单的问题。我们知道,地理坐标系是我们用户自定义的坐标系,而现实在计算机屏幕上的坐标是基于屏幕坐标来绘制的,那么改如何转化呢?首先,我们来熟悉几个概念:地理坐标系,通常原点在左下角,X轴的方向是向右递增,Y轴的方向是向上递增。屏幕坐标系,通常它的原原创 2012-06-06 19:43:28 · 10240 阅读 · 10 评论 -
VS2008环境下编译Sqlite源代码
VS2008环境下编译Sqlite源代码 好久没写博客了,趁着这个周末没啥事,就研究了一下Sqlite这个轻量级的数据库,这个数据库是由纯C代码写成的,很适合做轻量级的应用,如嵌入式GIS中数据存储的问题,智能客户端数据存储等等。当然,我主要关注在GIS中的应用。一、编译Sqlite1、准备工作下载源码,这个不用多说,去官方网站下载就好了,当然有的可能说官方网站已经有编译好的二进制包,但是我喜欢直原创 2014-03-02 20:42:23 · 4382 阅读 · 0 评论 -
数字在排序数组中出现的起始索引号
题目如下:给定一个升序的整数数组,查找某一个值在数组中出现的索引号,例如,输入数组2,3,3,4,4,5;查找的数是3,则返回1,2。时间复杂度要求为O(logN)。 初次拿到这个题目可以立即想到用二分查找来做,先比较中间的数和要查找的数,如果关键字(要查找的数)小于中间的数,那么在数组的左半部分继续查找,如果关键字大于中间的数,那么在数组的右半部分继续查找,如果关键字和中间的数相等原创 2014-08-28 21:13:08 · 3010 阅读 · 0 评论 -
连续子数组最大和问题(能够处理全是负数,返回子数组的起止索引的O(N)算法)
问题描述:给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].求子区间及其最大值,是非常适合采用分治法德算法设计思想来设计的,其分治的思想是把一个难以直接解决的大问题,分成一些规模较小的相同性质的问题,以便各个击破,分而治之。如原创 2012-05-06 17:11:27 · 2609 阅读 · 1 评论 -
栈的c++模板实现
在我们软件开发中,经常要用到栈这个重要的数据结构,栈是一种先进后出的线性结构,以前见过很多人在网上写的例子,都是基于基本数据类型的,而在我们的实际开发中,大部分都是基于特定的类型,我们不可能为每一种数据写一个版本,那样太累了,可扩展性也不好,所以就必须要用模板来实现。下面是实现的代码,有写的不好和不完善的地方,大家一起讨论:#pragma once#include templa原创 2012-09-21 14:23:09 · 3185 阅读 · 0 评论 -
typename和class的区别
typename用来说明一个qualified name是一个类型。比如: template void f(C& rc){ Typename C::iterator i = rc.begin(); // ... } 编译器不知道C的定义,所以不知道C::iterator是什么东西。因此必须有typename来告诉编译器。 te转载 2012-08-27 11:09:32 · 3796 阅读 · 1 评论 -
ORACLE调用接口(OCI)中对象类型转化器(OTT)的使用
OTT是OCI中访问对象类型数据的一个非常重要的工具,它将数据库中的对象类型或几何对象映射为C语言中的结构体,供OCI程序使用。在所有的支持oracle的操作系统中,OTT工具是以命令行方式工作的。要使用它,我们必须先做一些准备工作。设置ORACLE_HOME环境变量,我的是C:\app\zxg\product\11.1.0\db_1。在windows命令行方式下,输入ott,出现下列信息原创 2012-04-03 21:26:06 · 3548 阅读 · 0 评论 -
Oracle的C++调用接口(OCCI)
以前研究过一些数据库接口,比如OCI,今天又特意研究了OCCI,OCCI是在OCI的基础上封装的一层面向C++开发者的一套类库,采用面向对象的方法组织,而OCI是C语言接口,函数调用相当复杂,并且封装也不太容易。废话少说,先上代码吧。 #include #include #include using namespace oracle::occi;using namesp原创 2012-05-14 15:10:04 · 8751 阅读 · 2 评论 -
堆、优先级队列和堆排序
堆结构是一种数组对象,其定义如下:它是完全二叉树或者近似完全二叉树。经常作为优先级队列,比如二叉树优先级队列,四叉树优先级队列。n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): (1)ki=号。 k(i)相当于二叉树的非叶结点,K(2i)则是左孩子,k(2i+1)是右孩子 若将此序列所存储的向量R[1..原创 2012-05-15 17:14:58 · 3230 阅读 · 0 评论 -
各种排序算法分析与比较
首先,请允许我用这样的题目来作为本博文的题目,但是目前也想不到其他好的题目,所以就先定为这个题目吧。排序算法对于数据结构和算法课程来说都是非常重要的内容,在数据结构中,排序算法往往作为最后的章节来介绍的,它需要用到前面讲述的数据结构知识,而在算法设计与分析课程里面,它一般作为前面的章节来讲的,它是后面各种算法设计的基础。首先,来看一下冒泡排序:依次比较相邻的两个数,将小数放在前面,大数原创 2012-05-14 15:59:49 · 8618 阅读 · 0 评论 -
计算机科学中各种树结构
在数据额结构与算法中,树结构可是一个相当重要的结构。下面就是我找到的目前树结构的分类现状,只供大家参考。计算机中各种树结构原创 2012-05-17 12:11:55 · 4217 阅读 · 0 评论 -
关系模式候选键求取的算法
在学习数据库的时候,经常要碰到候选键的求取,但是一开始的时候,根本搞不清楚怎么去求,最近看了一些文章和资料,终于搞明白了。首先来看候选键的定义:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选键。若W是候选键,则必须满足两个条件:W的闭包是U;W没有冗余。设关系模式R中U=ABC.......等N个属性,U中的属性在FD中有四种范围:(1)左右出现;(2)只在左原创 2012-05-18 17:46:37 · 17647 阅读 · 8 评论 -
GDAL for WINCE编译与配置
目前,GDAL导出为Windows CE平台并不是很容易,编译配置比起桌面版的要稍微复杂一点。 从GDAL1.40版本开始,开始支持winCE,但是据说,后面的版本也不支持windows CE的库,在windows CE上面的库包括如下特性:l 支持GPL许可协议l 支持GDAL和OGR的核心APIl GDAL的驱动包括:AAIGridDTEDGeoTIF原创 2012-06-09 20:54:20 · 2038 阅读 · 0 评论 -
GDAL体系架构
在GDAL库中包含栅格数据的读写,矢量数据的读写,以及栅格和矢量数据的相关算法。下面主要对GDAL中栅格数据和矢量数据的体系架构做一个简单的说明。本人英文很烂,有些部分写出来的东西自己都看不懂,如果不懂,可以看英文。一、GDAL体系架构 参考GDAL官方文档:http://www.gdal.org/gdal_datamodel.html。 GDAL使用抽象数转载 2012-06-13 10:29:18 · 5609 阅读 · 0 评论 -
Sutherland-Hodgman算法(多边形裁剪)
Sutherland-Hodgman算法 Sutherland-Hodgman算法也叫逐边裁剪法,该算法是萨瑟兰德(I.E.Sutherland)和霍德曼(Hodgman)在1974年提出的。这种算法采用了分割处理、逐边裁剪的方法。一,基本思想: 一次用窗口的一条边裁剪多边形。 考虑窗口的一条边以及延长线构成的裁剪线该线把平面分成两个部转载 2012-06-29 09:27:10 · 5970 阅读 · 0 评论 -
比较幸运,侥幸通过软考
今年上半年准备软考也是计划中的事,虽然说有很多人说考这个没什么用,但我并不是去为了要考这个证,只是加强自己的计算机基础知识,拓宽自己的视野而已,如果通过了是更好,最后终于以上午59分,下午49分的成绩通过,下午的成绩还真悬啦,心里小小的美了一下,嘿嘿!上传图片作为见证原创 2012-07-22 11:46:51 · 4197 阅读 · 1 评论 -
计算机类期刊审稿周期
在网上看到了这个文章,觉得对自己有用,也就转载过来了,原始地址不知道是那里,所以就不给链接了 1.《小型微型计算机系统》 沈阳 审稿周期:四个月 (不固定) 发表周期:一年半(不办理加急业务) 审稿费:100元(初审通过后才要求作者寄审稿费,这个要赞一下!) 服务态度:极好 投稿方式:邮寄打印稿,交付审稿费后可在其主页上查询稿件状态。 转一下华中科技大学转载 2012-07-25 15:58:19 · 25013 阅读 · 0 评论 -
二叉树,排序二叉树
说到二叉树,这可是数据结构里面的非常重要的一种数据结构,二叉树是树的一种,本身具有递归性质,所以基于二叉树的一些算法很容易用递归算法去实现。作为一种非线性结构,比起线性结构还是相对复杂的,很多人甚至看不懂算法的意思,不能理解。其实一开始接触这些东西还是挺晕的,不过你多看几遍,上机实现可能你就会觉得没那么复杂。因为你最后会发现,这些数据结构对于提高程序设计的能力有很大帮助,也是软件开发中必不可少的。原创 2012-08-29 15:42:56 · 6361 阅读 · 0 评论 -
二叉树,排序二叉树(续)
上一篇文章是讲了一些二叉树的一些知识,本文介绍几个二叉树常用的算法求树的高:二叉树的高是左子树的高和右子树高的最大值再加上1,所以根据递归的定义很快就能得出来算法实现的伪代码int blgtreeDepth(BLGTree &bt){ //如果树为空,则返回0结束递归 if (NULL == bt) { return 0; } else { int原创 2012-08-29 21:12:10 · 1916 阅读 · 1 评论 -
c++ STL中元素替换功能的强大函数
学习C++ STL的目的不是让我们的编程更复杂,而是让我们的编程更简单,比如要实现C++ string类型的字符串字符替换功能就可以用到一个很强大的函数replace,它的语法声明如下:template void replace(FwdIt first, FwdIt last, const T& vold, const T& vnew);要使用这个函数,首先我们原创 2012-08-21 15:15:22 · 3271 阅读 · 0 评论 -
C语言库函数qsort
在我们的实际编程中,我们经常要对数据进行排序,而C的标准库给我们提供了这样一个函数qsort,它的声明如下:void qsort( void *base, size_t num, size_t width, int (__cdecl *compare)(const void *elem1, const void *elem2) );需要的头文件是 和 这个函数将实现数据的快速排序,原创 2012-08-23 21:10:50 · 1908 阅读 · 0 评论 -
realloc困惑
昨天,在做自己的东西的时候,一个内存错误,折腾了我大半天,吗的,想起来真的非常气人,就那么一个小小的错误,居然能把我卡住这么久,是一个什么错误呢,就是一个realloc函数。首先我们来看一下这个函数的声明,MSDN上面是如下描述的:reallocReallocate memory blocks.void *realloc( void *memblock, size_tsize原创 2012-05-29 10:40:43 · 2413 阅读 · 2 评论