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);
Lines of sight can be calculated by calling ISurface.GetLineOfSight.
By the way, I found this class: LineOfSight Classbut 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 project2) Click Add Reference3) Select the .NET tab4) Select ESRI.ArcGIS.Analyst3DTools5) 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
And there you have it .This has some implementation details you might be interested in:http://forums.esri.com/Thread.asp?c=93&f=993&t=192554
Thank you very much Neil; for mentioning ISurface and thank you ScJpike; for your helpful link 🙂Now, I'm able to get linear line of sight of two points, as you see: [ATTACH=CONFIG]23004[/ATTACH]Well, is there any way to give observer's Z (elevation) and get line of sight of that point with given Z (not the elevation in DTED)? Imagine that I want to get LLOS of a helicopter that abviously it's elevation is greater that DTED's elevation of that point.Or it's only possible with DTED elevations? Any idea?Thank you very much guysSincerely
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.