IRasterSurface Example

简介: ArcGIS Developer Help  (ESRI.ArcGIS.Analyst3D)  ''   format messagebox message with some properties of designated IRasterSurface::RasterBand'Public ...
  ArcGIS Developer Help  (ESRI.ArcGIS.Analyst3D) 
'
'   format messagebox message with some properties of designated IRasterSurface::RasterBand
'
Public Sub DisplaySelectedRasterBandProperties()
  On Error GoTo DisplaySelectedRasterBandProperties_ERR
   
  Dim pLayer As ILayer
  Dim pSxDoc As ISxDocument
  Dim pMxDoc As IMxDocument
  ' get the document's selected raster layer:
  If TypeOf ThisDocument Is ISxDocument Then
    Set pSxDoc = ThisDocument
    Set pLayer = pSxDoc.SelectedLayer
  ElseIf TypeOf ThisDocument Is IMxDocument Then
    Set pMxDoc = ThisDocument
    Set pLayer = pMxDoc.SelectedLayer
  Else
    Exit Sub
  End If
  ' exit if a raster layer was not found:
  If pLayer Is Nothing Then
    MsgBox "Please select a raster layer in the Table of Contents."
    Exit Sub
  ElseIf Not TypeOf pLayer Is IRasterLayer Then
    MsgBox "Please select a raster layer in the Table of Contents."
    Exit Sub
  End If
 
  ' the name of the selected layer:
  Dim sRasterName As String
  sRasterName = pLayer.name
  ' Query Interface the IRasterLayer from the selected layer:
  Dim pRSurface As IRasterSurface
  Dim pRLayer As IRasterLayer
  Set pRLayer = pLayer
  Dim p3DProp As I3DProperties
  Dim pLE As ILayerExtensions
  Set pLE = pLayer
 
  ' look for 3D properties of layer:
  Dim i As Integer
  For i = 0 To pLE.ExtensionCount - 1
    If TypeOf pLE.Extension(i) Is I3DProperties Then
      Set p3DProp = pLE.Extension(i)
      Exit For
    End If
  Next
  ' We want the IRasterSurface of the layer;
  ' Look first for base surface of layer itself:
  If Not p3DProp Is Nothing Then
    Set pRSurface = p3DProp.BaseSurface
  End If
  ' if base surface of layer is not set, create the IRasterSurface from
  ' the first band of the raster:
  If pRSurface Is Nothing Then
    If Not pRLayer.Raster Is Nothing Then
      Set pRSurface = New RasterSurface
      Dim pBands As IRasterBandCollection
      Set pBands = pRLayer.Raster
      pRSurface.RasterBand = pBands.Item(0)
    End If
  End If
  Dim pRP As IRasterProps
  Dim pR As IRaster
  Dim pRB As IRasterBand
 
  ' Query Interface the raster band:
  Set pRB = pRSurface.RasterBand
  ' if no statistics have been created yet, call method to do this:
  If Not pRB.Statistics.IsValid Then
    pRB.Statistics.Recalculate
  End If
 
  ' QI back to the IRaster to get to certain properties:
  Set pR = pRB.RasterDataset.CreateDefaultRaster
  Set pRP = pR
 
  '  generate the summary message:
  Dim sMsg As String
  sMsg = sRasterName & ":" & vbCrLf
  sMsg = sMsg & "----------------------------------" & vbCrLf
  sMsg = sMsg & "MINIMUM (BAND 1): " & pRB.Statistics.Minimum & vbCrLf
  sMsg = sMsg & "MAXIMUM (BAND 1): " & pRB.Statistics.Maximum & vbCrLf
  sMsg = sMsg & "----------------------------------" & vbCrLf
  sMsg = sMsg & "XMIN: " & pRP.Extent.xMin & vbCrLf
  sMsg = sMsg & "XMAX: " & pRP.Extent.xMax & vbCrLf
  sMsg = sMsg & "YMIN: " & pRP.Extent.yMin & vbCrLf
  sMsg = sMsg & "YMAX: " & pRP.Extent.yMax & vbCrLf
  sMsg = sMsg & "----------------------------------" & vbCrLf
  sMsg = sMsg & "MEAN CELL SIZE X: " & pRP.MeanCellSize.x & vbCrLf
  sMsg = sMsg & "MEAN CELL SIZE Y: " & pRP.MeanCellSize.y & vbCrLf
  sMsg = sMsg & "HEIGHT: " & pRP.Height & vbCrLf
  sMsg = sMsg & "WIDTH: " & pRP.Width & vbCrLf
  sMsg = sMsg & "IS INTEGER: " & pRP.IsInteger & vbCrLf
 
  If Not pRP.SpatialReference Is Nothing Then
    sMsg = sMsg & "SPATIAL REFERENCE: " & pRP.SpatialReference.name & vbCrLf
  Else
    sMsg = sMsg & "SPATIAL REFERENCE: " & vbCrLf
  End If
  sMsg = sMsg & "----------------------------------" & vbCrLf
 
  ' display the resulting message:
  MsgBox sMsg, vbOKOnly, "Raster Properties"
   
  Exit Sub
