query


URI

<spatialanalystJobs_uri>/query[.<format>]

支持的方法

GETPOSTHEAD

父资源

spatialanalystJobs

子资源

queryJob

介绍

单对象空间查询作业资源根目录。通过对 query 执行GET 请求,可获取当前系统的单对象空间查询作业列表。通过 POST 请求可创建一个查询任务。

支持的方法:

支持的表述格式:RJSON、JSON、HTML、XML。

资源层次

 

HTTP 请求方法

对如下 URI 执行 HTTP 请求,以 rjson 输出格式为例加以说明,其中,supermapiserver 是服务器名。

http://supermapiserver:8090/iserver/services/distributedanalyst/rest/v1/jobs/spatialanalyst/query.rjson

GET 请求

获取对单对象空间查询作业列表。

响应结构

对 query 资源执行 GET 请求,在响应消息的实体主体里是一个单对象分析资源描述集,其中单个资源描述的结构如下:  

字段 类型 说明
id String 应用ID。
state SparkJobState 该任务的状态。包括执行状态、起止时间、耗时等。
setting SparkJobSetting 列举了任务配置的详细信息。

响应示例

对 query 资源执行 GET 请求,返回 rjson 格式的资源描述如下:

[{

  "id": "cae72c2d_3550_4996_8bb1_682bc7d36533",

  "setting": {

    "DEFAULT_MASTER_ADRESS": "local[*] ",

    "analyst": {

      "datasetQuery": "Line",

      "inputQuery": "F:\\20170527_bsp.jar\\test\\data_toIserver.udb",

      "mode": "CONTAIN",

      "numSlices": "20"

    },

    "appName": "query",

    "args": [

      "--inputSource",

      "F:\\20170527_bsp.jar\\test\\data_toIserver.udb",

      "--datasetSource",

      "Region",

      "--numSlices",

      "20",

      "--inputQuery",

      "F:\\20170527_bsp.jar\\test\\data_toIserver.udb",

      "--datasetQuery",

      "Line",

      "--mode",

      "CONTAIN",

      "--outputResult",

      "F:\\20170621\\supermap_iserver_win64_zip\\webapps\\iserver\\processingResultData\\Analyst\\udbs\\586d0266-1a29-43c9-9775-9f4436fcaa5e",

      "--datasetResult",

      "analystResult"

    ],

    "contextSetting": null,

    "input": {

      "datasetSource": "Region",

      "inputSource": "F:\\20170527_bsp.jar\\test\\data_toIserver.udb"

    },

    "mainClass": "com.supermap.bsp.main.SpatialQueryGeoMain",

    "output": {

      "cacheName": null,

      "cacheType": null,

      "datasetResult": "analystResult",

      "outputResult": "F:\\20170621\\supermap_iserver_win64_zip\\webapps\\iserver\\processingResultData\\Analyst\\udbs\\586d0266-1a29-43c9-9775-9f4436fcaa5e"

    },

    "serviceInfo": {

      "targetDataPath": "F:\\20170621\\supermap_iserver_win64_zip\\webapps\\iserver\\processingResultData\\Analyst\\cae72c2d_3550_4996_8bb1_682bc7d36533",

      "targetServiceInfos": [

        {

          "serviceAddress": "http://localhost:8090/iserver/services/data-spatialQueryGeo4/rest",

          "serviceType": "RESTDATA"

        },

        {

          "serviceAddress": "http://localhost:8090/iserver/services/map-spatialQueryGeo4/rest",

          "serviceType": "RESTMAP"

        }

      ]

    },

    "serviceRoot": "http://localhost:8090/iserver/services/"

  },

  "state": {

    "elapsedTime": 6096,

    "endState": true,

    "endTime": 1498026621517,

    "errorMsg": null,

    "errorStackTrace": null,

    "publisherelapsedTime": 2273,

    "runState": "FINISHED",

    "startTime": 1498026611242

  }

}]

POST 请求

创建一个单对象空间查询任务。

请求参数

对 query 资源执行 POST 请求,创建一个 单对象空间查询任务,请求体需包含参数如下:

名称 类型 含义

input

【必填参数】

