计算表面面积,即计算所选多边形区域内的 DEM 栅格拟合的三维曲面的总的表面面积。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static double ComputeSurfaceArea( DatasetGrid sourceDatasetGrid, GeoRegion region ) |
参数
- sourceDatasetGrid
- Type: SuperMap.Data..::.DatasetGrid
指定的待计算表面面积的 DEM 栅格。
- region
- Type: SuperMap.Data..::.GeoRegion
指定的用于计算表面面积的多边形。
返回值
表面面积的值。单位为平方米。返回 -1 表示计算失败。示例
以下代码示范了如何通过给定的 DEM 栅格,计算栅格表面面积。实现的方式是在跟踪图层上绘制一个多边形,计算该多边形内的栅格表面面积。使用本示例代码需确保在你的工程中存在名为“m_mapControl”的地图控件(MapControl),名为“m_datasource”的数据源,及名为"travel"的栅格数据集,并确保地图控件与工作空间(Workspace)相关联。注意:符合以上条件不代表能够获得正确结果,你还需要使用合适的数据。
CopyC#
//计算表面面积按钮单击事件 private void btnComputeSurfaceArea_Click(object sender, EventArgs e) { //设置MapControl的绘制方式 m_mapControl.TrackMode = TrackMode.Track; //设置MapControl的操作状态 m_mapControl.Action = SuperMap.UI.Action.CreatePolygon; //设置正在绘制的对象的风格 GeoStyle style = new GeoStyle(); style.FillForeColor = Color.FromArgb(255, 255, 0); style.FillOpaqueRate = 20; m_mapControl.TrackingStyle = style; } //调用ComputeSurfaceArea()方法计算表面面积 private void CalculateSurfaceArea(DatasetGrid sourceDatasetGrid, GeoRegion geoRegion) { Double result = CalculationTerrain.ComputeSurfaceArea(sourceDatasetGrid, geoRegion); MessageBox.Show("表面积为:" + result.ToString()); } //跟踪绘制结束事件 private void m_mapControl_Tracked(object sender, TrackedEventArgs e) { m_mapControl.Map.TrackingLayer.Clear(); m_mapControl.Map.TrackingLayer.Add(e.Geometry, "多边形"); //获取跟踪图层上的Geometry GeoRegion geoRegion = m_mapControl.Map.TrackingLayer.Get(0) as GeoRegion; //设置源栅格数据集 DatasetGrid sourceDatasetGrid = m_datasource.Datasets["travel"] as DatasetGrid; CalculateSurfaceArea(sourceDatasetGrid, geoRegion); m_mapControl.Map.TrackingLayer.Clear(); }