/// <summary> /// 使用几何对象进行叠加分析操作。 /// </summary> /// <param name="sourceGeometry">被操作的几何对象。</param> /// <param name="operateGeometry">操作几何对象。</param> /// <param name="operation">叠加分析类型,叠加操作有:裁剪(CLIP)、擦除(ERASE)、合并(UNION)、相交(INTERSECT)、同一(IDENTITY)、对称差(XOR)和更新(UPDATE)。</param> /// <returns>几何对象叠加分析结果。</returns> /// <exception cref="ArgumentNullException">参数 sourceGeometry, operateGeometry为空时抛出异常。</exception> /// <exception cref="SuperMap.Connector.Utility.ServiceException">服务端处理错误时抛出异常。</exception> /// <example> /// 以下示范代码演示如何使用两个面对象进行叠加分析操作。 /// <code> /// using System; /// using System.Collections.Generic; /// using System.Text; /// using SuperMap.Connector; /// using SuperMap.Connector.Utility; /// /// class Program /// { /// static void Main(string[] args) /// { /// //根据服务组件地址初始化一个SpatialAnalyst对象。 /// SpatialAnalyst spatialAnalyst = new SpatialAnalyst("http://localhost:8090/iserver/services/spatialanalyst-changchun/restjsr"); /// /// //构造一个源几何对象。 /// Point2D point1 = new Point2D(143.95848843850121, 340.94821798126338); /// Point2D point2 = new Point2D(126.82919567639334, 318.2994864402541); /// Point2D point3 = new Point2D(140.08853711076571, 298.50563702626283); /// Point2D point4 = new Point2D(182.53111806576629, 309.73484005920017); /// Point2D point5 = new Point2D(177.70953936235816, 329.02115487283277); /// Point2D point6 = new Point2D(143.95848843850121, 340.94821798126338); /// Geometry sourceGeometry = new Geometry() /// { /// Type = GeometryType.REGION, /// Parts = new int[] { 6 }, /// Points = new Point2D[] { point1, point2, point3, point4, point5, point6 } /// }; /// /// //构造一个操作几何对象。 /// Point2D point11 = new Point2D(181.79816017595482, 356.16963002561636); /// Point2D point21 = new Point2D(158.46194538218725, 319.17740805623669); /// Point2D point31 = new Point2D(196.43985247981379, 287.15681971902217); /// Point2D point41 = new Point2D(224.78694726220056, 322.27670720950834); /// Point2D point51 = new Point2D(181.79816017595482, 356.16963002561636); /// Geometry operateGeometry = new Geometry() /// { /// Type = GeometryType.REGION, /// Parts = new int[] { 5 }, /// Points = new Point2D[] { point11, point21, point31, point41, point51 } /// }; /// /// //执行叠加分析操作。 /// GeometrySpatialAnalystResult result = spatialAnalyst.Overlay(sourceGeometry, operateGeometry, OverlayOperationType.INTERSECT); /// Console.ReadLine(); /// } /// } /// </code> /// </example> public GeometrySpatialAnalystResult Overlay(Geometry sourceGeometry, Geometry operateGeometry, OverlayOperationType operation) { if (sourceGeometry == null) { throw new ArgumentNullException("sourceGeometry", Resources.ArgumentIsNotNull); } if (operateGeometry == null) { throw new ArgumentNullException("operateGeometry", Resources.ArgumentIsNotNull); } return _spatialAnalystProvier.Overlay(sourceGeometry, operateGeometry, operation); }
/// <summary> /// 根据指定的过滤条件以及返回结果设置使用指定的区域对数据集进行叠加分析操作。 /// </summary> /// <param name="sourceDataset">源数据集名,也即被操作数据集名,例如:region1@changchun。</param> /// <param name="sourceDatasetFilter">源数据集中空间对象过滤条件。设置完过滤条件后,源数据集中仅有满足条件的对象才参与叠加分析。</param> /// <param name="operateRegions">操作区域。</param> /// <param name="operation">叠加分析类型,叠加操作有:裁剪(CLIP)、擦除(ERASE)、合并(UNION)、相交(INTERSECT)、同一(IDENTITY)、对称差(XOR)和更新(UPDATE)。</param> /// <param name="datasetOverlayResultSetting">数据集叠加分析结果设置。</param> /// <returns>矢量数据集叠加分析结果。</returns> /// <exception cref="ArgumentNullException">参数 sourceDataset, operateRegions 为空时抛出异常。</exception> /// <exception cref="SuperMap.Connector.Utility.ServiceException">服务端处理错误时抛出异常。</exception> /// <example> /// 以下示范代码演示如何使用一个面对象和数据集进行叠加分析操作。 /// <code> /// using System; /// using System.Collections.Generic; /// using System.Text; /// using SuperMap.Connector; /// using SuperMap.Connector.Utility; /// /// class Program /// { /// static void Main(string[] args) /// { /// //根据服务组件地址初始化一个SpatialAnalyst对象。 /// SpatialAnalyst spatialAnalyst = new SpatialAnalyst("http://*****:*****@Changchun"; //源数据集名称。 /// string returnDatasetName = "result"; //结果数据集名称。 /// /// //初始化一个操作区域。 /// Point2D leftBottom = new Point2D(3577.31919947043, -5449.94178803891); /// Point2D rightBottom = new Point2D(7546.48057648152, -5449.94178803891); /// Point2D rightTop = new Point2D(7546.48057648152, -3822.87747356561); /// Point2D leftTop = new Point2D(3577.31919947043, -3822.87747356561); /// Geometry region = new Geometry() /// { /// Type = GeometryType.RECTANGLE, /// Parts = new int[] { 4 }, /// Points = new Point2D[] { leftBottom, rightBottom, rightTop, leftTop } /// }; /// Geometry[] operateRegions = new Geometry[] { region }; /// /// //叠加分析返回结果设置。 /// DatasetOverlayResultSetting resultSetting = new DatasetOverlayResultSetting() /// { /// DataReturnOption = new DataReturnOption() /// { /// Dataset = returnDatasetName, /// DeleteExistResultDataset = true, /// DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET /// }, /// Tolerance = 5, /// SourceDatasetFields = new string[] { "NAME" } //设置源数据集中保留字段列表。 /// }; /// /// //源数据集过滤对象。 /// QueryParameter sourceDatasetFilter = new QueryParameter() /// { /// AttributeFilter = "smid > 100 and smid < 200" /// }; /// /// //执行叠加分析操作。 /// DatasetSpatialAnalystResult result = spatialAnalyst.Overlay(sourceDataset, sourceDatasetFilter, operateRegions, OverlayOperationType.INTERSECT, resultSetting); /// /// Console.ReadLine(); /// } /// } /// </code> /// </example> public DatasetSpatialAnalystResult Overlay(string sourceDataset, QueryParameter sourceDatasetFilter, Geometry[] operateRegions, OverlayOperationType operation, DatasetOverlayResultSetting datasetOverlayResultSetting) { #if NET40 if (string.IsNullOrWhiteSpace(sourceDataset)) { throw new ArgumentNullException("sourceDataset", Resources.ArgumentIsNotNull); } #else if (string.IsNullOrEmpty(sourceDataset)) { throw new ArgumentNullException("sourceDataset", Resources.ArgumentIsNotNull); } #endif if (operateRegions == null) { throw new ArgumentNullException("operateRegions", Resources.ArgumentIsNotNull); } return _spatialAnalystProvier.Overlay(sourceDataset, sourceDatasetFilter, operateRegions, operation, datasetOverlayResultSetting); }
/// <summary> /// 根据指定的分析返回结果设置使用指定的区域对数据集进行叠加分析操作。 /// </summary> /// <param name="sourceDataset">源数据集名,也即被操作数据集名,例如:region1@changchun。</param> /// <param name="operateRegions">操作区域。</param> /// <param name="operation">叠加分析类型,叠加操作有:裁剪(CLIP)、擦除(ERASE)、合并(UNION)、相交(INTERSECT)、同一(IDENTITY)、对称差(XOR)和更新(UPDATE)。</param> /// <param name="datasetOverlayResultSetting">数据集叠加分析结果设置。</param> /// <returns>矢量数据集叠加分析结果。</returns> /// <exception cref="ArgumentNullException">参数 sourceDataset, operateRegions 为空时抛出异常。</exception> /// <exception cref="SuperMap.Connector.Utility.ServiceException">服务端处理错误时抛出异常。</exception> /// <example>请参见 <see cref="Overlay(string, QueryParameter, Geometry[], OverlayOperationType, DatasetOverlayResultSetting)"/></example> public DatasetSpatialAnalystResult Overlay(string sourceDataset, Geometry[] operateRegions, OverlayOperationType operation, DatasetOverlayResultSetting datasetOverlayResultSetting) { return Overlay(sourceDataset, null, operateRegions, operation, datasetOverlayResultSetting); }
/// <summary> /// 对两个数据集进行叠加分析操作。 /// </summary> /// <param name="sourceDataset">源数据集名,也即被操作数据集名,例如:region1@changchun。</param> /// <param name="operateDataset">操作数据集名,例如:region2@changchun。</param> /// <param name="operation">叠加分析类型,叠加操作有:裁剪(CLIP)、擦除(ERASE)、合并(UNION)、相交(INTERSECT)、同一(IDENTITY)、对称差(XOR)和更新(UPDATE)。</param> /// <returns>矢量数据集叠加分析结果。</returns> /// <exception cref="ArgumentNullException">参数 sourceDataset, operateDataset 为空时抛出异常。</exception> /// <exception cref="SuperMap.Connector.Utility.ServiceException">服务端处理错误时抛出异常。</exception> /// <example>请参见 <see cref="Overlay(string, QueryParameter, string, QueryParameter, OverlayOperationType, DatasetOverlayResultSetting)"/></example> public DatasetSpatialAnalystResult Overlay(string sourceDataset, string operateDataset, OverlayOperationType operation) { return Overlay(sourceDataset, null, operateDataset, null, operation, null); }
public GeometrySpatialAnalystResult Overlay(Geometry sourceGeometry, Geometry operateGeometry, OverlayOperationType operation) { string baseUrl = string.Format("{0}/spatialanalyst/geometry/overlay.json?returnContent=true", this._serviceUrl); GeometryOverlayRequestParameter parameter = new GeometryOverlayRequestParameter(sourceGeometry, operateGeometry, operation); string strOverlayResult = SynchHttpRequest.GetRequestString(baseUrl, HttpRequestMethod.POST, JsonConvert.SerializeObject(parameter)); return JsonConvert.DeserializeObject<GeometrySpatialAnalystResult>(strOverlayResult); }
public DatasetSpatialAnalystResult Overlay(string sourceDataset, QueryParameter sourceDatasetFilter, Geometry[] operateRegions, OverlayOperationType operation, DatasetOverlayResultSetting datasetOverlayResultSetting) { string baseUrl = string.Format("{0}/spatialanalyst/datasets/{1}/overlay.json?returnContent=true", this._serviceUrl, HttpUtility.UrlEncode(sourceDataset)); DatasetOverlayRequestParameter parameter = new DatasetOverlayRequestParameter(sourceDatasetFilter, null, null, operation, operateRegions, datasetOverlayResultSetting); string strOverlayResul = SynchHttpRequest.GetRequestString(baseUrl, HttpRequestMethod.POST, JsonConvert.SerializeObject(parameter)); return JsonConvert.DeserializeObject<DatasetSpatialAnalystResult>(strOverlayResul); }