自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(71)
  • 资源 (1)
  • 收藏
  • 关注

原创 赠阅活动-《Autodesk地理信息系统解决方案——FDO、MapGuide、AutoCAD® Map 3D二次开发指南》

《Autodesk地理信息系统解决方案——FDO、MapGuide、AutoCAD® Map 3D二次开发指南》出版也有一段时间了。为了感谢大家对Autodesk地理信息系统技术的关注,我决定捐赠20本书给大家。只要你是有兴趣研究Autodesk相关产品、有兴趣在Autodesk相关产品做二次开发的用户,不管是科研单位还是学生,请回复该博文,并且将你的姓名、邮政地址私信给我,前20名就可以免费获得

2013-04-23 13:35:18 2513 28

原创 光学游戏Light vs. Sprite

辛苦了几个月,这一周我和朋友写的一个小游戏Light vs. Sprite终于在Appstore上线了。可能许多人以前玩过这个游戏,就是利用各种类型的镜子(例如:折射镜、反射镜等)反射和折射光线,对各种颜色的光线进行组合,从而同时击中所有目标来过关。感兴趣的朋友到Appstore中输入LvS可以找到这个游戏。这个游戏非常考验你的智力哦!!!虽然有许多关卡是自己设计的,在不看答案的情况下,一些关卡还

2011-10-29 22:24:55 1725 1

原创 在中断模式下检查和修改数据

在调试程序的过程中,如果程序在某个位置挂起执行(例如:中断到某个断点),通常我们希望能够通过一些工具观察程序的当前状态。其中,最重要的当属查看程序中数据的值。例如,查看某个变量的类型和值、某个寄存器的值、或某段内存的值。所以,几乎所有的调试器提供了大量用于检查和修改程序数据的工具

2011-08-16 22:52:34 3520 4

原创 Autodesk地理信息系统解决方案——FDO、MapGuide、AutoCAD® Map 3D二次开发指南

<br />    该博客中的相关内容进行整理后,已经由电子工业出版社出版了,书名为“Autodesk地理信息系统解决方案——FDO、MapGuide、AutoCAD® Map 3D二次开发指南”。如果感兴趣,大家可以到各大新华书店或网上书店购买。<br /> <br /><br /> <br />下面是当当网的链接地址。<br />http://product.dangdang.com/product.aspx?product_id=21000963&ref=search-1-pub

2011-01-01 20:45:00 4113 5

原创 FDO——新的GetSchemaNames和GetClassNames命令

在FDO 3.4之前,使用FdoIDescribeSchema会返回DataStore中所有要素模式和要素类的信息。如果DataStore中包含了大量的要素类,执行FdoIDescribeSchema命令将是一个非常耗时的过程,对RDBMS类型的FDO Prvoder来说尤为如此。在许多情况下,用户只想得到某些要素模式和要素类的名称,这时他们需要一种更加高效的方法。FDO 3.4引入了两个新的命令FdoIGetSchemaNames和FdoIGetClassNames来解决这个问题。命令FdoIGetSch

2010-07-10 10:42:00 1719

原创 问题2:是否只有通过基类指针或引用间接指向派生类子类型时,多态性才会起作用?

只有通过基类指针或引用间接指向派生类子类型时,多态性才会起作用。使用基类对象并不会保留派生类的类型身份,不再具备多态性。

2010-07-02 10:35:00 2180

原创 问题1:指针与引用有什么区别?

指针(Pointer)持有另一个对象的地址,使我们能够间接地操作这个对象。引用(Reference)有时候又称为别名,它可以用作对象的另一个名字。它们都是让你间接引用其他对象。从语法的角度比较,二者主要区别如下:1) 指针用操作符“*”和“->”,引用使用操作符“.”。2) 引用在创建的同时必须初始化,即引用到一个有效的对象;而指针在定义的时候可以不初始化,在定义后面的任何地方重新赋值。3) 指针可以被重新赋值以指向另一个不同的对象。但是,引用则总是指向在初始化时被指定的对象,

2010-07-02 10:26:00 2054 1

原创 FDO——世界文件

