コード例 #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="featureResource"></param>
        /// <param name="maxFeatures"></param>
        /// <returns></returns>
        private List<Feature> GetFeatureInternal(GetFeatureResource featureResource, int maxFeatures)
        {
            string maxFeaturesStr = "";
            if (maxFeatures > 0)
            {
                maxFeaturesStr = string.Format("&fromIndex=0&toIndex={0}", maxFeatures - 1);
            }

            string uri = string.Format("{0}/data/featureResults.json?returnContent=true{1}", this._serviceUrl, maxFeaturesStr);

            string postData = JsonConvert.SerializeObject(featureResource);
            string requestResultJson = SynchHttpRequest.GetRequestString(uri, postData);

            FeaturesResourceResult featuresResult = JsonConvert.DeserializeObject<FeaturesResourceResult>(requestResultJson);

            return featuresResult.Features;
        }
コード例 #2
0
 /// <summary>
 /// 获取在指定空间范围内,并满足一定属性过滤条件的要素。
 /// </summary>
 /// <param name="datasetNames">数据集名称数组(datasourceName:datasetName),如 World:Capitals,必选参数。</param>
 /// <param name="bounds">指定的查询范围。</param>
 /// <param name="attributeFilter">属性过滤条件。</param>
 /// <param name="fields">待返回的字段数组。当该参数为 null 时,返回全部字段。</param>
 /// <returns>要素集合。</returns>
 public List<Feature> GetFeature(string[] datasetNames, Rectangle2D bounds, string attributeFilter, string[] fields)
 {
     if (datasetNames == null || datasetNames.Length <= 0 || string.IsNullOrEmpty(datasetNames[0]))
     {
         throw new ArgumentNullException("datasetNames", Resources.ArgumentIsNotNull);
     }
     if (bounds == null)
     {
         throw new ArgumentNullException("bounds", Resources.ArgumentIsNotNull);
     }
     GetFeatureResource featureResource = new GetFeatureResource();
     featureResource.DatasetNames = datasetNames;
     featureResource.Bounds = bounds;
     featureResource.AttributeFilter = attributeFilter;
     if (fields != null)
     {
         featureResource.QueryParameter = new QueryParameter();
         featureResource.QueryParameter.Fields = fields;
     }
     //attributeFilter存在属性过滤条件的,使用 BOUNDS_ATTRIBUTEFILTER 方式
     if (string.IsNullOrEmpty(attributeFilter))
     {
         featureResource.GetFeatureMode = GetFeatureMode.BOUNDS;
     }
     else
     {
         featureResource.GetFeatureMode = GetFeatureMode.BOUNDS_ATTRIBUTEFILTER;
     }
     return GetFeatureInternal(featureResource, 0);
 }
コード例 #3
0
        /// <summary>
        /// 根据指定要素 ID 获取指定数据集中的要素。
        /// </summary>
        /// <param name="datasetNames">数据集名称数组(datasourceName:datasetName),如 World:Capitals,必选参数。</param>
        /// <param name="ids">要素 ID。</param>
        /// <param name="fields">待返回的字段数组。当该参数为 null 时,返回全部字段。</param>
        /// <returns>要素集合。</returns>
        public List<Feature> GetFeature(string[] datasetNames, int[] ids, string[] fields)
        {
            if (datasetNames == null || datasetNames.Length <= 0 || string.IsNullOrEmpty(datasetNames[0]))
            {
                throw new ArgumentNullException("datasetNames", Resources.ArgumentIsNotNull);
            }

            if (ids == null || ids.Length <= 0)
            {
                throw new ArgumentNullException("ids", Resources.ArgumentIsNotNull);
            }
            GetFeatureResource featureResource = new GetFeatureResource();
            featureResource.DatasetNames = datasetNames;
            featureResource.Ids = ids;
            if (fields != null)
            {
                featureResource.QueryParameter = new QueryParameter();
                featureResource.QueryParameter.Fields = fields;
            }
            featureResource.GetFeatureMode = GetFeatureMode.ID;
            return GetFeatureInternal(featureResource, 0);
        }
