- 博客(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
2664
7
原创 光学游戏Light vs. Sprite
辛苦了几个月,这一周我和朋友写的一个小游戏Light vs. Sprite终于在Appstore上线了。可能许多人以前玩过这个游戏,就是利用各种类型的镜子(例如:折射镜、反射镜等)反射和折射光线,对各种颜色的光线进行组合,从而同时击中所有目标来过关。感兴趣的朋友到Appstore中输入LvS可以找到这个游戏。这个游戏非常考验你的智力哦!!!虽然有许多关卡是自己设计的,在不看答案的情况下,一些关卡还
2011-10-29 22:24:55
1830
1
原创 在中断模式下检查和修改数据
在调试程序的过程中,如果程序在某个位置挂起执行(例如:中断到某个断点),通常我们希望能够通过一些工具观察程序的当前状态。其中,最重要的当属查看程序中数据的值。例如,查看某个变量的类型和值、某个寄存器的值、或某段内存的值。所以,几乎所有的调试器提供了大量用于检查和修改程序数据的工具
2011-08-16 22:52:34
3641
1
原创 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
4201
1
原创 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
1793
原创 问题2:是否只有通过基类指针或引用间接指向派生类子类型时,多态性才会起作用?
只有通过基类指针或引用间接指向派生类子类型时,多态性才会起作用。使用基类对象并不会保留派生类的类型身份,不再具备多态性。
2010-07-02 10:35:00
2235
原创 问题1:指针与引用有什么区别?
指针(Pointer)持有另一个对象的地址,使我们能够间接地操作这个对象。引用(Reference)有时候又称为别名,它可以用作对象的另一个名字。它们都是让你间接引用其他对象。从语法的角度比较,二者主要区别如下:1) 指针用操作符“*”和“->”,引用使用操作符“.”。2) 引用在创建的同时必须初始化,即引用到一个有效的对象;而指针在定义的时候可以不初始化,在定义后面的任何地方重新赋值。3) 指针可以被重新赋值以指向另一个不同的对象。但是,引用则总是指向在初始化时被指定的对象,
2010-07-02 10:26:00
2117
1
原创 FDO——世界文件
在处理栅格数据时,有时会碰到一些不具备地理位置信息的栅格文件,例如BMP格式的栅格数据,或者发现栅格文件中包含的地理位置不正确。此时,如果希望Raster Provider或GDAL Provider能够正确处理这些栅格数据,用户必须为这些这些栅格文件提供一个世界文件(World File)。那么,什么是世界文件呢?世界文件是一个为栅格图像指定地理位置信息的文本文件,该文本文件共有6行,描述了
2010-02-27 14:47:00
2483
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
4086
原创 MapGuide应用程序示例——为你的应用程序添加帮助
MapGuide预定义了许多命令用于提供一些常用的功能,例如平移地图、缩放地图、打印地图、选择要素、测量距离、创建缓冲区等。对于大部分预定义命令,我们只能直接使用它们,或者修改它们的显示名称、工具提示、显示在状态栏上的描述信息、图标等。 下面我们以添加“Help”命令添加到工具栏为例,介绍如何使用预定义命令。 1) 创建帮助文档。 假设我们创建了如下的帮助文档“index.html”,
2010-01-06 20:32:00
2410
原创 MapGuide应用程序示例——为你的应用程序添加帮助
MapGuide预定义了许多命令用于提供一些常用的功能,例如平移地图、缩放地图、打印地图、选择要素、测量距离、创建缓冲区等。对于大部分预定义命令,我们只能直接使用它们,或者修改它们的显示名称、工具提示、显示在状态栏上的描述信息、图标等。本节中,我们以添加“Help”命令添加到工具栏为例介绍如何使用预定义命令。
2010-01-06 20:31:00
224
原创 MapGuide应用程序示例——你好,MapGuide!
图 3‑4显示了基于MapGuide的Web应用程序的开发流程,整个开发流程可以分为五个阶段。图中,矩形代表任务,椭圆形被任务使用的或被任务创建的实体,箭头代表数据流。1) 加载文件类型的数据,配置到外部数据库的连接,通过联接(Join)一个要素源到另一个要素源扩展要素数据。2) 通过引用要素源的数据和为要素应用样式创建图层。3) 将图层结合起来创建地图。4) 通过Internet
2009-12-30 09:16:00
7196
7
原创 创建和加载资源包(Package)
MapGuide提供了两种方式创建资源包。一种是使用MapGuide Studio,另一种是使用MapGuide站点管理器(Site Administrator)。如果要加载资源包,只能使用MapGuide站点管理器。1.使用站点管理器创建和加载资源包下面我们以开源版MapGuide提供的美国威斯康辛州希博伊根(Sheboygan)县的地图数据(http://download.osgeo.
2009-12-24 17:31:00
2288
1
原创 MapGuide源码分析----MapGuide服务器源码分析
同样,在介绍MapGuide 服务器如何处理枚举资源操作之前,让我们首先来看看MapGuide 服务器用于处理服务请求和操作的类,图19‑9显示服务请求处理器类的类图,图19‑10显示了操作处理器类的类图。图 19‑10 服务请求处理器类的类图图 19‑11 操作处理器类的类图MapGuide提供了资源服务、要素服务等多种服务,每种服务包含了大量操作。MapGuide为每种服务
2009-12-20 11:49:00
2864
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
2239
原创 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
2399
原创 深入FDO----处理栅格图像
FDO不仅支持几何数据,而支持栅格数据,用户可以通过Raster Provider或GDAL Provider读取栅格数据。而且,这两种Provider都支持函数MOSAIC、CLIP、RESAMPLE,可以将多张栅格图像合并起来,截取栅格图像的一部分。FDO使用类FdoIRaster来表示栅格图像,使用这个类可以读取和设置图像的位置、大小、图像中包含数据的类型、图像的存储和组织模型等信息。调
2009-12-05 12:20:00
2322
原创 深入FDO----模式覆盖
一般情况下,只有ODBC、Raster和WMS Provider需要使用模式覆盖,所以本节主要介绍如何为这三种Provider创建模式覆盖。1.1.1 模式覆盖使用模式覆盖,FDO应用程序就可以定制逻辑模式和物理存储之间的映射。由于不同的Provider用于支持的不同的数据,不同数据的物理存储格式差异很大,所以模式映射也因Provider而异,例如基于RDBMS的Provid
2009-12-03 21:01:00
2131
原创 深入FDO----执行SQL语句
FDO定义了大量的命令用于执行要素相关的功能,但是仍然屏蔽了对于许多数据源特有的功能。对于RDBMS类型的数据源,FDO提供了执行SQL语句的功能,让用户可以调用某些单纯使用FDO无法实现的功能。当然,某一种Provider是否支持执行SQL语句还需要看它的能力。FDO将SQL语句分为了两类,一类为包含关键词“Select”的SQL语句,执行这类SQL语句会返回一个结果集,另一类是不包含关键词
2009-12-01 20:29:00
1862
原创 深入FDO----数据维护
本节将介绍如何用FDO API进行数据维护,数据维护相关的主要操作如下:l 插入(Inserting)l 更新(Updating)l 删除(Deleting)l 事务(Transactions)l 加锁(Locking)1.1.1 属性值在执行插入和更新操作之前,往往需要为插入和更新的要素创建属性值。FDO使用类FdoPropertyVal
2009-11-29 21:53:00
1956
原创 深入FDO----管理Data Store
Data Store是一系列的集成对象的数据仓储,对于文件类型的Provider来说,一个Data Store往往就是一个文件。存储在Data Store中的对象可以被建模为一个或多个模式中的类或要素类,这意味着一个Data Store中可以包含一个或多个模式。FDO提供了两种命令FdoICreateDataStore和FdoIListDataStores分别用于创建Data Store
2009-11-29 21:50:00
1466
原创 深入FDO----管理空间上下文
空间上下文定义了存储和操作几何数据所需的属性,例如坐标系、坐标容差等。FDO定义了FdoIActivateSpatialContext、FdoICreateSpatialContext、FdoIDestroySpatialContext和FdoIGetSpatialContexts四个命令分别用于设置当前活动的空间上下文、创建一个空间上下文、销毁一个空间上下文和获取空间上下文及其相关信息。目
2009-11-28 08:50:00
1217
原创 模式管理
本节将阐述如何创建和使用模式,并将解释一些模式管理相关的问题,例如如何使用FDO要素模式来描述空间要素。 1.1.1 模式概述 FDO要素模式提供了一种对空间要素的逻辑描述机制,而FDO Provider负责将要素模式映射为底层的物理数据结构。要素模式是空间要素数据的逻辑视图,它完全独立于数据存储,一切FDO中的数据操作都是针对逻辑要素模式中定义的类以及关系。FDO要素模式在某种程度上是基于O
2009-11-26 22:18:00
1349
原创 模式管理
本节将阐述如何创建和使用模式,并将解释一些模式管理相关的问题,例如如何使用FDO要素模式来描述空间要素。1.1.1 模式概述FDO要素模式提供了一种对空间要素的逻辑描述机制,而FDO Provider负责将要素模式映射为底层的物理数据结构。要素模式是空间要素数据的逻辑视图,它完全独立于数据存储,一切FDO中的数据操作都是针对逻辑要素模式中定义的类以及关系。FDO要素模式
2009-11-26 21:51:00
1281
1
原创 模式管理
FeatureClass请参考 ClassDefinition (带有主键属性)...Type”abstract=““/>{ 请参考FeatureClass.GeometryProperty }{baseClass}?{baseClass.schema.name}:{baseClass.name} :‘gml:AbstractFeatu
2009-11-26 21:42:00
1262
原创 深入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
1455
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
2670
1
原创 深入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
1496
原创 深入FDO----内存管理机制
调用某些FDO的函数,如创建方法,需要申请内存,而这些内存需要在适当的时机释放,以免内存泄漏。FDO使用了引用计数的方式来实现管理对象的生命周期,每个对象都维护着一个引用计数,只有当这个对象的引用计数变为0时,才会去释放这个对象。所以,FDO中每个类都从FdoIDisposable类继承而来的,FdoIDisposable定义了Release()和AddRef()方法。调用方法Release
2009-11-14 09:31:00
1507
2
原创 深入FDO----FDO概念
在介绍FDO API的用法之前,我们需要了解一些FDO的基本概念,这些概念无论对FDO的理解,还是后续章节的理解都非常重要。 数据相关的概念1) 要素(Feature)要素是对自然界中对象的一种抽象,它直接或间接关联于某个地理位置,例如道路、地块等。一个空间要素具有一个或多个几何属性,例如一个道路要素可以被表示为一条线,一个消防龙头可以被表示为一个点。一个非空间要素没有几何属性,但是关
2009-11-12 22:21:00
5525
1
原创 深入FDO----FDO的历史
到现在为止,GIS已经有几十年的历史了,许多的软件公司和组织提供了不同的解决方案,使用了不同的方式存储和管理GIS数据,例如AutoCAD使用DWG文件,AutoCAD Map 3D使用SDF文件,ArcGIS使用SHP、 Coverage、Geodatabase,Oracle使用数据库服务器。Autodesk需要一种通用的方式访问不同类型的GIS数据源,这种方式需要有足够的灵活性,既能
2009-11-12 22:11:00
2697
原创 MapGuide开源版的修改流程
MapGuide代码的修改可以分为两大类:功能增强(Ehancement)和缺陷修正(Defect),MapGuide使用Tickets来管理和跟踪这些修改,访问http://trac.osgeo.org/mapguide/report可以浏览和查询活动的和已经关闭的Tickets,对于功能增强MapGuide还使用了RFC进行管理。需要注意的是无论创建Tickets还是RFC,都需要有一个
2009-11-04 20:48:00
1549
原创 MapGuide开源版的管理组织
作为OSGeo的一个子项目,MapGuide遵守与其他OSGeo项目的类似的管理方式,由如下四类组织和角色进行项目的开发和管理。1) 项目筹划指导委员会(Project Steering Committee)项目筹划指导委员会简称为PSC,负责MapGuide开源项目的管理工作,决定MapGuide开源版的发布日期、哪些功能和缺陷修正整合到那个发布版本、那些人可以成为项目开发人员等
2009-11-04 20:46:00
1106
原创 编译MapGuide
如果想自己编译MapGuide的源代码和运行MapGuide,那么请参考MapGuide开源版的文档 (http://mapguide.osgeo.org/documentation.html),各个版本MapGuide的编译步骤基本相同,但是细节却不尽相同,所以要找到使用的源代码所对应的文档,严格按照文档中描述的步骤编译MapGuide。因为MapGuide服务器和Web扩展是两个独立
2009-11-04 20:44:00
1557
原创 MapGuide源代码结构
MapGuide源代码的目录结构如表18‑1和图18‑2所示,在后续的章节中我们将重点介绍Common、OEM、服务器和Web扩展部分的源代码。 文件夹描述InstallerMapGuide安装程序的源代码。MgDevMapGuide服务器和Web扩展的源代码。 Bu
2009-11-04 20:38:00
1567
原创 MapGuide源码分析--访问MapGuide源代码
如果要访问MapGuide的源代码,需要先安装一个Subversion的客户端,通过Subversion的网站(http://subversion.tigris.org/)可以了解到关于Subversion最为详尽的信息。一般情况下,推荐大家使用TortoiseSVN访问MapGuide的源代码,它将SVN客户端和Windows Shell很好地整合在一起,在TortoiseSVN的网站(http
2009-11-01 08:25:00
1548
原创 要素服务之空间上下文
一般情况下,如果一个要素类包含一个几何属性,那么它就有一个相关联的空间上下文(Spatial Context),通过这个关联的空间上下文,可以得知要素类中每个几何属性所使用的坐标系信息,例如坐标系名称、坐标的容差值、范围、范围类型等信息,如下的代码展示了如何获得一个要素类所关联的空间上下文名称。function getSpatialContextName($classDef)
2009-10-20 21:05:00
1251
原创 Autodesk地理信息系统解决方案
地理信息系统,简称GIS(Geographic Information System),是用于采集、存储、管理、处理、检索、分析和表达地理空间数据的计算机系统,是分析和处理海量地理数据的通用技术。GIS属于信息系统的一类,不同之处在于它能处理地理空间数据。地理空间数据描述地球表面(包括大气层和较浅的地表下空间)空间要素的位置和属性,在GIS中的两种地理数据成分:空间数据,与空间要素几何特性有关;属
2009-10-11 16:34:00
3776
原创 要素服务之长事务
在GIS应用中,常常会出现这样一种情况,空间数据库中对某个数据集进行的一次操作(比如编辑)很复杂,或者是出于某种原因无法在有限的特定时间内完成,全部完成操作需要比较长的时间,而传统的关系数据库在编辑的数据时要锁定数据,这样就会造成别的用户在很长一段时间内也无法访问(至少是无法编辑)这些数据集,所以GIS中通过长事务解决这类问题。在关系数据库中,事务应该具有四个属性:原子性、一致性、隔离性、持续
2009-10-09 19:58:00
1277
原创 要素服务之缓存
要素服务在访问要素源中的数据之前,除了需要必须创建一个到要素源的FDO连接,还经常需要描述要素源的模式和空间上下文(Spatail Context),获取要素类及其属性的定义信息,这些操作都会花掉一定的时间,特别是描述要素源的模式,所以MapGuide服务器将这些信息缓存下来以提高MapGuide服务器的性能。当要素服务需要某个要素源的模式、要素类定义、属性定义、空间上下文时,首先会在要素服务
2009-10-09 13:30:00
906
best kept secrets of peer code review
2013-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人