DatasetInputDataSetting
  • 数据集输入设置,当输入数据是一个数据目录服务中已存在的数据集时,用该设置。其中包含如下字段
    • datasetName:数据集名称。其中数据集的来源包括通过数据目录服务导入的数据、注册到 iServer 的数据对应的数据集以及 DataStore 中存储的数据集。
  • 数据集信息输入设置,当输入数据集文件路径及信息时,用该设置。其中包含如下字段
    • datasetInfo:数据集信息。其中数据集的来源包括:csv文件、udb文件、空间数据库、存于hdfs的索引文件。详细参数说明请参考:大数据分析输入参数设定
 FileCSVInputDataSetting
  • 文件路径输入设置。 当输入数据集文件路径时,用该设置。其中包含如下字段。
    • filePath:文件所在路径。其中路径包括:csv文件路径、hdfs文件路径。 详细参数说明请参考:大数据分析输入参数设定
    • metaInfo:数据文件的元信息。若该数据存放目录下包含 .meta 文件,则此参数可不填。

analyst

SpatialQueryGeoAnalystSetting 【必填参数】分析配置。传入时,需指定:
  • 查询对象数据集(仅支持面数据集,暂不支持存于hdfs的索引文件)
    • 已向iServer注册:datasetQuery:只需指定查询对象所在的数据集名称。(若数据集中有多个对象时,默认选择第一个对象)
    • 未向iServer注册:inputQuery:需指定查询对象数据源路径及数据集名称。因为只涉及一个对象,可用attributeFilter参数进行对象的设定,默认是直接从Spark Driver端读取。如果您选择手动配置参数,还需设定以下参数:数据库类型 type、服务器名称 server、数据集名称 datasetNames、数据库名称 database、用户名 user、密码 password 等。 当设置参数 type 时,如果您使用的数据集存储于 PostgreSQL 数据库,则需要配置为 pg;PostGIS 数据库配置为 pggis
    • 传入几何对象(geometry):geometryQuery。需指定几何对象的类型和具体坐标。同时,支持将传入的几何对象生成缓冲区。还需设定以下参数:
      • endType  缓冲区端点类型:包含圆头缓冲和平头缓冲。其中,只有线数据集支持生成平头缓冲区,点、面数据集均不支持。
      • leftDistance 左侧缓冲区距离
      • rightDistance 右侧缓冲区距离
      • semicircleLineSegment 圆弧线段个数
      • radiusUnit   缓冲区半径单位       
  • mode:空间查询模式。不同的模式对源数据集和查询对象数据集的类型有不同的要求,详细说明如下:
    • 重合(IDENTITY):表示源数据集中的空间对象和查询对象数据集中的查询对象(即SMID为0的空间对象)完全重合;源数据集与查询对象数据集的类型必须相同。
    • 分离(DISJOINT ):表示源数据集中的空间对象和查询对象数据集中的查询对象(即SMID为0的空间对象)无任何交集;源数据集和查询对象数据集的类型无关。
    • 包含(CONTAIN):表示查询对象数据集中的查询对象(即SMID为0的空间对象)包含源数据集的空间对象;支持点查点、线查点、面查点、线查线、面查线和面查面;不支持点查面、点查线和线查面。
    • 相交(INTERSECT):表示查询对象数据集中的查询对象(即SMID为0的空间对象)和源数据集的空间对象有交集;源数据集和查询对象数据集的类型无关。
    • 邻接(TOUCH ):表示查询对象数据集中查询对象(即SMID为0的空间对象)和源数据集的空间对象相邻,且内部交集为空。分别有以下情况:
      • 源点落在查询面的轮廓线上
      • 源点落在查询线起点或终点上
      • 查询点落在源线的起点或终点上
      • 源线的起点或终点落在查询线的任意位置上
      • 源线和查询面有临街面
      • 源面和查询面有邻接边
    • 被包含(WITHIN):与包含正好相反。
    • 交叉(CROSS ):表示源数据集空间对象和查询对象数据集中空间对象(即SMID为0的空间对象)内部交集不能为空;查询对象数据集必须是线数据集;支持线查线和线查面。
  • 叠加(OVERLAP ):表示源数据集空间对象是查询对象数据集中空间对象(即SMID为0的空间对象)的一部分;分别包含以下情况:源线是查询线的一部分、源线的起点或终点落在查询线上。支持线查线和面查面。

output

【选填参数】

FileSystemOutputSetting
  • 分析结果输出设置。当输出结果到文件时。用该设置。其中包含如下字段
    • type:指定输出类型。
    • datasourcePath :结果数据源的存放路径。其中分析结果可以存放到udb或hdfs中。
    • outputPath:分析结果工作空间输出路径。
