# 数据库接入服务

数据库接入服务提供各种类型的外部数据库的接入功能,支持的数据库种类有PostgreSQL、MySQL(暂未开放)、SQL Server(暂未开放)。

# 获取数据库列表

接口说明:

获取用户接入的外部数据库列表。

接口地址:

GET {API_URL}/databases/v1/{owner}

请求示例:

curl -X GET "{API_URL}/databases/v1/jingsam"

响应示例:

[
  {
    "databaseId": "mydb",
    "owner": "jingsam",
    "name": "mydb",
    "tags": [],
    "metadata": {},
    "type": "postgres"
  },
  {
    "databaseId": "iuwKjzfoR",
    "owner": "jingsam",
    "name": "landcloud",
    "tags": [],
    "metadata": {},
    "type": "mysql"
  }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 获取外部数据库

接口说明:

获取某个外部数据库的基础信息和连接参数。
除了基础属性,返回的连接参数包含以下字段:

字段名 说明
type 外部数据库的类型,取值为postgres、mysql或mssql
host 外部数据库的主机位置
port 外部数据库的端口
database 外部数据库的实例
username 外部数据库的用户名

为了保护外部数据库的安全,响应中不会包含数据库的密码。

接口地址:

GET {API_URL}/databases/v1/{owner}/{databaseId}

请求示例:

curl -X GET "{API_URL}/databases/v1/jingsam/mydb"

响应示例:

{
  "databaseId": "mydb",
  "owner": "jingsam",
  "name": "mydb",
  "tags": [],
  "metadata": {},
  "type": "postgres",
  "host":"127.0.0.1", 
  "port":5432, 
  "database":"mydb"
}
1
2
3
4
5
6
7
8
9
10
11

# 新建外部数据库

接口说明

新建一个外部数据库连接。
新建时,必须提供以下参数:

字段名 说明
type 外部数据库的类型,取值为postgres、mysql或mssql
host 外部数据库的主机位置
port 外部数据库的端口
database 外部数据库的实例
username 外部数据库的用户名
password 外部数据库的密码

系统会生成一个随机的databaseId,若需要使用特定的databaseId新建外部数据库,建议使用替换外部数据库方法。
系统只会从外部数据库中读取数据,不会修改或删除数据,但是为了进一步确保外部数据库的数据安全性,建议使用仅具有只读权限的用户接入系统。

接口地址

POST {API_URL}/databases/v1/{owner}

请求示例:

curl -X POST "{API_URL}/databases/v1/jingsam" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "mydb", "type": "postgres", "host":"127.0.0.1", "port":5432, "database":"mydb", "username": "postgres","password": "123456" }'

响应示例:

{
  "databaseId": "sfs43fr",
  "owner": "jingsam",
  "name": "mydb",
  "tags": [],
  "metadata": {},
  "type": "postgres",
  "host":"127.0.0.1", 
  "port":5432, 
  "database":"mydb"
}
1
2
3
4
5
6
7
8
9
10
11

# 替换外部数据库

接口说明

替换某个外部数据库连接。
替换时,必须提供以下参数:

字段名 说明
type 外部数据库的类型,取值为postgres、mysql或mssql
host 外部数据库的主机位置
port 外部数据库的端口
database 外部数据库的实例
username 外部数据库的用户名
password 外部数据库的密码

如果系统中已存在databaseId的外部数据库,则会替换已有的外部数据库;若不存在,则会在新建该外部数据库的连接。

接口地址

PUT {API_URL}/databases/v1/{owner}/{databaseId}

请求示例:

curl -X PUT "{API_URL}/databases/v1/jingsam/mydb" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "mydb", "type": "postgres", "host":"127.0.0.1", "port":5432, "database":"mydb", "username": "postgres","password": "123456" }'

响应示例:

