Christie72
路人甲
路人甲
  • 注册日期2004-07-22
  • 发帖数92
  • QQ
  • 铜币423枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2179回复:1

arcengine中如何实现spatial analyst 的raster calculator功能

楼主#
更多 发布于:2006-07-25 12:16
<P>arcengine中如何实现spatial analyst 的raster calculator功能?  </P>
<P>目的是将多个栅格图层乘系数后相加.</P>
喜欢0 评分0
zhaoqinliu
外卖仔
外卖仔
  • 注册日期2005-04-18
  • 发帖数50
  • QQ
  • 铜币284枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-07-26 16:01
<P>仔细看看下面的例子你就会写了:</P>
<P>Sub RasterModel()<BR>    'Get the focused map from MapDocument<BR>    Dim pMxDoc As IMxDocument<BR>    Dim pMap As IMap<BR>    Set pMxDoc = ThisDocument<BR>    Set pMap = pMxDoc.FocusMap<BR><BR>    'Get the input raster from the first layer in ArcMap<BR>    Dim pLayer As ILayer<BR>    Set pLayer = pMap.Layer(0)<BR>    If Not TypeOf pLayer Is IRasterLayer Then<BR>        Exit Sub<BR>    End If<BR><BR>    Dim pRasLayer As IRasterLayer<BR>    Set pRasLayer = pLayer<BR>    Dim pInRaster As IRaster<BR>    Set pInRaster = pRasLayer.Raster<BR><BR>    'Create a RasterModel object<BR>    Dim pRasModel As IRasterModel<BR>    Set pRasModel = New RasterModel<BR><BR>    'Set output workspace in the analysis environment<BR>    Dim pEnv As IRasterAnalysisEnvironment<BR>    Set pEnv = pRasModel<BR><BR>    Dim pWS As IWorkspace<BR>    Dim pWSF As IWorkspaceFactory<BR>    Set pWSF = New RasterWorkspaceFactory<BR>    Set pWS = pWSF.OpenFromFile("c:\temp", 0)<BR>    Set pEnv.OutWorkspace = pWS<BR><BR>    'Bind the input raster<BR>    pRasModel.BindRaster pInRaster, "input1"<BR><BR>    'Specify map algebra expression, use vbLf to create seperate lines<BR>    <FONT color=#f70909>pRasModel.Script = "[out1] = [input1] + 50" + vbLf + _<BR>                       "[out2] = Slice([out1], Eqinterval, 5)" + vbLf + _<BR>                       "[out3] = [out1] + 100 * [out2]"</FONT><BR><BR>    'Execute map algebra expression(s)<BR>    <FONT color=#ff0000>pRasModel.Execute</FONT><BR><BR>    'Get output rasters<BR>    Dim pOutRaster1 As IRaster<BR>    Set pOutRaster1 = pRasModel.BoundRaster("out1")<BR><BR>    Dim pOutRaster2 As IRaster<BR>    Set pOutRaster2 = pRasModel.BoundRaster("out2")<BR><BR>    Dim pOutRaster3 As IRaster<BR>    Set pOutRaster3 = pRasModel.BoundRaster("out3")<BR><BR>    'Unbind input raster<BR>    pRasModel.UnbindSymbol "input1"<BR><BR>    'Add outputs into ArcMap as raster layers<BR>    Dim pOutRasLayer1 As IRasterLayer<BR>    Set pOutRasLayer1 = New RasterLayer<BR><BR>    pOutRasLayer1.CreateFromRaster pOutRaster1<BR>    pMap.AddLayer pOutRasLayer1<BR><BR>    Dim pOutRasLayer2 As IRasterLayer<BR>    Set pOutRasLayer2 = New RasterLayer<BR><BR>    pOutRasLayer2.CreateFromRaster pOutRaster2<BR>    pMap.AddLayer pOutRasLayer2<BR><BR>    Dim pOutRasLayer3 As IRasterLayer<BR>    Set pOutRasLayer3 = New RasterLayer<BR><BR>    pOutRasLayer3.CreateFromRaster pOutRaster3<BR>    pMap.AddLayer pOutRasLayer3<BR>End Sub<BR></P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部