DatabaseOutputSetting
  • 分析结果输出设置。当输出结果到数据库( PostgreSQL、PostGIS、MongoDB)时。用该设置。其中包含如下字段
    • type:指定输出类型。
    • datasetName:分析结果数据集名称。
    • datasourceInfo:结果数据源的连接信息。详细参数设定请参考:大数据分析输出参数设定

示例1:输入数据集名称

对示例 query 资源:http://supermapiserver:8090/iserver/services/distributedanalyst/rest/v1/jobs/spatialanalyst/query.rjson 执行 POST 请求,输入一个已注册到iServer 的数据集,传入数据集名称即可。创建一个单对象空间查询任务。请求体如下:

{

  "input":{

         "datasetName":"test_data_toIserver_Region"

    },

  "analyst":{

        "datasetQuery":"test_data_toIserver_Line",

        "mode":"CONTAIN",

   }

}

返回 rjson 格式的操作结果表述如下:

{

  "newResourceID": "b604dfb0_fa16_44ff_b79f_426638ce34ca",

  "newResourceLocation":"http://supermapiserver:8090/iserver/services/distributedanalyst/rest/v1/jobs/spatialanalyst/query/b604dfb0_fa16_44ff_b79f_426638ce34ca",

  "postResultType": "CreateChild",

  "succeed": true

}

示例2:输入PostgreSQL存储的数据

对示例 query 资源:http://supermapiserver:8090/iserver/services/distributedanalyst/rest/v1/jobs/spatialanalyst/query.rjson 执行 POST 请求,输入数据为存储于PostgreSQL 数据库的数据。创建一个单对象空间查询任务,请求体中的参数如下:

{

    "input": {

        "datasetInfo": {

            "type": "REGION",

            "name": "newyorkZone_R_1359289148",

            "dataSourceName": "supermap_pg",

            "datasourceConnectionInfo": {

                "engineType": "POSTGRESQL",

                "dataBase": "supermap",

                "password": "supermap",

                "user": "postgres",

                "server": "192.168.112.100"

            }

        }

    },

    "analyst": {

       "inputQuery":"{\"type\":\"pg\",\"info\":[{\"server\":\"192.168.120.49\",\"datasetNames\":[\"singleRegion_R_1359289148\"],\"database\":\"supermap4\",\"user\":\"postgres\",\"password\":\"supermap\"}]}",

        "mode": "CONTAIN"

    }

}

返回 rjson 格式的操作结果表述如下:

{

  "newResourceID": "7b106d77_eb46_4b82_93c7_c0367824123f",

  "newResourceLocation":"http://supermapiserver:8090/iserver/services/distributedanalyst/rest/v1/jobs/spatialanalyst/query/7b106d77_eb46_4b82_93c7_c0367824123f",

  "postResultType": "CreateChild",

  "succeed": true

}

示例3:输入 geometry

对示例 query 资源:http://supermapiserver:8090/iserver/services/distributedanalyst/rest/v1/jobs/spatialanalyst/query.rjson 执行 POST 请求,输入一个 geometry,并且设置了缓冲区。创建一个单对象空间查询任务。请求体中的参数如下:

{

    "input": {

        "datasetName": "samples_processing_newyorkZone_R"

    },

    "analyst": {

        "geometryQuery": "{\"type\":\"REGION\",\"points\":[{\"x\":-73.96,\"y\":40.78},{\"x\":-73.90,\"y\":40.78},{\"x\":-73.95,\"y\":40.742},{\"x\":-73.90,\"y\":40.747}]}",

        "bufferAnalystParameter": {

            "endType": "ROUND",

            "leftDistance": {

                "value": "10"

            },

            "rightDistance": {

                "value": "10"

            },

            "semicircleLineSegment": "10",

            "radiusUnit": "METER"

        },

        "mode": "CONTAIN"

    }

}

返回 rjson 格式的操作结果表述如下:

{

  "newResourceID": "c5a6ee10_36ea_4431_9251_21d7a71eb80b",

  "newResourceLocation":"http://supermapiserver:8090/iserver/services/distributedanalyst/rest/v1/jobs/spatialanalyst/query/c5a6ee10_36ea_4431_9251_21d7a71eb80b",

  "postResultType": "CreateChild",

  "succeed": True

}

HEAD 请求

返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。

HEAD 请求可以用来判断 query资源是否存在,或者客户端是否有权限访问 query资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断 query资源是否支持<format>格式的表述。

请参见