在处理栅格数据时,有时会碰到一些不具备地理位置信息的栅格文件,例如BMP格式的栅格数据,或者发现栅格文件中包含的地理位置不正确。此时,如果希望Raster Provider或GDAL Provider能够正确处理这些栅格数据,用户必须为这些这些栅格文件提供一个世界文件(World File)。那么,什么是世界文件呢?世界文件是一个为栅格图像指定地理位置信息的文本文件,该文本文件共有6行,描述了

2010-02-27 14:47:00 2399 6

原创 MapGuide Web API----通用类、集合类和异常类

1. 通用类通用类包含MgObject、MgDisposable、MgGuardDisposable、MgByteSource、MgByteSink、MgSerializable、MgService、MgNamedSerializable、MgWarnings、MgByteReader、MgColor、MgDateTime、MgServiceType和MgMimeType共14个类,图 3‑3

2010-01-30 09:47:00 3984

原创 MapGuide应用程序示例——为你的应用程序添加帮助

MapGuide预定义了许多命令用于提供一些常用的功能,例如平移地图、缩放地图、打印地图、选择要素、测量距离、创建缓冲区等。对于大部分预定义命令,我们只能直接使用它们,或者修改它们的显示名称、工具提示、显示在状态栏上的描述信息、图标等。 下面我们以添加“Help”命令添加到工具栏为例,介绍如何使用预定义命令。 1) 创建帮助文档。 假设我们创建了如下的帮助文档“index.html”,

2010-01-06 20:32:00 2352

原创 MapGuide应用程序示例——为你的应用程序添加帮助

MapGuide预定义了许多命令用于提供一些常用的功能,例如平移地图、缩放地图、打印地图、选择要素、测量距离、创建缓冲区等。对于大部分预定义命令,我们只能直接使用它们,或者修改它们的显示名称、工具提示、显示在状态栏上的描述信息、图标等。本节中,我们以添加“Help”命令添加到工具栏为例介绍如何使用预定义命令。

2010-01-06 20:31:00 164

原创 MapGuide应用程序示例——你好,MapGuide!

图 3‑4显示了基于MapGuide的Web应用程序的开发流程,整个开发流程可以分为五个阶段。图中,矩形代表任务,椭圆形被任务使用的或被任务创建的实体,箭头代表数据流。1) 加载文件类型的数据,配置到外部数据库的连接,通过联接(Join)一个要素源到另一个要素源扩展要素数据。2) 通过引用要素源的数据和为要素应用样式创建图层。3) 将图层结合起来创建地图。4) 通过Internet

2009-12-30 09:16:00 7054 7

原创 创建和加载资源包(Package)