DisplaySelectedRasterBandProperties_ERR:
  MsgBox "DisplaySelectedRasterBandProperties_ERR: " & err.Description
End Sub
相关文章
|
3天前
|
关系型数据库 Serverless 分布式数据库
高峰无忧,探索PolarDB PG版Serverless的弹性魅力
在数字经济时代,数据库成为企业命脉,面对爆炸式增长的数据,企业面临管理挑战。云原生和Serverless技术革新数据库领域,PolarDB PG Serverless作为阿里云的云原生数据库解决方案,融合Serverless与PostgreSQL,实现自动弹性扩展,按需计费,降低运维成本。它通过计算与存储分离技术,提供高可用性、灾备策略和简化运维。PolarDB PG Serverless智能应变业务峰值,实时监控与调整资源,确保性能稳定。通过免费体验,用户可观察其弹性性能和价格力,感受技术优势。
|
12天前
|
Kubernetes 安全 Devops
【云效流水线 Flow 测评】驾驭云海:五大场景下的云效Flow实战部署评测
云效是一款企业级持续集成和持续交付工具,提供免费、高可用的服务,集成阿里云多种服务,支持蓝绿、分批、金丝雀等发布策略。其亮点包括快速定位问题、节省维护成本、丰富的企业级特性及与团队协作的契合。基础版和高级版分别针对小型企业和大规模团队,提供不同功能和服务。此外,云效对比Jenkins在集成阿里云服务和易用性上有优势。通过实战演示了云效在ECS和K8s上的快速部署流程,以及代码质量检测和AI智能排查功能,展示了其在DevOps流程中的高效和便捷,适合不同规模的企业使用。本文撰写用时5小时,请各位看官帮忙多多支持,如有建议也请一并给出,您的建议能帮助我下一篇更加出色。
136105 16
|
13天前
|
存储 缓存 监控
你的Redis真的变慢了吗?性能优化如何做
本文先讲述了Redis变慢的判别方法,后面讲述了如何提升性能。
102159 2
|
13天前
|
机器学习/深度学习 并行计算 算法
Transformer 一起动手编码学原理
学习Transformer,快来跟着作者动手写一个。
94231 2
|
12天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
|
17天前
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
对于如何更好地释放云上性能助力AIGC应用创新?“阿里云弹性计算为云上客户提供了ECS GPU DeepGPU增强工具包,帮助用户在云上高效地构建AI训练和AI推理基础设施,从而提高算力利用效率。”李鹏介绍到。目前,阿里云ECS DeepGPU已经帮助众多客户实现性能的大幅提升。其中,LLM微调训练场景下性能最高可提升80%,Stable Difussion推理场景下性能最高可提升60%。
|
13天前
|
存储 弹性计算 Cloud Native
1 名工程师轻松管理 20 个工作流,创业企业用 Serverless 让数据处理流程提效
为应对挑战,语势科技采用云工作流CloudFlow和函数计算FC,实现数据处理流程的高效管理与弹性伸缩,提升整体研发效能。
64686 2
|
19天前
|
消息中间件 安全 API
Apache RocketMQ ACL 2.0 全新升级
RocketMQ ACL 2.0 不管是在模型设计、可扩展性方面,还是安全性和性能方面都进行了全新的升级。旨在能够为用户提供精细化的访问控制,同时,简化权限的配置流程。欢迎大家尝试体验新版本,并应用在生产环境中。
187462 6
|
15天前
|
存储 关系型数据库 数据库
|
22天前
|
物联网 PyTorch 测试技术
手把手教你捏一个自己的Agent
Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用,用于方便地创建针对各种现实应用量身定制智能体,目前已经在生产级别落地。