service/clouddisk/giscore/geodataset/geodataset.js Source
import { Zondy } from '../../../common/Base';
import { CloudDiskService } from '../../ServiceBase';

const SchemaPath = 'schema';
const FeatureMetadataPath = 'featureclass/metadata';
const RasterMetadataPath = 'raster/metadata';
const StatisticsPath = 'featureclass/statistics';

/**
 * @class module:CloudDisk.GeoDatasetService
 * @description DataStore的云盘数据转换服务
 * @see 该方法强依赖java版本的mapgis.so动态库
 * @author 基础平台-潘卓然
 */
export class GeoDatasetService extends CloudDiskService {
  constructor(options) {
    super(options);
    /**
     * @member module:CloudDisk.GeoDatasetService.prototype.serviceUrl
     * @description 服务地址
     */
    this.serviceUrl = '/giscore/dataconvert/rest/geodataset/';
  }

  /**
   * @function module:CloudDisk.GeoDatasetService.prototype.schema
   * @description 空间数据元数据
   * @param  {Object} options 请求参数
   * @param  {String} [options.epsg] 完整的请求地址。
   * @param  {String} options.gdbp 完整的请求地址。
   * @param  {Function} onSuccess 成功回调
   * @param  {Function} onError 失败回调
   * @link http://192.168.199.53:9011/giscore/dataconvert/rest/geodataset/schema?
   */
  schema(options, onSuccess, onError) {
    let { serviceUrl } = this;
    serviceUrl += SchemaPath;
    let url = this.getFullUrl(serviceUrl, options);
    this.get(url, onSuccess, onError);
  }

  /**
  * @function module:CloudDisk.GeoDatasetService.prototype.featuremetadata
  * @description 简单要素类元数据
  * @param  {Object} options 请求参数
  * @param  {String} options.gdbp 要素GDBP地址
  * @param  {Function} onSuccess 成功回调
  * @param  {Function} onError 失败回调
  * @link http://192.168.199.53:9011/giscore/dataconvert/rest/geodataset/featureclass/metadata?
  */
  featuremetadata(options, onSuccess, onError) {
    let { serviceUrl } = this;
    serviceUrl += FeatureMetadataPath;
    let url = this.getFullUrl(serviceUrl, options);
    this.get(url, onSuccess, onError);
  }

  /**
  * @function module:CloudDisk.GeoDatasetService.prototype.rastermetadata
  * @description 简单要素类元数据
  * @param  {Object} options 请求参数
  * @param  {String} options.gdbp 要素GDBP地址
  * @param  {Function} onSuccess 成功回调
  * @param  {Function} onError 失败回调
  * @link http://192.168.199.53:9011/giscore/dataconvert/rest/geodataset/raster/metadata?
  */
  rastermetadata(options, onSuccess, onError) {
    let { serviceUrl } = this;
    serviceUrl += RasterMetadataPath;
    let url = this.getFullUrl(serviceUrl, options);
    this.get(url, onSuccess, onError);
  }

  /**
   * @function module:CloudDisk.GeoDatasetService.prototype.statistics
   * @description 简单要素类字段统计
   * @param  {Object} options 请求参数
   * @param  {String} options.gdbp 要素GDBP地址
   * @param  {String} options.statisticFields 统计字段
   * @param  {String} [options.pageSize = 100] 获取的数据量
   * @param  {Function} onSuccess 成功回调
   * @param  {Function} onError 失败回调
   * @link http://192.168.199.53:9011/giscore/dataconvert/rest/geodataset/featureclass/statistics?
   * @example
   * [{"field":"USER_ID","statisticTypes":[“max","min","avg”]},{"field":"GB","statisticTypes":[“unique”]}] 
   * unique(唯一值),count(计数),min(最小值),max(最大),avg(平均),sum(求和)
   * const obj =[{field:name, statisticTypes: ["max", "min"] }];
   * statistics({ gdbp: gdbp, statisticFields: JSON.stringify(obj)});
   */
  statistics(options, onSuccess, onError) {
    let { serviceUrl } = this;
    serviceUrl += StatisticsPath;
    let url = this.getFullUrl(serviceUrl, options);
    this.get(url, onSuccess, onError);
  }

  /**
   * @function module:CloudDisk.GeoDatasetService.prototype.query
   * @description 简单要素类字段统计
   * @param  {Object} options 请求参数
   * @param  {String} options.gdbp 要素GDBP地址
   * @param  {String} [options.includeProperites] 是否返回属性字段
   * @param  {String} [options.fields] 自定义返回属性字段,统计计算中用于分组字段名列表,用逗号分隔
   * @param  {String} [options.geoFormat] 几何格式 支持wkt、geojson、circle、rect四种,其中当为circle时,geometry格式为:x坐标,y坐标,半径;当为rect时,geometry格式为:xmin,ymin,xmax,ymax
   * @param  {String} [options.geometry] 几何图形 wkt、geojson、自定义等字符串
   * @param  {String} [options.spatialRel] 空间关系 Contain(包含) DisJoint(分离) Intersect(求交) MBRIntersect(外包矩形求交)
   * @param  {String} [options.filter] 属性条件 sql where条件 (例如:id>5,id<10)
   * @param  {String} [options.epsg] 坐标系 只需要EPSG的编号 目前只支持 4326 / 3857
   * @param  {String} [options.pageNo = 1] 页号
   * @param  {String} [options.pageSize = 20] 每页返回数据量
   * @param  {Function} onSuccess 成功回调
   * @param  {Function} onError 失败回调
   * @link http://192.168.199.53:9011/giscore/dataconvert/rest/geodataset/featureclass/query?
   */
  query(options, onSuccess, onError) {
    let { serviceUrl } = this;
    serviceUrl += StatisticsPath;
    let url = this.getFullUrl(serviceUrl, options);
    this.get(url, onSuccess, onError);
  }

}

export default GeoDatasetService;
Zondy.CloudDisk.GisCore.GeoDatasetService = GeoDatasetService;