Engine做通视分析时如何选择部分DEM而不是全部?

用ISurfaceOp.Visibility做通视分析时,整个DEM数据太大,如何选择其中一部分?
已邀请:

刘峥 - ArcGIS多面手

赞同来自:

【解决办法】:
可以用IExtractionOp.Polygon指定范围

 
            string folderName = @E:\test;
            IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass();
            IWorkspace wksp = workspaceFactory.OpenFromFile(folderName,0);
            IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(folderName, 0);
            IRasterDataset dem = rasterWorkspace.OpenRasterDataset(elevation1.tif);
            IGeoDataset indem = dem as IGeoDataset;
            ISpatialReference sparef = indem.SpatialReference;

            IEnvelope env = new EnvelopeClass();
            env.XMin = 483014;
            env.XMax = 491696;
            env.YMin = 224307;
            env.YMax = 229781;
            env.SpatialReference = sparef;

            IExtractionOp exop = new RasterExtractionOpClass();
            IGeoDataset output = exop.Rectangle(indem, env, true);

            IWorkspaceFactory shpwks = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();
            IFeatureWorkspace featureworksps = (IFeatureWorkspace)shpwks.OpenFromFile(folderName, 0);
            IFeatureClass featureClass = featureworksps.OpenFeatureClass(pts);
            IGeoDataset pts = featureClass as IGeoDataset;

            ISurfaceOp surop = new RasterSurfaceOpClass();
            IGeoDataset visiout = surop.Visibility(output, pts, esriGeoAnalysisVisibilityEnum.esriGeoAnalysisVisibilityFrequency);

            IRaster raster = visiout as IRaster;
            IRasterLayer ralayer = new RasterLayerClass();
            ralayer.CreateFromRaster(raster);
            axMapControl1.AddLayer(ralayer);

要回复问题请先登录注册