MapGuide提供了两种方式创建资源包。一种是使用MapGuide Studio,另一种是使用MapGuide站点管理器(Site Administrator)。如果要加载资源包,只能使用MapGuide站点管理器。1.使用站点管理器创建和加载资源包下面我们以开源版MapGuide提供的美国威斯康辛州希博伊根(Sheboygan)县的地图数据(http://download.osgeo.

2009-12-24 17:31:00 2211 1

原创 MapGuide源码分析----MapGuide服务器源码分析

同样,在介绍MapGuide 服务器如何处理枚举资源操作之前,让我们首先来看看MapGuide 服务器用于处理服务请求和操作的类,图19‑9显示服务请求处理器类的类图,图19‑10显示了操作处理器类的类图。图 19‑10 服务请求处理器类的类图图 19‑11 操作处理器类的类图MapGuide提供了资源服务、要素服务等多种服务,每种服务包含了大量操作。MapGuide为每种服务

2009-12-20 11:49:00 2778 1

原创 MapGuide源码分析----MapGuide Web扩展源码分析

本节中,我们将通过介绍如何完成枚举资源功能来介绍MapGuide Web扩展的部分源代码。在浏览器端的地址栏输入类似如下字符串,就会发送一个枚举资源的HTTP请求。 http://hostname/mapGuide/mapagent.fcig?OPERATION=EnumerateResources&VERSION=1.0.0& RESOURCEID=Library://

2009-12-12 13:36:00 2170

原创 MapGuide HTTP API

本节将介绍什么是HTTP API,HTTP API与MapGuide Web API的关系,以及如何使用HTTP API。一般情况下,我们并不需要使用HTTP API,而且Viewer API已经包装了某些必需的HTTP API。如果不打算对Viewer API进行一些修改的话,可以忽略本节的内容。1.1.1        什么是HTTP API?如果查看客户端API的JavaScript

2009-12-12 13:25:00 2301

原创 深入FDO----处理栅格图像

FDO不仅支持几何数据,而支持栅格数据,用户可以通过Raster Provider或GDAL Provider读取栅格数据。而且,这两种Provider都支持函数MOSAIC、CLIP、RESAMPLE,可以将多张栅格图像合并起来,截取栅格图像的一部分。FDO使用类FdoIRaster来表示栅格图像,使用这个类可以读取和设置图像的位置、大小、图像中包含数据的类型、图像的存储和组织模型等信息。调

2009-12-05 12:20:00 2242

原创 深入FDO----模式覆盖

一般情况下,只有ODBC、Raster和WMS Provider需要使用模式覆盖,所以本节主要介绍如何为这三种Provider创建模式覆盖。1.1.1        模式覆盖使用模式覆盖,FDO应用程序就可以定制逻辑模式和物理存储之间的映射。由于不同的Provider用于支持的不同的数据,不同数据的物理存储格式差异很大,所以模式映射也因Provider而异,例如基于RDBMS的Provid

2009-12-03 21:01:00 2066

原创 深入FDO----执行SQL语句

FDO定义了大量的命令用于执行要素相关的功能,但是仍然屏蔽了对于许多数据源特有的功能。对于RDBMS类型的数据源,FDO提供了执行SQL语句的功能,让用户可以调用某些单纯使用FDO无法实现的功能。当然,某一种Provider是否支持执行SQL语句还需要看它的能力。FDO将SQL语句分为了两类,一类为包含关键词“Select”的SQL语句,执行这类SQL语句会返回一个结果集,另一类是不包含关键词

2009-12-01 20:29:00 1758

原创 深入FDO----数据维护

 本节将介绍如何用FDO API进行数据维护,数据维护相关的主要操作如下:l  插入(Inserting)l  更新(Updating)l  删除(Deleting)l  事务(Transactions)l  加锁(Locking)1.1.1        属性值在执行插入和更新操作之前,往往需要为插入和更新的要素创建属性值。FDO使用类FdoPropertyVal

2009-11-29 21:53:00 1872 1

原创 深入FDO----管理Data Store

 Data Store是一系列的集成对象的数据仓储,对于文件类型的Provider来说,一个Data Store往往就是一个文件。存储在Data Store中的对象可以被建模为一个或多个模式中的类或要素类,这意味着一个Data Store中可以包含一个或多个模式。FDO提供了两种命令FdoICreateDataStore和FdoIListDataStores分别用于创建Data Store

2009-11-29 21:50:00 1385

原创 深入FDO----管理空间上下文

 空间上下文定义了存储和操作几何数据所需的属性,例如坐标系、坐标容差等。FDO定义了FdoIActivateSpatialContext、FdoICreateSpatialContext、FdoIDestroySpatialContext和FdoIGetSpatialContexts四个命令分别用于设置当前活动的空间上下文、创建一个空间上下文、销毁一个空间上下文和获取空间上下文及其相关信息。目

2009-11-28 08:50:00 1129

原创 模式管理

本节将阐述如何创建和使用模式,并将解释一些模式管理相关的问题,例如如何使用FDO要素模式来描述空间要素。 1.1.1 模式概述 FDO要素模式提供了一种对空间要素的逻辑描述机制,而FDO Provider负责将要素模式映射为底层的物理数据结构。要素模式是空间要素数据的逻辑视图,它完全独立于数据存储,一切FDO中的数据操作都是针对逻辑要素模式中定义的类以及关系。FDO要素模式在某种程度上是基于O

2009-11-26 22:18:00 1260

原创 模式管理

 本节将阐述如何创建和使用模式,并将解释一些模式管理相关的问题,例如如何使用FDO要素模式来描述空间要素。1.1.1        模式概述FDO要素模式提供了一种对空间要素的逻辑描述机制,而FDO Provider负责将要素模式映射为底层的物理数据结构。要素模式是空间要素数据的逻辑视图,它完全独立于数据存储,一切FDO中的数据操作都是针对逻辑要素模式中定义的类以及关系。FDO要素模式

2009-11-26 21:51:00 1206 1

原创 模式管理

 FeatureClass请参考 ClassDefinition (带有主键属性)...Type”abstract=““/>{ 请参考FeatureClass.GeometryProperty }{baseClass}?{baseClass.schema.name}:{baseClass.name} :‘gml:AbstractFeatu

2009-11-26 21:42:00 1197

原创 深入FDO----能力API

通过能力(Capabilities)API可以得到每个Provider支持哪些功能,从而根据不同Provider的不同的能力来控制代码的运行。FDO Provider的能力可做如下分类:l  连接(Connection)l  模式(Schema)l  命令(Command)l  表达式(Expression)l  过滤器(Filter)l  几何(Geometry)l 

2009-11-22 14:09:00 1391 1

原创 深入FDO----建立FDO连接

在访问数据源中的任何数据之前,首先需要建立一个对应的FDO Provider连接。本节中将介绍如何创建一个FDO Provider的连接。1.1.1        数据源和Data Store在创建一个FDO Provider连接之前,我们需要明白两个概念:数据源和Data Store。因为准确的来说,FDO的连接是针对Data Store的,而不是数据源。在介绍FDO的基本概念时,我

2009-11-15 21:40:00 2541 2

原创 深入FDO----异常处理机制

 FDO的所有异常类都继承自FdoException,但是在FDO 3.5之前FDO只提供了9个异常类,这些异常类的类图如图9‑2所示。 图 9‑2 FDO异常类类图 从图9‑2可以看到,FDO的异常类并不是非常,FDO 3.5已经注意到了这个问题,而且提供了具体的解决方案,访问http://trac.osgeo.org/fdo/wiki/FDORfc37可以这个解决方案的

2009-11-14 10:50:00 1419

原创 深入FDO----内存管理机制

 调用某些FDO的函数,如创建方法,需要申请内存,而这些内存需要在适当的时机释放,以免内存泄漏。FDO使用了引用计数的方式来实现管理对象的生命周期,每个对象都维护着一个引用计数,只有当这个对象的引用计数变为0时,才会去释放这个对象。所以,FDO中每个类都从FdoIDisposable类继承而来的,FdoIDisposable定义了Release()和AddRef()方法。调用方法Release

2009-11-14 09:31:00 1413 2

原创 深入FDO----FDO概念

在介绍FDO API的用法之前,我们需要了解一些FDO的基本概念,这些概念无论对FDO的理解,还是后续章节的理解都非常重要。 数据相关的概念1) 要素(Feature)要素是对自然界中对象的一种抽象,它直接或间接关联于某个地理位置,例如道路、地块等。一个空间要素具有一个或多个几何属性,例如一个道路要素可以被表示为一条线,一个消防龙头可以被表示为一个点。一个非空间要素没有几何属性,但是关