コード例 #4
0
 /// <summary>
 /// 获取与指定几何对象具有特定空间查询模式的要素。
 /// </summary>
 /// <param name="datasetNames">数据集名称数组(datasourceName:datasetName),如 World:Capitals,必选参数。</param>
 /// <param name="geometry">几何对象。</param>
 /// <param name="spatialQueryMode">空间查询模式。</param>
 /// <param name="attributeFilter">属性过滤条件。</param>
 /// <param name="fields">待返回的字段数组。当该参数为 null 时,返回全部字段。</param>
 /// <returns>要素集合。</returns>
 public List<Feature> GetFeature(string[] datasetNames, Geometry geometry, SpatialQueryMode spatialQueryMode, string attributeFilter, string[] fields)
 {
     if (datasetNames == null || datasetNames.Length <= 0 || string.IsNullOrEmpty(datasetNames[0]))
     {
         throw new ArgumentNullException("datasetNames", Resources.ArgumentIsNotNull);
     }
     if (geometry == null)
     {
         throw new ArgumentNullException("geometry", Resources.ArgumentIsNotNull);
     }
     GetFeatureResource featureResource = new GetFeatureResource();
     featureResource.DatasetNames = datasetNames;
     featureResource.Geometry = geometry;
     featureResource.SpatialQueryMode = spatialQueryMode;
     featureResource.AttributeFilter = attributeFilter;
     if (fields != null)
     {
         featureResource.QueryParameter = new QueryParameter();
         featureResource.QueryParameter.Fields = fields;
     }
     if (string.IsNullOrEmpty(attributeFilter))
     {
         featureResource.GetFeatureMode = GetFeatureMode.SPATIAL;
     }
     else
     {
         featureResource.GetFeatureMode = GetFeatureMode.SPATIAL_ATTRIBUTEFILTER;
     }
     return GetFeatureInternal(featureResource, 0);
 }
コード例 #5
0
 /// <summary>
 /// 获取落在指定几何对象的缓冲区内的要素。
 /// </summary>
 /// <param name="datasetNames">数据集名称数组(datasourceName:datasetName),必选参数。</param>
 /// <param name="geometry">几何对象,必选参数。</param>
 /// <param name="bufferDistance">缓冲区的半径,单位同当前数据集坐标单位(coordUnit)。</param>
 /// <param name="attributeFilter">属性查询过滤条件。如 fieldValue &lt; 100,name like '%酒店%'。</param>
 /// <param name="fields">待返回的字段数组。当该参数为 null 时,返回全部字段。</param>
 /// <returns>要素集合。</returns>
 public List<Feature> GetFeature(string[] datasetNames, Geometry geometry, double bufferDistance, string attributeFilter, string[] fields)
 {
     if (datasetNames == null || datasetNames.Length <= 0 || string.IsNullOrEmpty(datasetNames[0]))
     {
         throw new ArgumentNullException("datasetNames", Resources.ArgumentIsNotNull);
     }
     if (geometry == null)
     {
         throw new ArgumentNullException("geometry", Resources.ArgumentIsNotNull);
     }
     if (bufferDistance <= 0)
     {
         throw new ArgumentException(string.Format(Resources.ArgumentMoreThanZero, "bufferDistance"));
     }
     GetFeatureResource featureResource = new GetFeatureResource();
     featureResource.DatasetNames = datasetNames;
     featureResource.Distance = bufferDistance;
     featureResource.Geometry = geometry;
     if (fields != null)
     {
         featureResource.QueryParameter = new QueryParameter();
         featureResource.QueryParameter.Fields = fields;
     }
     featureResource.AttributeFilter = attributeFilter;
     if (string.IsNullOrEmpty(attributeFilter))
     {
         featureResource.GetFeatureMode = GetFeatureMode.BUFFER;
     }
     else
     {
         featureResource.GetFeatureMode = GetFeatureMode.BUFFER_ATTRIBUTEFILTER;
     }
     return GetFeatureInternal(featureResource, 0);
 }
コード例 #6
0
        /// <summary>
        /// 通过 SQL 查询条件获取要素。
        /// </summary>
        /// <param name="datasetNames">
        /// <para>数据集名称数组(datasourceName:datasetName),必选参数。 </para>
        /// <para>数据集名称由数据源名和数据集名构成,例如 World 数据源下的 Ocean 数据集,这里的数据集名称就是“World:Ocean”。</para>
        /// </param>
        /// <param name="maxFeatures">最多可返回的要素数量。</param>
        /// <param name="queryParam">查询参数。</param>
        /// <returns>要素集合。</returns>
        public List<Feature> GetFeature(string[] datasetNames, QueryParameter queryParam, int maxFeatures)
        {
            if (datasetNames == null || datasetNames.Length <= 0 || string.IsNullOrEmpty(datasetNames[0]))
            {
                throw new ArgumentNullException("datasetNames", Resources.ArgumentIsNotNull);
            }
            if (queryParam == null)
            {
                queryParam = new QueryParameter();
            }
            GetFeatureResource featureResource = new GetFeatureResource();

            featureResource.DatasetNames = datasetNames;
            featureResource.QueryParameter = queryParam;

            featureResource.GetFeatureMode = GetFeatureMode.SQL;

            return GetFeatureInternal(featureResource, maxFeatures);
        }