public void Buffer_ByPolygonDatasetUnion()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-changchun/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);

            BufferAnalystParameter bufferAnalystParameter = new BufferAnalystParameter();
            bufferAnalystParameter.EndType = BufferEndType.ROUND;
            bufferAnalystParameter.SemicircleLineSegment = 4;
            bufferAnalystParameter.LeftDistance = new BufferDistance() { Value = 105.2 };
            bufferAnalystParameter.RightDistance = new BufferDistance() { Value = 105.2 };

            BufferResultSetting bufferResultSetting = new BufferResultSetting();
            bufferResultSetting.DataReturnOption = new DataReturnOption()
            {
                Dataset = "resultPolygon",
                DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET,
                DeleteExistResultDataset = true
            };
            bufferResultSetting.IsAttributeRetained = true;
            bufferResultSetting.IsUnion = true;
            try
            {
                DatasetSpatialAnalystResult result = spatialAnalyst.Buffer("WaterPoly@Changchun", bufferAnalystParameter, null, bufferResultSetting);

                Assert.IsTrue(result != null);
                Assert.IsTrue(result.Succeed);
                Assert.IsTrue(result.Dataset == "resultPolygon@Changchun");
                Assert.IsTrue(result.Recordset != null);
                Assert.IsTrue(result.Recordset.Features != null);
                Assert.IsTrue(result.Recordset.Features.Length == 1);
            }
            catch (ServiceException e)
            {
                Assert.IsTrue(true);
                Assert.IsTrue(e.Code == 400);
            }
            finally
            {

            }
        }
        public void Buffer_ByLineDatasetFlatBuffer()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-changchun/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);

            BufferAnalystParameter bufferAnalystParameter = new BufferAnalystParameter();
            bufferAnalystParameter.EndType = BufferEndType.FLAT;
            bufferAnalystParameter.SemicircleLineSegment = 4;
            bufferAnalystParameter.LeftDistance = new BufferDistance() { Value = 105.2 };
            bufferAnalystParameter.RightDistance = new BufferDistance() { Value = 105.2 };

            QueryParameter filterQueryParameter = new QueryParameter();
            filterQueryParameter.AttributeFilter = "smid=5 or smid =1";

            BufferResultSetting bufferResultSetting = new BufferResultSetting();
            bufferResultSetting.DataReturnOption = new DataReturnOption()
            {
                Dataset = "resultLine",
                DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET,
                DeleteExistResultDataset = true
            };
            bufferResultSetting.IsAttributeRetained = true;

            try
            {
                DatasetSpatialAnalystResult result = spatialAnalyst.Buffer("Edit_Line@Changchun", bufferAnalystParameter, filterQueryParameter, bufferResultSetting);
            }
            catch (ServiceException e)
            {
                Assert.IsTrue(true);
                Assert.IsTrue(e.Code == 400);
            }
        }
        public void Buffer_ByLineDatasetHasAttributerFilter()
        {
            string serviceUrl = string.Format("http://{0}:8090/iserver/services/spatialanalyst-changchun/restjsr", ip);
            SpatialAnalyst spatialAnalyst = new SpatialAnalyst(serviceUrl);

            BufferAnalystParameter bufferAnalystParameter = new BufferAnalystParameter();
            bufferAnalystParameter.EndType = BufferEndType.ROUND;
            bufferAnalystParameter.SemicircleLineSegment = 4;
            bufferAnalystParameter.LeftDistance = new BufferDistance() { Value = 105.2 };
            bufferAnalystParameter.RightDistance = new BufferDistance() { Value = 105.2 };

            QueryParameter filterQueryParameter = new QueryParameter();
            filterQueryParameter.AttributeFilter = "smid=5 or smid =1";

            BufferResultSetting bufferResultSetting = new BufferResultSetting();
            bufferResultSetting.DataReturnOption = new DataReturnOption()
            {
                Dataset = "resultLine",
                DataReturnMode = DataReturnMode.DATASET_AND_RECORDSET,
                DeleteExistResultDataset = true
            };
            bufferResultSetting.IsAttributeRetained = true;

            DatasetSpatialAnalystResult result = spatialAnalyst.Buffer("Edit_Line@Changchun", bufferAnalystParameter, filterQueryParameter, bufferResultSetting);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Succeed);
            Assert.IsTrue(result.Dataset == "resultLine@Changchun");
            Assert.IsTrue(result.Recordset != null);
            Assert.IsTrue(result.Recordset.Features != null);
            Assert.IsTrue(result.Recordset.Features.Length == 1);
        }
        /// <summary>
        /// 根据数据集创建缓冲区。
        /// </summary>
        /// <param name="datasetName">数据集标识。</param>
        /// <param name="filterQueryParameter">过滤参数,可选。设置了过滤参数后,只对数据集中满足此过滤条件的对象创建缓冲区。</param>
        /// <param name="bufferAnalystParameter">缓冲区分析参数,必设参数。指定缓冲距离、缓冲区端点类型等缓冲区分析需要的信息,请参见 <see cref="BufferAnalystParameter"/> 类。</param>
        /// <param name="bufferResultSetting">数据集缓冲区分析结果设置参数。</param>
        /// <returns>数据集缓冲区分析结果。</returns>
        /// <exception cref="ArgumentNullException">参数 datasetName 为空时抛出异常。</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";   //用来进行缓冲区分析的数据集,@符号前为数据集名称,@符号后为数据源名称。
        /// 
        ///         //执行缓冲区分析。
        ///          DatasetSpatialAnalystResult bufferResult = spatialAnalyst.Buffer(datasetName, bufferparameter, filterQueryParameter, bufferResultSetting);
        /// 
        ///         Console.WriteLine(string.Format("缓冲区分析结果数据集名称为:{0}", bufferResult.Dataset));
        ///         Console.ReadLine();
        ///     }
        /// }
        /// 
        /// //分析输出如下结果:
        /// //缓冲区分析结果数据集名称为:bufferResult@Changchun
        /// </code>
        /// </example>
        public DatasetSpatialAnalystResult Buffer(string datasetName, BufferAnalystParameter bufferAnalystParameter, QueryParameter filterQueryParameter, BufferResultSetting bufferResultSetting)
        {
#if NET40
            if (string.IsNullOrWhiteSpace(datasetName))
            {
                throw new ArgumentNullException("datasetName", Resources.ArgumentIsNotNull);
            }
#else
            if (string.IsNullOrEmpty(datasetName))
            {
                throw new ArgumentNullException("datasetName", Resources.ArgumentIsNotNull);
            }
#endif
            return _spatialAnalystProvier.Buffer(datasetName, bufferAnalystParameter, filterQueryParameter, bufferResultSetting);
        }
 public DatasetSpatialAnalystResult Buffer(string datasetName, BufferAnalystParameter bufferAnalystParameter, QueryParameter filterQueryParameter, BufferResultSetting bufferResultSetting)
 {
     string baseUrl = string.Format("{0}/spatialanalyst/datasets/{1}/buffer.json?returnContent=true", this._serviceUrl,
         HttpUtility.UrlEncode(datasetName));
     DatasetBufferRequestParameter parameter = new DatasetBufferRequestParameter(bufferAnalystParameter, filterQueryParameter, bufferResultSetting);
     string strBufferResult = SynchHttpRequest.GetRequestString(baseUrl, HttpRequestMethod.POST, JsonConvert.SerializeObject(parameter));
     return JsonConvert.DeserializeObject<DatasetSpatialAnalystResult>(strBufferResult);
 }
 /// <summary>
 /// 拷贝的构造函数。
 /// </summary>
 /// <param name="bufferResultSetting">BufferResultSetting 对象实例。</param>
 /// <exception cref="ArgumentNullException">bufferResultSetting 为空时抛出异常。</exception>
 public BufferResultSetting(BufferResultSetting bufferResultSetting)
 {
     if (bufferResultSetting == null)
         throw new ArgumentNullException("bufferDistance", Resources.ArgumentIsNotNull);
     if (bufferResultSetting.DataReturnOption != null)
         this.DataReturnOption = new DataReturnOption(bufferResultSetting.DataReturnOption);
     this.IsAttributeRetained = bufferResultSetting.IsAttributeRetained;
     this.IsUnion = bufferResultSetting.IsUnion;
 }