2009-11-12 22:21:00 5246 1

原创 深入FDO----FDO的历史

 到现在为止,GIS已经有几十年的历史了,许多的软件公司和组织提供了不同的解决方案,使用了不同的方式存储和管理GIS数据,例如AutoCAD使用DWG文件,AutoCAD Map 3D使用SDF文件,ArcGIS使用SHP、 Coverage、Geodatabase,Oracle使用数据库服务器。Autodesk需要一种通用的方式访问不同类型的GIS数据源,这种方式需要有足够的灵活性,既能

2009-11-12 22:11:00 2576

原创 MapGuide开源版的修改流程

 MapGuide代码的修改可以分为两大类:功能增强(Ehancement)和缺陷修正(Defect),MapGuide使用Tickets来管理和跟踪这些修改,访问http://trac.osgeo.org/mapguide/report可以浏览和查询活动的和已经关闭的Tickets,对于功能增强MapGuide还使用了RFC进行管理。需要注意的是无论创建Tickets还是RFC,都需要有一个

2009-11-04 20:48:00 1420 1

原创 MapGuide开源版的管理组织

 作为OSGeo的一个子项目,MapGuide遵守与其他OSGeo项目的类似的管理方式,由如下四类组织和角色进行项目的开发和管理。1)  项目筹划指导委员会(Project Steering Committee)项目筹划指导委员会简称为PSC,负责MapGuide开源项目的管理工作,决定MapGuide开源版的发布日期、哪些功能和缺陷修正整合到那个发布版本、那些人可以成为项目开发人员等

