IWorkspaceFactory wsf = new RasterWorkspaceFactoryClass(); IRasterWorkspace rasterWS = (IRasterWorkspace)wsf.OpenFromFile(foldername, 0); IRasterDataset rasterDS = rasterWS.OpenRasterDataset("n42.dt0"); //DTED Level 0 file
IRaster raster = rasterDS.CreateDefaultRaster(); RasterSurfaceClass rsc = new RasterSurfaceClass(); rsc.PutRaster(raster); [INDENT]rsc.GetElevation(point);[/INDENT] [INDENT]rsc.GetLineOfSight(blah, blah, blah);[/INDENT]
Solved! Go to Solution.
Yes, CreateDefaultRaster returns IRaster; not IRasterDataset. But keep in mind that IRasterDatasetEdit.Mosaic gets IRaster as first parameter, not IRasterDataset. That's why I use rasterDS[0].CreateDefaultRaster() function; to get IRaster and pass it to Mosaic function.
The link; creates a IRasterDataset for a image (map). Because it copies pixels into it. My IRastarDataset's format is "DTED Level 0", not map nor image. So, I think I can't use it.
I need more tea 😄
I get IRasterDataset like this:
IWorkspaceFactory wsf = new RasterWorkspaceFactoryClass(); IRasterWorkspace rasterWS = (IRasterWorkspace)wsf.OpenFromFile(foldername, 0); List<IRasterDataset> rasterDS = new List<IRasterDataset>(); rasterDS.Add(rasterWS.OpenRasterDataset(DTED_filename)); //"n34.dt0" for ex.
Yes, the documentation just says it's datatype: double 😐
I would be surprised if DTEDs (any level) weren't supported--they are very common raster types. I'll keep digging as I have time. Please keep the forum up-to-date on your progress.
IRasterCollection rc = (IRasterCollection) new MosaicRasterClass(); rc.Append(rasterDS[0]); rc.Append(rasterDS[1]); ISaveAs save = (ISaveAs) rc; IRasterStorageDef store = new RasterStorageDefClass(); store.CompressionType = esriRasterCompressionType.esriRasterCompressionUncompressed; //no idea! save.SaveAsRasterDataset("ResultDTED", _workspace_, "X?", store);
I just found this link that displays Raster formats for saving. There is no DTED in it.
I tried to copy my all DTED RasterDatasets to IRasterCollection using Append function, and save it using ISaveAs2.SaveAsRasterDataset, and then, load it from file again, but I couldn't save datasets as DTED. Code for this:IRasterCollection rc = (IRasterCollection) new MosaicRasterClass(); rc.Append(rasterDS[0]); rc.Append(rasterDS[1]); ISaveAs save = (ISaveAs) rc; IRasterStorageDef store = new RasterStorageDefClass(); store.CompressionType = esriRasterCompressionType.esriRasterCompressionUncompressed; //no idea! save.SaveAsRasterDataset("ResultDTED", _workspace_, "X?", store);
You mean, if my DTEDs was level 1 or 2, Mosaic function wouldn't fail?
Thank you
Could you save it to a different format and use it?
IRasterCollection rc = new MosaicRasterClass(); rc.Insert(0, rasterDS[0].CreateDeafultRaster()); rc.Insert(1, rasterDS[1].CreateDeafultRaster()); ISaveAs2 save = (ISaveAs2)rc; IRasterStorageDef st = new RasterStorageDefClass(); save.SaveAsRasterDataset("MosaicResult", (IWorkspace)_rasterworkspace_, "DTED", st);
IRasterCollection rc = (IRasterCollection) new MosaicRasterClass(); #region Add some IRasterDataset to the rc (IRasterCollection) rc.Insert(0, rasterDataset0); rc.Insert(1, rasterDataset1); rc.Insert(2, rasterDataset2); rc.Insert(3, rasterDataset3); #endregion ISaveAs2 save = (ISaveAs2) rc; IRasterStorageDef st = new RasterStorageDefClass(); IRasterStorageDef3 store = (IRasterStorageDef3)st; store.CompressionType = esriRasterCompressionType.esriRasterCompressionUncompressed; store.Tiled = false; IRasterDataset resultDataset = save.SaveAsRasterDataset("ResultDTED.dt0", _workspace_, "DEM", store);