{
  "databaseId": "mydb",
  "owner": "jingsam",
  "name": "mydb",
  "tags": [],
  "metadata": {},
  "type": "postgres",
  "host":"127.0.0.1", 
  "port":5432, 
  "database":"mydb"
}
1
2
3
4
5
6
7
8
9
10
11

# 更新外部数据库

接口说明

更新一个已有的外部数据库,可更新外部数据库的基础属性和连接参数。
由于技术上的限制,外部数据库的类型字段type无法更改。

接口地址

PATCH {API_URL}/databases/v1/{owner}/{databaseId}

请求示例:

curl -X PATCH "{API_URL}/databases/v1/jingsam/mydb" <br /> --header "Content-Type: applocation/json" <br /> --data '{"password": "654321"}'

响应示例:

{
  "databaseId": "mydb",
  "owner": "jingsam",
  "name": "mydb",
  "tags": [],
  "metadata": {},
  "type": "postgres",
  "host":"127.0.0.1", 
  "port":5432, 
  "database":"mydb"
}
1
2
3
4
5
6
7
8
9
10
11

# 删除外部数据库

接口说明

删除一个已有的外部数据库

接口地址

DELETE {API_URL}/databases/v1/{owner}/{databaseId}

请求示例:

curl -X DELETE "{API_URL}/databases/v1/jingsam/mydb"

响应示例:

204 // HTTP status code

# 获取外部数据库的表

接口说明

获取外部数据库的所有库表,包括表和视图。
库表含以下字段:

字段名 说明
schema 表所属的模式
name 表名
type 表的类型,取值有BASE TABLE
(表)、VIEW
(视图)

接口地址

GET {API_URL}/databases/v1/{owner}/{databaseId}/tables

请求示例:

curl -X GET "{API_URL}/databases/v1/jingsam/mydb/tables"

响应示例:

[
  {
    "schema": "public",
    "name": "t1",
    "type": "BASE TABLE"
  },
  {
    "schema": "public",
    "name": "t2",
    "type": "VIEW" 
  }
]
1
2
3
4
5
6
7
8
9
10
11
12

# 测试外部数据库连接参数

接口说明

测试是否能够成功连接到外部数据库。

接口地址

POST {API_URL}/databases/v1

请求示例:

curl -X POST "{API_URL}/databases/v1" <br /> --header "Content-Type: applocation/json" <br /> --data '{"type": "postgres", "host": "127.0.0.1", "port": 5432, "database": "postgres", "username": "postgres", "password": "123456"}'

响应示例:

204 // HTTP status code

# 专题地图服务

专题地图服务提供专题地图的管理。

# 获取专题地图列表

接口说明

获取用户的专题地图列表。

接口地址

GET {API_URL}/maps/v1/{owner}

请求示例:

curl -X GET "{API_URL}/maps/v1/jingsam"

响应示例:

[
  {
    "mapId": "heatmap",
    "owner": "jingsam",
    "name": "热力图",
    "description": "人口热力图"
  },
  {
    "mapId": "iuwKjzfoR",
    "owner": "jingsam"
  }
]
1
2
3
4
5
6
7
8
9
10
11
12

# 获取专题地图

接口说明

获取某个专题地图。
除了基础属性,专题地图还包含以下字段:

字段名 说明
center
(可选)
地图默认的中心经度和纬度
zoom
(可选)
地图默认的缩放级别
bearing
(可选)
地图默认的偏角
pitch
(可选)
地图默认的倾角
basemap 地图的基础底图
layers 地图的图层配置信息

接口地址

GET {API_URL}/maps/v1/{owner}/{mapId}

请求示例:

curl -X GET "{API_URL}/maps/v1/jingsam/heatmap"

响应示例:

{
  "mapId": "heatmap",
  "owner": "jingsam",
  "name": "热力图",
  "description": "人口热力图",
  "basemap": {...},
  "layers": [...]
}
1
2
3
4
5
6
7
8

# 新建专题地图

接口说明

