IWorkspaceFactory wsf = new RasterWorkspaceFactoryClass(); IRasterWorkspace rasterWS = (IRasterWorkspace)wsf.OpenFromFile(@"C:\Users\ABC\Desktop\DTED_E30N40\dted\e034", 0); rasterDS = rasterWS.OpenRasterDataset("n40.dt0"); IRasterBandCollection pRasterBandCollection = (IRasterBandCollection)rasterDS; IEnumRasterBand pEnumRasterBand = pRasterBandCollection.Bands; IRasterBand pRasterBand = pEnumRasterBand.Next(); pRasterBand.ComputeStatsAndHist(); IRasterStatistics pRasterStatistics = pRasterBand.Statistics; IRgbColor pFromColor = new RgbColorClass(); pFromColor.Red = 20; pFromColor.Green = 20; pFromColor.Blue = 220; IRgbColor pToColor = new RgbColorClass(); pToColor.Red = 220; pToColor.Green = 20; pToColor.Blue = 20; IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass(); pAlgorithmicColorRamp.FromColor = pFromColor; pAlgorithmicColorRamp.ToColor = pToColor; pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pAlgorithmicColorRamp.Size = 255; bool bOK; pAlgorithmicColorRamp.CreateRamp(out bOK); IRasterStretchColorRampRenderer pRasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass(); pRasterStretchColorRampRenderer.BandIndex = 0; pRasterStretchColorRampRenderer.LabelHigh = pRasterStatistics.Maximum.ToString(); pRasterStretchColorRampRenderer.LabelLow = pRasterStatistics.Minimum.ToString(); pRasterStretchColorRampRenderer.ColorRamp = pAlgorithmicColorRamp; IRasterLayer rasterLayer = new RasterLayer(); rasterLayer.CreateFromDataset(rasterDS); rasterLayer.Name = "DTED Level 0 [E34-N40]"; rasterLayer.Renderer = (IRasterRenderer)pRasterStretchColorRampRenderer; axMapControl1.AddLayer(rasterLayer);
Solved! Go to Solution.
Lines of sight can be calculated by calling ISurface.GetLineOfSight.
By the way, I found this class: LineOfSight Class
but I don't have ESRI.ArcGIS.Analyst3DTools namespace. Why?
I don't either have ESRI.ArcGIS.SpatialAnalystTools to use ViewShed Class.
Any idea about adding these namespaces?
Sincerely
You have to add a reference to Analyst3DTools to your project.
1) Right-click References in your project
2) Click Add Reference
3) Select the .NET tab
4) Select ESRI.ArcGIS.Analyst3DTools
5) Click OK
Thank you very much for your reply.
Well, do you have any idea about using LineOfSight or ViewShed class? How to set observer and point?
By the way, both namespaces (ESRI.ArcGIS.Analyst3DTools & ESRI.ArcGIS.SpatialAnalysisTools) has ViewShed class. I'll use Analyst3DTools' class.
Thank again 🙂
Well, you are right 😄
After a lot of googling, I found out that I need "Linear Line of Sight", based on my DTED data. You can see the screenshot I posted earlier. How can I get linear Line of Sight between two points?
Thanks
Lines of sight can be calculated by calling ISurface.GetLineOfSight.
And there you have it :D.
This has some implementation details you might be interested in:
http://forums.esri.com/Thread.asp?c=93&f=993&t=192554