Ejemplo n.º 1
0
 /// <summary>
 /// 拷贝的构造函数。
 /// </summary>
 /// <param name="datasetOverlayResultSetting">DatasetOverlayResultSetting 对象实例。</param>
 /// <exception cref="ArgumentNullException">datasetOverlayResultSetting 为空时抛出异常。</exception>
 public DatasetOverlayResultSetting(DatasetOverlayResultSetting datasetOverlayResultSetting)
 {
     if (datasetOverlayResultSetting == null)
         throw new ArgumentNullException("datasetOverlayResultSetting", Resources.ArgumentIsNotNull);
     if (datasetOverlayResultSetting.DataReturnOption != null)
         this.DataReturnOption = new DataReturnOption(datasetOverlayResultSetting.DataReturnOption);
     if (datasetOverlayResultSetting.OperateDatasetFields != null)
     {
         this.OperateDatasetFields = new string[datasetOverlayResultSetting.OperateDatasetFields.Length];
         for (int i = 0; i < datasetOverlayResultSetting.OperateDatasetFields.Length; i++)
         {
             this.OperateDatasetFields[i] = datasetOverlayResultSetting.OperateDatasetFields[i];
         }
     }
     if (datasetOverlayResultSetting.SourceDatasetFields != null)
     {
         this.SourceDatasetFields = new string[datasetOverlayResultSetting.SourceDatasetFields.Length];
         for (int i = 0; i < datasetOverlayResultSetting.SourceDatasetFields.Length; i++)
         {
             this.SourceDatasetFields[i] = datasetOverlayResultSetting.SourceDatasetFields[i];
         }
     }
     this.Tolerance = datasetOverlayResultSetting.Tolerance;
 }
        public void DatasetAndGeometryOverlay_IntersectHasSourceFilter()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-overlay/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);
            string sourceDataset = "Sdzzd_P@overlay";
            string returnDatasetName = "PointAndCustomRegionOverlay";

            Point2D point1 = new Point2D(-119275.149508913, 2797273.49481734);
            Point2D point2 = new Point2D(2205422.68158318, 2797273.49481734);
            Point2D point3 = new Point2D(2205422.68158318, 3750228.67190104);
            Point2D point4 = new Point2D(-119275.149508913, 3750228.67190104);
            Geometry region = new Geometry()
            {
                Type = GeometryType.RECTANGLE,
                Parts = new int[] { 4 },
                Points = new Point2D[] { point1, point2, point3, point4 }
            };

            DatasetOverlayResultSetting resultSetting = new DatasetOverlayResultSetting()
            {
                DataReturnOption = new DataReturnOption()
                {
                    Dataset = returnDatasetName,
                    DeleteExistResultDataset = true,
                    DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET
                },
                Tolerance = 5,
            };

            QueryParameter sourceDatasetFilter = new QueryParameter()
            {
                Ids = new int[] { 159, 1272 },
            };

            Geometry[] operateRegions = new Geometry[] { region };
            DatasetSpatialAnalystResult result = spatialAnalyst.Overlay(sourceDataset, sourceDatasetFilter, operateRegions, OverlayOperationType.INTERSECT, resultSetting);
            Assert.IsNotNull(result);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result.Dataset));
            Assert.IsTrue(result.Recordset.Features[0].Geometry.Type == GeometryType.POINT);
        }
        public void DatasetOverlay_IntersectLineAndPoint()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-overlay/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);
            string sourceDataset = "Sdzzd_P@overlay";
            string operateDataset = "Road_L@overlay";
            string returnDatasetName = "LineAndPointOverlay";

            DatasetOverlayResultSetting resultSetting = new DatasetOverlayResultSetting()
            {
                DataReturnOption = new DataReturnOption()
                {
                    Dataset = returnDatasetName,
                    DeleteExistResultDataset = true,
                    DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET
                },
                Tolerance = 5,
            };

            try
            {
                DatasetSpatialAnalystResult result = spatialAnalyst.Overlay(sourceDataset, null, operateDataset, null, OverlayOperationType.INTERSECT, resultSetting);

            }
            catch (ServiceException e)
            {
                Assert.IsTrue(e.Code == 400);
                Assert.IsTrue(e.Message == "错误的叠加数据集类型。");
            }
        }
        public void DatasetOverlay_IntersectRegionAndLine()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-overlay/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);
            string sourceDataset = "Road_L@overlay";
            string operateDataset = "Provices_Part@overlay";
            string returnDatasetName = "RegionAndLineOverlay";

            DatasetOverlayResultSetting resultSetting = new DatasetOverlayResultSetting()
            {
                DataReturnOption = new DataReturnOption()
                {
                    Dataset = returnDatasetName,
                    DeleteExistResultDataset = true,
                    DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET
                },
                Tolerance = 5,
            };

            DatasetSpatialAnalystResult result = spatialAnalyst.Overlay(sourceDataset, null, operateDataset, null, OverlayOperationType.INTERSECT, resultSetting);
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Succeed);
            Assert.IsTrue(result.Recordset.Features[0].Geometry.Type == GeometryType.LINE);
        }
        public void DatasetOverlay_IntersectOperateDatasetHasFilter()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-overlay/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);
            string sourceDataset = "Lake_R@overlay";
            string operateDataset = "Provices_Part@overlay";
            string returnDatasetName = "polygonOverlay";

            DatasetOverlayResultSetting resultSetting = new DatasetOverlayResultSetting()
            {
                DataReturnOption = new DataReturnOption()
                {
                    Dataset = returnDatasetName,
                    DeleteExistResultDataset = true,
                    DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET
                },
                Tolerance = 5,
            };

            QueryParameter sourceDatasetFilter = new QueryParameter()
            {
                AttributeFilter = "smid=79",
            };

            QueryParameter operateDatasetFilter = new QueryParameter()
            {
                AttributeFilter = "smid=1",
            };

            DatasetSpatialAnalystResult result = spatialAnalyst.Overlay(sourceDataset, sourceDatasetFilter, operateDataset, operateDatasetFilter, OverlayOperationType.INTERSECT, resultSetting);
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Recordset.Features.Length == 0);
        }
        public void DatasetOverlay_IntersectByCustomName()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-overlay/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);

            string sourceDataset = "Lake_R@overlay";
            string operateDataset = "Provices_Part@overlay";
            string returnDatasetName = "polygonOverlay";

            DatasetOverlayResultSetting resultSetting = new DatasetOverlayResultSetting()
            {
                DataReturnOption = new DataReturnOption()
                {
                    Dataset = returnDatasetName,
                    DeleteExistResultDataset = true,
                    DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET
                },
                Tolerance = 5,
            };

            DatasetSpatialAnalystResult result = spatialAnalyst.Overlay(sourceDataset, null, operateDataset, null, OverlayOperationType.INTERSECT, resultSetting);
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Succeed);
            Assert.IsTrue(result.Dataset == returnDatasetName + "@overlay");
            Assert.IsNotNull(result.Recordset);
            Assert.IsTrue(result.Recordset.Features.Length == 61);
        }
Ejemplo n.º 7
0
        /// <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 &gt; 100 and smid &lt; 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);
        }
Ejemplo n.º 8
0
 /// <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);
 }
        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);
        }