新建一个专题地图,可基于提供的专题地图模板新建,否则将新建一个空的专题地图。
系统会生成一个随机的mapId,若需要使用特定的mapId新建专题地图,建议使用替换专题地图方法。

接口地址

POST {API_URL}/maps/v1/{owner}

请求示例:

curl -X POST "{API_URL}/maps/v1/jingsam" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "热力图", "description": "人口热力图" }'

响应示例:

{
  "mapId": "js0BTsjLr",
  "owner": "jingsam",
  "name": "热力图",
  "description": "人口热力图",
  "basemap": {},
  "layers": []
}
1
2
3
4
5
6
7
8

# 替换专题地图

接口说明

替换某个专题地图,可基于提供的专题地图模板替换,否则将替换为一个空的专题地图。
若该mapId的专题地图在系统中已存在,则会覆盖已有的专题地图;若不存在,则在系统中新建专题地图。

接口地址

PUT {API_URL}/maps/v1/{owner}/{mapId}

请求示例:

curl -X PUT "{API_URL}/maps/v1/jingsam/heatmap" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "热力图", "description": "人口热力图" }'

响应示例:

{
  "mapId": "heatmap",
  "owner": "jingsam",
  "name": "热力图",
  "description": "人口热力图",
  "basemap": {},
  "layers": []
}
1
2
3
4
5
6
7
8

# 更新专题地图

接口说明

更新某个专题地图,更新时需提供该专题地图需修改的字段信息。
更新专题地图只是对专题地图的部分字段进行更新,如果需要进行覆盖式更新,请使用替换专题地图方法。

接口地址

PATCH {API_URL}/maps/v1/{owner}/{mapId}
1

请求示例:

curl -X PATCH "{API_URL}/maps/v1/jingsam/heatmap" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "热力图2", "description": "人口热力图2" }'

响应示例:

{
  "mapId": "heatmap",
  "owner": "jingsam",
  "name": "热力图2",
  "description": "人口热力图2",
  "basemap": {},
  "layers": []
}
1
2
3
4
5
6
7
8

# 删除专题地图

接口说明

删除某个专题地图。

接口地址

DELETE {API_URL}/maps/v1/{owner}/{mapId}

请求示例:

curl -X DELETE "{API_URL}/maps/v1/jingsam/heatmap"

响应示例:

204 // HTTP status code (No Content)

# 预览专题地图

接口说明

提供一个HTML页面,用于查看地图效果。

接口地址

GET {API_URL}/maps/v1/{owner}/{mapId}/html

请求示例:

curl -X GET "{API_URL}/maps/v1/jingsam/heatmap/html"

响应示例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>热力图</title>
  ...
</head>
<body>
  ...
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11

# 可视化场景服务

可视化场景服务提供可视化场景配置文件的管理,包括配置文件的新建、获取、更新、删除等操作。可视化场景配置文件定义了可视化场景的画布大小、背景、可视化组件的数据和样式。

# 获取可视化场景列表

接口说明

获取用户的可视化场景列表。

接口地址

GET {API_URL}/scenes/v1/{owner}

请求示例:

curl -X GET "{API_URL}/scenes/v1/jingsam"

响应示例:

