dukeyongwang
路人甲
路人甲
  • 注册日期2008-08-25
  • 发帖数8
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3146回复:2

AE+VB.NET 实现IDW插值

楼主#
更多 发布于:2008-09-26 01:37
<br>AE+VB.NET插值 </p>
<p>Public Sub CreateContourListFromShapefile()<br>        
'用反距离IDW插值生成的栅格图像<br>        Dim pInterpolationOp As IInterpolationOp<br>        
pInterpolationOp = New RasterInterpolationOp<br>        ' Create the input point
object</p>
<p>        Dim pFeatureClass As IFeatureClass<br>        Dim pFeaturelayer As
IFeatureLayer<br>        pFeaturelayer =
Me.AxMapControl1.Map.Layer(0)<br>        pFeatureClass =
pFeaturelayer.FeatureClass</p>
<p>        ' Define the search radius<br>        Dim pRadius As
IRasterRadius<br>        pRadius = New RasterRadiusClass()<br>        
pRadius.SetVariable(12)</p>
<p>        'Create FeatureClassDescriptor using a value field<br>        Dim
pFCDescriptor As IFeatureClassDescriptor<br>        pFCDescriptor = New
FeatureClassDescriptor<br>        pFCDescriptor.Create(pFeatureClass, Nothing,
"GRADE")</p>
<p>        'Set cellsize for output raster in the environment<br>        Dim
dCellSize As Object = 50<br>        Dim pEnv As
IRasterAnalysisEnvironment<br>        pEnv = New RasterAnalysis<br>        pEnv
= pInterpolationOp<br>        
pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, dCellSize)</p>
<p>        'Perform the interpolation<br>        Dim rasDataset As
IGeoDataset<br>        rasDataset = pInterpolationOp.IDW(pFCDescriptor, 2,
pRadius)<br>        Dim pOutRaster As IRaster<br>        pOutRaster =
rasDataset</p>
<p>        'Add output into ArcMap as a raster layer<br>        Dim pOutRasLayer
As IRasterLayer<br>        pOutRasLayer = New RasterLayerClass<br>        
pOutRasLayer.CreateFromRaster(pOutRaster)<br>        
Me.AxMapControl1.AddLayer(pOutRasLayer)</p>
<p>        UsingRasterClassifyColorRampRenderer()</p>
<p>    End Sub</p>
<p>Private Sub UsingRasterClassifyColorRampRenderer() '分级渲染<br>        'Get
Map</p>
<p>        Dim pMap As IMap<br>        pMap = Me.AxMapControl1.Map</p>
<p>        'Get raster input from layer<br>        Dim pRLayer As
IRasterLayer<br>        pRLayer = pMap.Layer(0)<br>        Dim pRaster As
IRaster<br>        pRaster = pRLayer.Raster</p>
<p>        'Create classfy renderer and QI RasterRenderer interface<br>        
Dim pClassRen As IRasterClassifyColorRampRenderer<br>        pClassRen = New
RasterClassifyColorRampRenderer<br>        Dim pRasRen As
IRasterRenderer<br>        pRasRen = pClassRen</p>
<p>        'Set raster for the render and update<br>        pRasRen.Raster =
pRaster<br>        pClassRen.ClassCount = 10<br>        pRasRen.Update()</p>
<p>        'Create a color ramp to use<br>        Dim pRamp As
IAlgorithmicColorRamp<br>        pRamp = New AlgorithmicColorRamp<br>        
pRamp.FromColor = getRGB(255, 255, 128)<br>        pRamp.ToColor = getRGB(135,
42, 8)<br>        pRamp.Size = 10<br>        pRamp.CreateRamp(True)</p>
<p>        'Create symbol for the classes<br>        Dim pFSymbol As
IFillSymbol<br>        pFSymbol = New SimpleFillSymbol</p>
<p>        'loop through the classes and apply the color and label<br>        
Dim I As Integer<br>        For I = 0 To pClassRen.ClassCount - 1<br>            
pFSymbol.Color = pRamp.Color(I)<br>            pClassRen.Symbol(I) =
pFSymbol<br>            pClassRen.Label(I) = "等级" ; CStr(I + 1)<br>        
Next I</p>
<p>        'Update the renderer and plug into layer<br>        
pRasRen.Update()<br>        pRLayer.Renderer = pClassRen<br>        
Me.AxMapControl1.ActiveView.Refresh()<br>        
Me.AxMapControl1.Update()<br>        Me.AxTOCControl1.Update()</p>
<p>        'Release memeory</p>
<p>        pMap = Nothing<br>        pRLayer = Nothing<br>        pRaster =
Nothing<br>        pRasRen = Nothing<br>        pClassRen = Nothing<br>        
pRamp = Nothing<br>        pFSymbol = Nothing<br>    End Sub</p><p>可不可以帮我翻译成AE+C#的谢谢了。<br></p>
喜欢0 评分0
dukeyongwang
路人甲
路人甲
  • 注册日期2008-08-25
  • 发帖数8
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-09-26 01:44
object objectMaxDistance = null;<br>            object objectbarrier = null;<br>            IInterpolationOp pInterpolationOp;<br>            pInterpolationOp = new RasterInterpolationOpClass();<br><br>            IFeatureClass pFeatureClass;<br>            IFeatureLayer pFeaturelayer;<br>            pFeaturelayer = (IFeatureLayer)axMapControl1.get_Layer(0);<br>            pFeatureClass = pFeaturelayer.FeatureClass;<br><br>            IRasterRadius pRadius;<br>            pRadius = new RasterRadiusClass();<br>            pRadius.SetVariable(12,ref objectMaxDistance);<br><br>            IFeatureClassDescriptor pFCDescriptor;<br>            pFCDescriptor = new FeatureClassDescriptorClass();<br>            pFCDescriptor.Create(pFeatureClass,null,"GARDE");<br><br>            object dCellSize = 50;<br>            IRasterAnalysisEnvironment pEnv;<br>            pEnv = new RasterAnalysisClass();<br>            pEnv = (IRasterAnalysisEnvironment)pInterpolationOp;<br>            pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue,ref dCellSize);<br><br>            IGeoDataset rasDataset;<br>            rasDataset = pInterpolationOp.IDW((IGeoDataset)pFCDescriptor, 2, pRadius, ref objectbarrier);<br>            IRaster pOutRaster;<br>            pOutRaster = (IRaster)rasDataset;<br><br>            IRasterLayer pOutRasLayer;<br>            pOutRasLayer=new RasterLayerClass();<br>            pOutRasLayer.CreateFromRaster(pOutRaster);<br>            axMapControl1.AddLayer(pOutRasLayer);<br><br>            UsingRasterClassifyColorRampRenderer();<br>        }<br>        private void UsingRasterClassifyColorRampRenderer()<br>        {<br>            IMap pMap;<br>            pMap= axMapControl1.Map;<br>            bool test = true;<br><br>            IRasterLayer pRLayer;<br>            pRLayer = (IRasterLayer)pMap.get_Layer(0);<br>            IRaster pRaster;<br>            pRaster=pRLayer.Raster;<br><br>            IRasterClassifyColorRampRenderer pClassRen;<br>            pClassRen = new RasterClassifyColorRampRendererClass();<br>            IRasterRenderer pRasRen;<br>            pRasRen = (IRasterRenderer)pClassRen;<br><br>            pRasRen.Raster=pRaster;<br>            pClassRen.ClassCount=10;<br>            pRasRen.Update();<br><br>            IAlgorithmicColorRamp pRamp;<br>            pRamp=new AlgorithmicColorRampClass();<br>            pRamp.FromColor=getRGB(255,255,128);  //有问题,说没有getRGB这个名称<br>            pRamp.ToColor=getRGB(135,42,8);<br>            pRamp.Size=10;<br>            pRamp.CreateRamp(out test);<br><br>            IFillSymbol pFSymbol;<br>            pFSymbol = new SimpleFillSymbolClass();<br><br>            int i;<br>            for (i = 0; i <= (pClassRen.ClassCount - 1); i++)<br>            {<br>               pFSymbol.Color = pRamp.get_Color(i);<br>                pClassRen.get_Symbol(i) = (ISymbol)pFSymbol;  //有错误,左边不能是变量<br>                pClassRen.get_Label(i) = "等级" + CStr(i + 1); //没有CStr这个名称<br>           }<br><br>            pRasRen.Update();<br>            pRLayer.Renderer=(IRasterRenderer)pClassRen;<br>            axMapControl1.ActiveView.Refresh();<br>            axMapControl1.Update();<br>            axTOCControl1.Update();<br><br>            pMap=null;<br>            pRLayer=null;<br>            pRaster=null;<br>            pRasRen=null;<br>            pClassRen=null;<br>            pRamp=null;<br>            pFSymbol=null;<br>        }<br><font style="font-weight: bold;" size="5">这是我翻译的,可是却有很多的问题,问题在注释中写明了,我想知道IDW中的参考边界哪个参数实现(不知道这样说你们可明白?)。望各位朋友可以帮忙看看这个程序的错误?</font>
举报 回复(0) 喜欢(0)     评分
mouse1984dog
路人甲
路人甲
  • 注册日期2006-05-31
  • 发帖数19
  • QQ
  • 铜币224枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2009-02-26 16:02
<P>    public void CreateContourListFromShapefile() <BR>        {<BR>        //用反距离IDW插值生成的栅格图像<BR>         IInterpolationOp pInterpolationOp;<BR>        pInterpolationOp = new RasterInterpolationOpClass();<BR>        // Create the input point object</P>
<P>         IFeatureClass pFeatureClass; <BR>         IFeatureLayer pFeaturelayer;<BR>         pFeaturelayer = this.m_mapControl.Map.get_Layer(8) as IFeatureLayer;//这里我的数据在第八层<BR>        pFeatureClass = pFeaturelayer.FeatureClass;</P>
<P>        // Define the search radius<BR>         IRasterRadius pRadius;<BR>        pRadius = new RasterRadiusClass();<BR>        object maxDistance = Type.Missing;<BR>            pRadius.SetVariable(12, ref maxDistance);</P>
<P>        //Create FeatureClassDescriptor using a value field<BR>         IFeatureClassDescriptor pFCDescriptor;<BR>        pFCDescriptor = new FeatureClassDescriptorClass();<BR>        pFCDescriptor.Create(pFeatureClass, null, "降雨量500");</P>
<P>        //set { cellsize for output raster in the environment<BR>         object dCellSize = 0.013;<BR>         IRasterAnalysisEnvironment pEnv;<BR>        pEnv = new RasterAnalysis();<BR>        pEnv = pInterpolationOp as IRasterAnalysisEnvironment;<BR>        pEnv.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref dCellSize);</P>
<P>        object objectbarrier = Type.Missing;<BR>        //Perform the interpolation<BR>         IGeoDataset rasDataset;<BR>         rasDataset = pInterpolationOp.IDW((IGeoDataset)pFCDescriptor, 2, pRadius, ref objectbarrier);<BR>         IRaster pOutRaster;<BR>         pOutRaster = rasDataset as IRaster;</P>
<P>        //Add output into ArcMap as a raster layer<BR>         IRasterLayer pOutRasLayer;<BR>         pOutRasLayer = new RasterLayerClass();<BR>        pOutRasLayer.CreateFromRaster(pOutRaster);<BR>        this.m_mapControl.AddLayer(pOutRasLayer,0);</P>
<P>        UsingRasterClassifyColorRampRenderer();</P>
<P>    }</P>
<P>        public static IColor ConvertColorToIColor(Color color)<BR>        {</P>
<P>            IColor pColor = new RgbColorClass();<BR>            pColor.RGB = (int)color.R | (int)(color.G) << 8 | (int)(color.B) << 16;<BR>            return pColor;<BR>        } <BR>        private void UsingRasterClassifyColorRampRenderer() //分级渲染 <BR>        {<BR>        //get { Map</P>
<P>         IMap pMap;<BR>        pMap = m_mapControl.Map;</P>
<P>        //get { raster input from layer<BR>         IRasterLayer pRLayer;<BR>         pRLayer = (IRasterLayer)pMap.get_Layer(0);<BR>         IRaster pRaster;<BR>        pRaster = pRLayer.Raster;</P>
<P>        //Create classfy renderer and QI RasterRenderer interface<BR>         IRasterClassifyColorRampRenderer pClassRen;<BR>        pClassRen = new RasterClassifyColorRampRenderer();<BR>         IRasterRenderer pRasRen;<BR>        pRasRen = pClassRen as IRasterRenderer;</P>
<P>        //set { raster for the render and update<BR>        pRasRen.Raster = pRaster;<BR>        pClassRen.ClassCount = 10;<BR>        pRasRen.Update();</P>
<P>        //Create a color ramp to use<BR>         IAlgorithmicColorRamp pRamp;<BR>        pRamp = new AlgorithmicColorRamp();<BR>            Color clr=new Color();<BR>            clr = Color.FromArgb(255,255,128);<BR>            pRamp.FromColor = ConvertColorToIColor(clr);<BR>            clr = Color.FromArgb(135, 42, 8);<BR>             pRamp.ToColor = ConvertColorToIColor(clr);<BR>        pRamp.Size = 10;<BR>        bool flag = true;<BR>        pRamp.CreateRamp(out flag);</P>
<P>        //Create symbol for the classes<BR>         IFillSymbol pFSymbol;<BR>        pFSymbol = new SimpleFillSymbol();</P>
<P>        //loop through the classes and apply the color and label<BR>         int I;<BR>         for (I = 0; I <= pClassRen.ClassCount - 1;I++ )<BR>         {<BR>             pFSymbol.Color = pRamp.get_Color(I);//  .Color(I);<BR>             pClassRen.set_Symbol(I, pFSymbol as ISymbol);<BR>             pClassRen.set_Label(I,"等级" + Convert.ToString(I + 1));<BR>         } // I</P>
<P>        //Update the renderer and plug into layer<BR>        pRasRen.Update();<BR>        pRLayer.Renderer =(IRasterRenderer) pClassRen;<BR>        m_mapControl.ActiveView.Refresh();<BR>       // m_mapControl;<BR>        this.axTOCControl1.Update();</P>
<P>        //Release memeory</P>
<P>        pMap = null;<BR>        pRLayer = null;<BR>        pRaster = null;<BR>        pRasRen = null;<BR>        pClassRen = null;<BR>        pRamp = null;<BR>        pFSymbol = null;<BR>    }</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部