用于从三维点集合中提取等值线,并将结果保存为数据集。方法的实现原理是先利用点集合中存储的第三维信息(高程或者温度等),也就是除了点的坐标信息的数据,对点数据使用 IDW 插值法(InterpolationAlgorithmType.IDW)进行插值分析,得到栅格数据集(方法实现的中间结果,栅格值为单精度浮点型),接着从栅格数据集中提取等值线。
命名空间:
SuperMap.Analyst.SpatialAnalyst程序集: SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll
语法
C# |
---|
public static DatasetVector ExtractIsoline( SurfaceExtractParameter parameter, Point3Ds extractedPoints, Datasource targetDatasource, string targetDatasetName, double resolution, GeoRegion clipRegion ) |
参数
- parameter
- Type: SuperMap.Analyst.SpatialAnalyst..::.SurfaceExtractParameter
指定的提取操作需要的参数。
- extractedPoints
- Type: SuperMap.Data..::.Point3Ds
指定的待提取等值线的点串,该点串中的点是三维点,每一个点存储了 X,Y 坐标信息和只有一个第三维度的信息(例如:高程信息等)。
- targetDatasource
- Type: SuperMap.Data..::.Datasource
- targetDatasetName
- Type: System..::.String
- resolution
- Type: System..::.Double
指定的中间结果(栅格数据集)的分辨率。
- clipRegion
- Type: SuperMap.Data..::.GeoRegion
指定的裁剪面对象。如果不需要对操作结果进行裁剪,可以使用 null 值取代该参数。
返回值
提取得到的等值线数据集。如果提取失败则返回 null。示例
以下代码示范了如何从三维点集合提取等值线。
CopyC#
public DatasetVector ExtractIsolineFromPoint3Ds(Datasource outputDatasource) { Point3D[] arrayPoint3D = new Point3D[8]; arrayPoint3D[0] = new Point3D(1, 1, 2); arrayPoint3D[1] = new Point3D(1, 2, 5); arrayPoint3D[2] = new Point3D(2, 2, 7); arrayPoint3D[3] = new Point3D(2, 4, 6); arrayPoint3D[4] = new Point3D(3, 1, 10); arrayPoint3D[5] = new Point3D(3, 3, 4); arrayPoint3D[6] = new Point3D(4, 1, 9); arrayPoint3D[7] = new Point3D(4, 3, 11); //构建一个三维点集合 Point3Ds point3Ds = new Point3Ds(); point3Ds.AddRange(arrayPoint3D); SurfaceExtractParameter surfaceExtractParameter = new SurfaceExtractParameter(); surfaceExtractParameter.DatumValue = 1; surfaceExtractParameter.Interval = 3; surfaceExtractParameter.SmoothMethod = SmoothMethod.BSpline; surfaceExtractParameter.Smoothness = 5; //设置结果矢量数据集的名称,并检查数据源中是否已存在该数据集,如存在则删除 String outputDatasetName = "extractIsoline"; if (outputDatasource.Datasets.Contains(outputDatasetName)) { outputDatasource.Datasets.Delete(outputDatasetName); } //从三维点集合提取等值线 DatasetVector resultIsoline = SurfaceAnalyst.ExtractIsoline(surfaceExtractParameter, point3Ds, outputDatasource, outputDatasetName, 1, null); return resultIsoline; }