Creatar二次开发教程
1理解Creatar
1.1 基本概念
1.1.1工作空间
工作空间是用户的工作环境,由系统创建,用于管理用户创建的多个工程对象。每个工程用于保存用户工作过程中操作和处理的所有数据,包括数据源、地图、三维场景、布局和系统资源库等内容。
  工程中存放了每个数据源相对于工程文件(扩展名为*.gpj)的相对路径、数据源别名、数据源打开方式(只读、独占、事务、加密四种方式)等信息。由于工作空间存放的是数据源的相对路径和别名,而没有存储和拷贝整个数据源,因此工作空间文件可以和数据源(文件)分开存放,工作空间中使用的空间数据仍然存储于数据源中;
  地图由一系列有序二维图层构成,存储了地图中每个图层对应的数据源和数据集,地图的显示风格、和图层的状态信息(显示、选择、编辑、捕捉等);
  三维场景由一系列三维图层构成,存储了场景中每个图层对应的数据源和数据集,图层的显示风格和状态信息。
1.1.2数据源
数据源是存储空间数据的场所。前面已经提到,所有的空间数据都存储于数据源而不是工作空间,任何对空间数据的操作都需要先打开并且获得数据源。
Creatar支持的数据源类型主要包括:
⏹内存数据源
⏹Access数据源
⏹Oracle数据源
1.1.3数据集
数据集是空间数据的基本组织单位之一。一个数据源通常由多个不同类型的数据集组成。您可以根据自己的实际需要,或者按照数据集的特征、或者按照不同的使用目的来组织它们,把它们存放到不同的数据源中。
Creatar支持的数据集主要包括:
⏹对象数据集
⏹多点数据集
⏹多线数据集
⏹多边形数据集
⏹TIN数据集
⏹矢量体数据集
⏹文本数据集
⏹栅格数据集
⏹钻孔数据集
⏹剖面数据集
⏹复合数据集
⏹块模型数据集
enum_GDatasetType
{
gDatasetTypeAny = 0,
gDatasetTypeObject = 1,
gDatasetTypePolyPoint = 2,
gDatasetTypePolyLine = 3,
gDatasetTypePolygon = 4,
gDatasetTypeTin = 5,
gDatasetTypeFVolume = 6,
gDatasetTypeText = 7,
gDatasetTypeRaster = 8,
gDatasetTypeDrill = 9,
gDatasetTypeSection = 10,
gDatasetTypeFeatureDataset = 11,
gDatasetTypeBlockModel = 12
};
//Feature的类型与数据集的类型不同并不是一一对应的关系。GFeatureType是按照地物特征类型进行分类;而数据集是按照数据组织方式进行分类,它还包括了复合数据集、栅格数据集、剖面数据集、混合数据集等复杂的数据组织方式;从点、线等简单数据集查询出的Feature,其种类和数据集是一一对应的;如果是复杂数据集,例如钻孔数据集,它既可以查询出钻孔对象(gFeatureTypeDrill),也可以查询出样品对象(gFeatureTypePolyLine);对于栅格数据集,它不是矢量对象,因此不能查询出Feature对象,更没有对应的FeatureType。
enum_GFeatureType
{
gFeatureTypeUnknown = 0,
gFeatureTypePolyPoint = 1,
gFeatureTypePolyLine = 2,
gFeatureTypePolygon = 3,
gFeatureTypeTin = 4,
gFeatureTypeFVolume = 5,
gFeatureTypeText = 6,安卓开发教程 pdf
gFeatureTypeDrill = 7,
gFeatureTypeSecArc = 8,
gFeatureTypeSecPolygon = 9,
gFeatureTypeBlockModel = 10
};
1.1.4图层
当数据集被加载到三维场景窗口中显示时被称为图层,因此图层是数据集的可视化定义。
一般情况下一个图层对应着一个数据集。同一个数据集可以被多次添加到不同的场景窗口中,而且可以赋予不同的显示风格,因此,同一个数据集可能对应不同场景上的多个图层。
1.1.5场景
记录一个或多个三维图层显示信息,以及用户观察数据的视角、灯光等环境信息
1.1.6渲染器
用于将数据集中的对象渲染到三维窗口的绘制工具,它定义了将数据以哪种颜或纹理等三维方式展现给用户。
1.1.7几何对象
父接口:IGGeometry
⏹点
⏹多点
⏹线
⏹多线
⏹多边形
⏹三角形
⏹TIN面
⏹矢量体
⏹块模型
⏹……
类型枚举:
enum_GGeometryType
{
gGeometryTypeAny = 0,
gGeometryTypePoint = 1,
gGeometryTypePolyPoint = 2,
gGeometryTypeNode = 3,
gGeometryTypePolyCurve = 4,
gGeometryTypePath = 5,
gGeometryTypeLineSegment = 6,
gGeometryTypeTin = 7,
gGeometryTypeTriangle = 8,
gGeometryTypePolygon = 9,
gGeometryTypeLineCurve = 10,
gGeometryTypeBlockModel = 18,
gGeometryTypeBlockCell = 19,
gGeometryTypeFVolume = 20,
gGeometryTypeFVRing = 21
};
1.2 对象层次关系
1.2.1几何对象数据关系1.2.2数据访问对象关系
1.2.3三维场景对象关系场景与视图:1---n
场景与图层:1---n
图层与渲染器:1---n
<<propput>> ZZoomState(newVal : DOUBLE) : HRESULT
ResetScene()
AddSceneView(pView : IGSceneView)DeleteSceneView(pView : IGSceneView)
RenderMap()
<<propget>> MapScale()<<propget>> RefScale()<<propput>> RefScale()DeleteMapView()
IGDisplay3D
<<propget>> PickSize(pVal : LONG*) : HRESULT
<<propget>> SceneGraph(pVal : OLE_Handle*) : HRESULT <<propput>> SceneGraph(pVal : OLE_Handle) : HRESULT <<propget>> Activ eView(pVal : IGSceneView*) : HRESULT <<propput>> Activ eView(pVal : IGSceneView*) : HRESULT
WorldToGeometry()GeometryToWorld()
SetMap()GetMap()SetDisplay()GetDisplay()RefreshRect()ShowFullMap()
<<propget>> ViewBound()MoveTo()
<<propget>> UnitRadio()<<propput>> UnitRadio()<<propget>> X Scale()<<propput>> X Scale()<<propget>> YScale()<<propput>> YScale()<<propget>> AxisType()<<propput>> AxisType()<<propget>> HorizonSign()<<propput>> HorizonSign()<<propget>> VerticalSign()<<propput>> VerticalSign()
SetMapRefPoint()GetMapRefPoint()SetViewRefPoint()GetViewRefPoint()TransformPoint()UnTransformPoint()TransformRect()UnTransformRect()SetViewport()GetViewport()TransformX ()UnTransformX ()TransformY()UnTransformY()
<<propget>> ReferenceScale()<<propput>> ReferenceScale()
<<propput>> Scene()<<propput>> BackColor()<<propget>> BackColor()<<propget>> InteractorStyle()<<propget>> LightingMode()<<propget>> IsNavigating()<<propput>> IsNavigating()<<propget>> IsFullScreen()
Refresh()
WindowToGeometry()GeometryToWindow()WindowToDisplay()DisplayToWindow()SelectionCount
SelectAll()Clear()
GetFeature(long, IGFeature**)
<<propget>> Name(pVal : BSTR*) : HRESULT <<propput>> Name(newVal : BSTR) : HRESULT <<propget>> Units(pVal : GUnits*) : HRESULT <<propput>> Units(newVal : GUnits) : HRESULT <<propget>> Bound(pVal : IGBound**) : HRESULT <<propget>> LayerCount(pVal : LONG*) : HRESULT
<<propget>> Layer(index : LONG, pVal : IGLayer**) : HRESULT
<<propget>> CurrentLayer(pVal : IGLayer**) : HRESULT <<propput>> CurrentLayer(newVal : IGLayer*) : HRESULT
InsertLayer(index : LONG, Layer : IGLayer*) : HRESULT
ClearLayers( : v Lock()UnLock()
IGStereoView
IsStereo : bool
StereoMode : gStereoMode EyeSeparation : double
EyeType : bool EyeDistance : double
Apply()
NodeSymbol : IGSymbol*EdgeSymbol : IGSymbo*ClearInvisibleLayers : Boolean gLightingMode_NoLight gLightingMode_HeadLight gLightingMode_SkyLight