• 又一篇raster


    5 TIN
    Tin子系统包括访问和操作tin的对象。
    TINs主要用于表面模拟。
    三个主要的接口:
    ITinAdvanced:提供对于基本属性的访问,获取基础数据结构开始点
    ITinEdit:用于TIN构建和编辑
    ISurface:用于提供表面分析函数,例如等值线,剖面和volumetrics

    组成的基本元素:
    Triangles
    edges
    nodes

    10 Raster子系统
    包括访问和操作rasters,rasters datasets, raster catalogs工作的对象。这些对象可以基于文件,也可以基于Geodatabase。
    无论是基于文件还是基于geodatabase系统的类型,都有两个类型表达栅格数据:
    raster dataset:表达已经存在的数据
    raster catalog:将raster dataset集合看成一个整体进行管理。
    一个raster dataset有一个或者多个波段组成。Raster dataset还可以包括pyramids,statistics,colormap.

    10.1 Raster data access 对象
    访问raster data,必须利用workspacefactory(RasterWorkspaceFactory)建立一个workspace.
    AccessWorkspaceFactory用于初始化一个Access Workspace;
    SdeWorkspaceFactory用于初始化一个database workspace.
    上述两个类的对象用于访问不同存贮形式的Raster数据。

    Public Function OpenRasterWorkspace(sPath As String) As IRasterWorkspace
    Dim pWKSF As IWorkspaceFactory
    Set pWKSF = New RasterWorkspaceFactory
    Dim pRasterWs As IRasterWorkspace
    Set pRasterWs = pWKSF.OpenFromFile(sPath, 0)
    Set OpenRasterWorkspace = pRasterWs
    End Function

    Workspace对象提供了访问RasterDataset对象和RasterCatalog对象的三个接口:
    1.IRasterWorkspace接口
    2.IRasterWorkspace2接口
    以上两个接口用于打开和建立基于文件的RasterDataset。


    Dim pRasterDataset as IRasterdataset
    Dim pRasterWs as IRasterWorkspace2
    Set pRasterWs = OpenRasterWorkspace("D:\data")
    Set pRasterDataset = pRasterWs.OpenRasterDataset("airphoto.img",0)
    原点,宽,高和象元原始值可以通过参数进行修改。

    3.IRasterWorkspaceEX接口
    通过AccessWorkspace访问基于Personal geodatabase的;通过databaseWorkspace访问寄予enterprise geodatabase的。

    Dim pWorkspace as IRasterWorkspaceEx
    Dim pRasterDataset as IRasterDataset
    Dim pRasterCatalog as IrasterCatalog
    'From a personal geodatabase.
    Set pWorkspace = OpenAccessWorkspace("D:\data\images.mdb")
    'Or from an enterprise geodatabase
    Set pWorkspace = OpenSDEWorkspace("myserver","5151","raster", "raster","raster
    Set pRasterDataset = pWorkspace.OpenRasterDataset("airphoto")
    Set pRasterCatalog = pWorkspace.OpenRasterCatalog("RedLandImages")

    在geodatabase中建立一个raster dataset是建立一个没有dimension的空raster dataset,它具有基本的占位符,例如波段数,象元类

    型,RASTER字段属性,GEOMETRY字段属性。一旦空的raster dataset 建立后,raster象元能够从其他raster data中追加,通过

    mosaicking方法。例如:

    Dim pWorkspace As IRasterWorkspaceEx
    Set pWorkspace = OpenSDEWorkspace ("myserver","5151","raster", "raster","raster
    ' Create a RasterStorageDef object for storage parameters, define compression a
    Dim pStorageDef As IRasterStorageDef
    Set pStorageDef = New RasterStorageDef
    pStorageDef.CompressionType = esriRasterSdeCompressionTypeJPEG2000
    ' Create a RasterDef object for the RASTER field
    Dim pRasterDef As IRasterDef
    Set pRasterDef = New RasterDef
    Set pRasterDef.SpatialReference = New UnknownCoordinateSystem
    ' Create a GeometryDef object for the GEOMETRY field
    Dim pGeoDef As IGeometryDef
    Set pGeoDef = New GeometryDef
    Set pGeoDef.SpatialReference = New UnknownCoordinateSystem
    Dim pSDERasterDs As IRasterDataset
    Set pSDERasterDs = pWorkspace .CreateRasterDataset("mydataset", 1, PT_UCHAR, pS

    10.2 Raster datasets
    一个RasterDataset有一个或多个连续的栅格波段组成。
    RasterDataset对象可以执行基本的数据集管理功能,也可以用于获取数据集属性
    可以利用ISaveAs接口存储成其他格式。
    Dim pSaveAs as ISaveAs
    Set pSaveAs = pRasterDataset
    pSaveAs.SaveAs "MyImage.img", pRasterWs, "IMAGINE Image"
    pSaveAs.SaveAs "MyRaster", pWorkspace, "SDR"

    RasterDataset支持IRasterBandColoection接口,除了添加,删除波段对于RasterDataset没有影响。
    RasterDataset对象可以利用初始化Raster或者RasterBand对象描绘数据的其他方面。

    两个方法可以用于从RasterDataset建立Raster对象。
    CreateFullRaster:建立一个Raster,带有全属性
    CreateDefaultRaster:建立一个Raster,拥有方形的cell,仅包含三个波段。

    除了通过workspace可以访问之外,RasterDataset还可以利用RasterDataset属性从波段中获得。

    10.3 Raster Bands
    这个对象描绘一个Raster dataset的现有波段。
    下面的代码显示了如何从Raster或者RasterDataset对象访问RasterBand。

    Dim pBandCol as IRasterBandCollection
    Set pBandCol = pRasterPtr 'May be a Raster or a RasterDataset
    ' Get the first band of the raster
    Dim pRasterBand as IRasterBand
    Set pRasterBand = pBandCol.Item(0)

    有一些接口只支持基于文件的RasterBand,不支持Database RasterBand.
    一个Raster波段包括像元值,可以通过RasterBand访问。
    下面代码是访问raster colormap:

    Dim pColormap As IRasterColormap
    Dim HasColormap As Boolean
    HasColormap = pRasterBand.HasColormap
    If HasColormap = True Then Set pColormap = pRasterBand.Colormap

    RasterBand支持IRawPixel接口,可以读取和写波段的像元值。

    10.4 Raster
    该对象与RasterDataset和RasterBand对象相比,能够改变而不影响原数据。
    允许Raster表达成你想要的,你可以定义特殊投影,幅度等。这可以使Raster更加有利于显示和分析。

    因为Raster的Transient nature,

    IRasterProps是一个重要的接口,用于控制Raster的属性,例如幅度,宽度,高度,空间参考,像元类型,Nodata value等。

    Dim pRasterProps as IRasterProps
    Set pRasterProps = pRaster
    pRaster.ResampleMethod = RSP_BilinearInterpolation
    pRasterProps.SpatialReference = pNewSpatialReference
    Dim pSaveAs as ISaveAs
    Set pSaveAs = pRaster
    pSaveAs.SaveAs "MyRaster", pRasterWs, "GRID"

    Raster对象能够利用IPixelFilterOperation建立PixelBlock和通过像元filter修改像元值。也可以利用IrasterEdit接口直接修改Raster的

    像元值。

    Raster能够利用RasterLayer对象显示,这个对象是esriCarto库对象。Raster可以在RasterDataset中建立,也以从RasterLayer中获

    取。
    Set pRaster = pRasterLayer.Raster

    10.5 Pixel blocks
    这个对象包含像元队列能够从Raster 和Raster band中读取。
    这个对象能够从Raster和RasterBand中创建。在创建的手需要定义pixel block,一旦建立,pixel block的大小就不能改变了。
    你可以获取像元值从pixel block,改变像元值。
    PixelBlockCursor或者RasterCursor两个对象允许你分割一个大的image成为许多小pixel blocks。
    这个对象在9.0中得到了加强。

    10.6 Raster catalogs
    这个对象是9.0中新的数据类型,
    这个对象用于管理raster datasets集合作为一个整体。
    建立Raster catalogs,首先要建立空的Raster catalog,然后添加包含raster值的rows到raster catalog.
    RasterCatalog能够利用在esriCarto库中的GdbRasterCatalogLayer对象显示。

  • 相关阅读:
    新安装的Apache和php,测试可以解析phpinfo,但是无法打开drupal网站
    Drupal7安装注意事项
    drupal7 为视图添加 过滤标准 内容类型
    Drupal网站报错:PDOException: in lock_may_be_available()
    窗口聚合函数与分组聚合函数的异同
    Linux环境下段错误的产生原因及调试方法小结(转)
    gzip 所使用压缩算法的基本原理(选摘)
    InfluxDB使用纪录
    子网掩码解释(转)
    列存的压缩原理学习
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1684517.html
Copyright © 2020-2023  润新知