[
  {
    "sceneId": "buildings",
    "owner": "jingsam",
    "name": "Buildings",
    "description": "3D Buildings",
    "tags": ["3D"],
    "metadata": {
      "locked": "true"
    },
    "thumbnail": "{API_URL}/assets/v1/jingsam/a.png/thumbnail"
  },
  {
    "sceneId": "T38CFliqe",
    "owner": "jingsam",
    "tags": [],
    "metadata": {},
    "thumbnail": "{API_URL}/assets/v1/jingsam/b.png/thumbnail"
  }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 获取可视化场景

接口说明

获取某个可视化场景。
除了基础属性,可视化场景还包含以下字段:

字段名 说明
thumbnail 可视化场景的缩略图URL
width 可视化场景的画布宽度,单位为像素
height 可视化场景的画布高度,单位为像素
scale 可视化场景的自适应缩放方法
background 可视化场景的背景配置
components 可视化场景的组件配置

接口地址

GET {API_URL}/scenes/v1/{owner}/{sceneId}

请求示例:

curl -X GET "{API_URL}/scenes/v1/jingsam/buildings"

响应示例:

{
  "sceneId": "buildings",
  "owner": "jingsam",
  "name": "Buildings",
  "description": "3D Buildings",
  "tags": [ "3D" ],
  "metadata": {},
  "thumbnail": "{API_URL}/assets/v1/jingsam/a.png/thumbnail",
  "width": 1920,
  "height": 1080,
  "scale": "scaleX",
  "background": {...},
  "components": [ {...} ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 新建可视化场景

接口说明

新建一个可视化场景,可在请求中提供一个可视化场景作为模板新建,否则将新建一个空的可视化场景。
系统会生成一个随机的sceneId,若需要使用特定的sceneId新建可视化场景,建议使用替换可视化场景方法。

接口地址

POST {API_URL}/scenes/v1/{owner}

请求示例:

curl -X POST "{API_URL}/scenes/v1/jingsam" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "Buildings", "tags":["3D"] }'

响应示例:

{
  "sceneId": "T38CFliqe",
  "owner": "jingsam",
  "name": "Buildings",
  "tags": [ "3D" ],
  "metadata": {},
  "components": []
}
1
2
3
4
5
6
7
8

# 替换可视化场景

接口说明

新建或替换某个可视化场景,可在请求中提供一个可视化场景作为模板新建或替换,若未提供可视化场景则生成一个空的可视化场景。
若该sceneId的可视化场景在系统中已存在,则会覆盖已有的可视化场景;若不存在,则在系统中新建可视化场景。

接口地址

PUT {API_URL}/scenes/v1/{owner}/{sceneId}

请求示例:

curl -X PUT "{API_URL}/scenes/v1/jingsam/buildings" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "Buildings", "tags":[ "3D" ] }'

响应示例:

{
  "sceneId": "buildings",
  "owner": "jingsam",
  "name": "Buildings",
  "tags": [ "3D" ],
  "metadata": {},
  "components": []
}
1
2
3
4
5
6
7
8

# 更新可视化场景

接口说明

更新某个可视化场景,更新时可提供该可视化场景需修改的字段信息。
更新可视化场景只是对可视化场景的部分字段进行更新,如果需要进行覆盖式更新,请使用替换可视化场景方法。
如需更新可视化场景的thumbnail字段,建议使用Assets API上传一个图片,以该图片的缩略图URL作为thumbnail字段的值。

接口地址

PATCH {API_URL}/scenes/v1/{owner}/{sceneId}

请求示例:

curl -X PATCH "{API_URL}/scenes/v1/jingsam/buildings" <br /> --header "Content-Type: applocation/json" <br /> --data '{ "name": "Buildings2", "tags": [ "3D", "house" ] }'

响应示例:

{
  "sceneId": "buildings",
  "owner": "jingsam",
  "name": "Buildings2",
  "tags": [ "3D", "house" ],
  "metadata": {},
  "components": []
}
1
2
3
4
5
6
7
8

# 删除可视化场景

接口说明

删除某个可视化场景。

接口地址

DELETE {API_URL}/scenes/v1/{owner}/{sceneId}

请求示例:

curl -X DELETE "{API_URL}/scenes/v1/jingsam/buildings"

响应示例:

204 // HTTP status code (No Content)

# 预览场景

接口说明

提供一个HTML页面,用于查看场景效果。

请求示例:

curl -X GET "{API_URL}/scenes/v1/jingsam/buildings"

响应示例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Buildings</title>
        ...
    </head>
    <body>
        ...
    </body>
</html>
1
2
3
4
5
6
7
8
9
10
11