2009-11-04 20:46:00 1053

原创 编译MapGuide

 如果想自己编译MapGuide的源代码和运行MapGuide,那么请参考MapGuide开源版的文档 (http://mapguide.osgeo.org/documentation.html),各个版本MapGuide的编译步骤基本相同,但是细节却不尽相同,所以要找到使用的源代码所对应的文档,严格按照文档中描述的步骤编译MapGuide。因为MapGuide服务器和Web扩展是两个独立

2009-11-04 20:44:00 1484

原创 MapGuide源代码结构

 MapGuide源代码的目录结构如表18‑1和图18‑2所示,在后续的章节中我们将重点介绍Common、OEM、服务器和Web扩展部分的源代码。 文件夹描述InstallerMapGuide安装程序的源代码。MgDevMapGuide服务器和Web扩展的源代码。  Bu

2009-11-04 20:38:00 1482

原创 MapGuide源码分析--访问MapGuide源代码

如果要访问MapGuide的源代码,需要先安装一个Subversion的客户端,通过Subversion的网站(http://subversion.tigris.org/)可以了解到关于Subversion最为详尽的信息。一般情况下,推荐大家使用TortoiseSVN访问MapGuide的源代码,它将SVN客户端和Windows Shell很好地整合在一起,在TortoiseSVN的网站(http

2009-11-01 08:25:00 1489

原创 要素服务之空间上下文

一般情况下,如果一个要素类包含一个几何属性,那么它就有一个相关联的空间上下文(Spatial Context),通过这个关联的空间上下文,可以得知要素类中每个几何属性所使用的坐标系信息,例如坐标系名称、坐标的容差值、范围、范围类型等信息,如下的代码展示了如何获得一个要素类所关联的空间上下文名称。function getSpatialContextName($classDef)

2009-10-20 21:05:00 1164

原创 Autodesk地理信息系统解决方案

地理信息系统,简称GIS(Geographic Information System),是用于采集、存储、管理、处理、检索、分析和表达地理空间数据的计算机系统,是分析和处理海量地理数据的通用技术。GIS属于信息系统的一类,不同之处在于它能处理地理空间数据。地理空间数据描述地球表面(包括大气层和较浅的地表下空间)空间要素的位置和属性,在GIS中的两种地理数据成分:空间数据,与空间要素几何特性有关;属

2009-10-11 16:34:00 3621

原创 要素服务之长事务

在GIS应用中,常常会出现这样一种情况,空间数据库中对某个数据集进行的一次操作(比如编辑)很复杂,或者是出于某种原因无法在有限的特定时间内完成,全部完成操作需要比较长的时间,而传统的关系数据库在编辑的数据时要锁定数据,这样就会造成别的用户在很长一段时间内也无法访问(至少是无法编辑)这些数据集,所以GIS中通过长事务解决这类问题。在关系数据库中,事务应该具有四个属性:原子性、一致性、隔离性、持续

2009-10-09 19:58:00 1197

原创 要素服务之缓存

要素服务在访问要素源中的数据之前,除了需要必须创建一个到要素源的FDO连接,还经常需要描述要素源的模式和空间上下文(Spatail Context),获取要素类及其属性的定义信息,这些操作都会花掉一定的时间,特别是描述要素源的模式,所以MapGuide服务器将这些信息缓存下来以提高MapGuide服务器的性能。当要素服务需要某个要素源的模式、要素类定义、属性定义、空间上下文时,首先会在要素服务

2009-10-09 13:30:00 856

best kept secrets of peer code review

The most complete work on inspections is Software Inspection, by Tom Gilb and Dorothy Graham (Addison-Wesley, 1993, ISBN 978-0201631814). It's a great cure for insomnia. Or consider Peer Reviews in Software, by Karl E. Wiegers (Addison-Wesley, 2001, ISBN 978-0201734850). Written in an engaging style, rather like the Microsoft Press books, it's an accessible introduction to all forms of inspections, covering more than the traditional Fagan versions. One of my favorite books about inspections is a free one available from SmartBear Software called Best Kept Secrets of Peer Code Review (www.smartbearsoftware.com).

2013-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除