概述
- Holo3D for Web API概述
- Holo3D for Web API是一套由JavaScript语言编写的应用程序接口,可以帮助您快速、简单、灵活的在您的业务系统中加入BIM、GIS应用,并提供在线数据转换功能,您可将手中的模型通过API转换为你需要的模型格式。
- Holo3D for Web数据转换支持数据格式
- 目前Holo3D for Web支持各种模型RVT、DGN、CATPRODUCT、IFC、STEP、IGES、IGS、FBX、OBJ、OSGB、OSG、STP。
- 技术栈
- WebGL、JavaScript
- 终端设备与浏览器兼容性
- 设备类型浏览器兼容性IEChromeFirefoxOperaSafariPC 机终端11.0 及以上系列
(11.0 及以上系列)
41.0 及以上系列(41.0 及以上系列)
2.0 及其以上系列(2.0 及其以上系列)
9.5 及以上系列(9.5 及以上系列)
3.0 及其以上系列(3.0 及其以上系列)
- Holo3D for Web产品架构
名词解释
- 世界坐标(WorldPosition)
- 系统中所有点的坐标都是以世界坐标的原点来确定位置的。
- 构件(Component)
- 构件是三维模型中的对象,可以理解成建筑的零部件,一栋建筑是由成千上万个构件组成的,每个构件都有自己的ObjectId、位置信息和属性信息。
- 包围盒(BoundingBox)
- 包围盒是规则的立方体,是一个物体(一个模型、一个构件、一组构件)在视图中的最大边界。
- 相机(Camera)
- 相机是图形学中的一个重要概念,开发人员可以理解成三维模型的视角信息。
- 微应用(MiscApplication)
- 微应用是基于Holo3D for Web底层API封装的一系列功能应用模块。便于Holo3D for Web的二次开发用户快速、高效搭建自己的三维应用场景。微应用提供了统一的开发流程和接口,比如start、cancel等,分别代表开始、取消应用状态。 目前提供的微应用有:测量、模型剖切、多段线绘制、道路绘制、地形挖洞、路径动画、部件选取等。后续会逐渐推出更多微应用功能。
示例说明:直线测量。 三维地形默认的鼠标操作是漫游交互,即鼠标左键平移、中间旋转、右键缩放。当用户调用直线测量微应用的start方法以后,鼠标操作的方式就会发生改变,左键点击时,创建一个测量点;再次点击时会创建另外一个测量点,并且连接两个测量点,绘制出一条直线,标识直线的距离。当用户调用cancel方法后,则会退出测量状态,此时鼠标操作再次指向漫游交互,即左键平移、中间旋转、右键缩放。
快速入门
获取Token
开发人员只能通过调用服务端的API才能完成上述操作。出于安全方面的考虑,Holo3D for Web对每一次服务端的API调用都要进行认证,认证的凭据就是Token(可以把Token理解成一把访问服务端API的钥匙,每一个应用都有自己独有的钥匙),因此,获取Token是程序开发的第一步。
获取Token的API:
let data = {
loginNum:用户名,
password: 密码
}
Freedo.FdServer.FdUserServer.userLogin(data, baseURL, res => {
res.token;//获取到的token
});
上传源文件并发布
获取AccessToken以后,就可以调用服务端API上传文件并发布服务了。API如下:
接口:
/zuul/freeserver-one/services/one/import
请求方式:
POST
参数类型:
multipart/form-data
参数:
{
modelfile:File,
srctype:string,
destype:boolean,
opts:string
}
modelfile: 模型文件。
srctype:数据源格式。
// 枚举
enum SourceTypeStage {
photogrammetry = 1,
ifc = 2,
stp = 3
}
destype: 数据目标格式。
// 枚举
enum TargetTypeStage {
pmodel = 0,
ptiles = 1,
pmts = 2,
osgb = 3
}
opts:高级参数。其值为空或者是json字符串。
返回结果:
{"stat":0,"msg":"ok","val":处理任务ID}
在网页上集成JavaScript显示组件
前面所有的步骤都与服务端的API调用有关,本步骤需要开发人员切换到前端开发的工作中来,即在网页端集成JavaScript显示组件。
基本流程为:
- 1、引用Holo3D for Web的JavaScript显示组件库
- 2、定义DOM元素,用于在该DOM元素中显示模型
- 3、把当前域名和Token作为参数传递给JavaScript定义的方法
具体的代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>初始化三维球</title>
<link rel="stylesheet" href="http://forweb.gbim360.com/(版本号)/freedo/Freedo/Widgets/widgets.css">
<link rel="stylesheet" href="http://forweb.gbim360.com/(版本号)/freedox/Examples/static/bucket.css">
</head>
<body>
<script src="http://forweb.gbim360.com/(版本号)/freedo/Freedo/Freedo.js"></script>
<script src="http://forweb.gbim360.com/(版本号)/freedox/FreedoX/ThirdParty/1710_lodash/lodash.min.js"></script>
<script src="http://forweb.gbim360.com/(版本号)/freedox/FreedoX/FreedoX.js"></script>
<script src="http://forweb.gbim360.com/(版本号)/freedox/Examples/static/Sandcastle-header.js"></script>
<div id="freedoContainer" class="fullSize"></div>
<script>
var viewer = Freedo.FdApp.createDefaultViewer('freedoContainer');
</script>
</body>
</html>
所有的开发工作完成以后,打开浏览器(推荐谷歌浏览器),输入对应的网址,即可在网页端显示模型
JavaScript API
Server API
- 接口相关说明-必读
- 用户账号
- 图层
- 数据集
- 数据共享
- 静态资源
- 数据结构梳理
- 一键飞渡
- ForWeb后台
- 断点续传上传接口
- FDB
- 数据转换说明表
- XML文件规范
接口相关说明-必读
版本:2.1.0
说明
1. 本系统所有接口均为HTTP请求
2. 用户登录验证成功后,系统将返回Token,后续访问其他接口时,前端需要通过token查询参数携带Token。
3. 接口URL中':'说明:如果接口中包含冒号,则说明其后的字段为一个参数。例如接口URL: /user/idencode/:telphone 中的'telphone'则表示为一个参数,在实际使用此接口时需要将其替换为具体的内容。
4. 不需要登录的接口如下:
注册
登录
获取验证码
5. 参数字段中包含'?'的说明:如果参数字段以'?'结尾,那么说明此参数为可选参数。
用户账号
账号
注册
接口
/freeserver-admin/auth/regist
请求方式
POST
参数类型
application/json
参数
{
telnumber:string,
password:string,
verifycode:string,
username?:string
}
telnumber: 手机号码。
password: 密码。建议密码首先在客户端进行一次哈希加密。
verifycode: 验证码。
username: 用户名,可选,默认使用手机号码代替。
返回结果
正常:
{"success":1,"code":"200","msg":"ok","rows":[{"userId":"用户ID”}]}
异常:
{"success":-1,"msg":"对应错误信息","code":"对应错误编码"}
登录
接口
/cloudlink-core-framework/login/login
请求方式
POST
参数类型
application/json
参数
{
loginNum:string,
password:string,
appId:string,
validateType?:string
}
loginNum: 【登录账号,必选,字符串类型,最大长度100】:手机号、邮箱或登录名。目前统一使用手机号登录。
password: 【登录密码,必选,字符串类型,最大长度100】。
appId: 【要登录的应用ID,必选,字符类型】 。在此应用中值为:0154981b-11c5-49ad-839d-a3420af507d8
validateType: 【验证类型,字符串类型,取值范围:mobile|email|account|*】默认为mobile。
返回结果
正常:
{"success":1,"code":"200","msg":"ok",token: "",rows:[用户对象]}
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码"}
请求下发验证码
接口
/cloudlink-core-framework/verfy/getVerifyCode
请求方式
POST
参数类型
application/json
参数
{
sendMode:string,
sendNum:string,
signName:string,
useCategory:string
sceneType?:string
}
sendMode: 【验证类型,必选】:验证类型,1手机 2邮箱,默认为手机,目前只支持手机
sendNum: 【接收验证码账号,必选,字符串类型,手机号码或邮箱】目前只支持手机
signName: 【验证码签名即应用签名,必选,字符类型,如飞渡科技】 。在此应用中值为:飞渡科技
useCategory: 【使用场景,必选,取值:regist | login | general】
sceneType?: 【场景类型,可选,字符串类型】 1通用为空2注册为空3使用验证码登录为verfyCode
返回结果
正常:
{"success":1,"code":"200","msg":"ok","rows":[{"verifyCode":"验证码"}]}
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码"}
重置密码
接口
/cloudlink-core-framework/login/resetPassword
请求方式
POST
参数类型
application/json
参数
{
mobileNum:string,
verifyCode:string,
password:string,
}
mobileNum: 【手机号,必选,字符串类型,最大长度100】
verifyCode: 【验证码,必选,字符串类型,最大长度50】
password: 【新密码,必选,字符串类型,最大长度100】
返回结果
正常:
{"success":1,"code":"200","msg":"ok","rows":[{"booleanResult":true}]}
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码"}
注销(退出登录状态)
接口
/cloudlink-core-framework/login/logout
请求方式
POST
参数类型
application/json
参数
{
token:string
}
token: 【token值,不能为空,字符串类型】
返回结果
正常:
{"success":1,"code":"200","msg":"ok","rows":[{"booleanResult":true}]}
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码"}
验证用户是否已经注册
接口
/cloudlink-core-framework/login/checkUser
请求方式
GET
参数类型
无
参数
{
registNum:string
}
registNum: 【注册账号,必选,字符串类型,最大长度100】:手机号、邮箱或登录名。目前统一使用手机号登录。
返回结果
正常:
{"success":1,"code":"200","msg":"手机号已被注册",rows:[{isExist:true}]}
{"success":1,"code":"200","msg":"ok",rows:[{isExist:false}]}
图层
图层
获取图层信息
接口
/freeserver-admin/admin/layer/get
请求方式
POST
参数类型
application/json
参数
{
keyword?:string,
offset?:number,
pagecount?:number,
servicetype?:string
}
keyword: 筛选关键字,现只对图层名称进行筛选。
offset: 偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0.
pagecount: 每页个数。默认值20.
servicetype: 服务类型,其取值为 PMTS、WMTS、WETS等。
返回结果
{"stat":0,"msg":"ok","val":图层集合}
获取图层数量
接口
/freeserver-admin/admin/layer/count
请求方式
POST
参数类型
application/json
参数
{
keyword?:string,
servicetype?:string
}
keyword: 筛选关键字,现只对图层名称进行筛选。
servicetype: 服务类型,其取值为 PMTS、WMTS、WETS等。
返回结果
{"stat":0,"msg":"ok","val":图层个数}
获取某个图层的详细信息
接口
/freeserver-admin/admin/layer/getone/:lid
请求方式
POST
参数类型
无
参数
lid: 图层ID。
返回结果
{"stat":0,"msg":"ok","val":图层信息}
创建/更新图层信息
接口
/freeserver-admin/admin/layer/importlayer
请求方式
POST
参数类型
application/json
参数
{
lid?: string
name: string
enable: boolean
sourcetype: MatrixSetSourceType
matrixset: string[]
service: string[]
ctime: number
desc?: string
}
lid?: 图层ID。创建新图层时可以不需要图层ID,但更新图层时一定需要图层ID,否则将会创建新的图层。
name: 图层名称。
enable: 图层是否可用
sourcetype: 数据源类型
matrixset: 数据集链接 , 数据集ID数组
service: 服务类型
ctime: 创建时间。后台可能会对创建时间进行更新。
desc?: 备注信息。
返回结果
{"stat":0,"msg":"ok","val":""}
删除图层
接口
/freeserver-admin/admin/layer/remove/:lid
请求方式
POST
参数类型
无
参数
lid: 图层ID。
返回结果
{"stat":0,"msg":"ok","val":""}
获取图层的元数据URL
接口
/freeserver-admin/admin/layer/getcapaurl
请求方式
POST
参数类型
application/json
参数
{
dataid: string
accesskey?: string
}
dataid: 图层ID。
accesskey: 图层访问秘钥。当数据分享类型为个人和企业是此字段为空,当分享类型为AccessKey时,此字段必填。
返回结果
{"stat":0,"msg":"ok","val":url}
图层资源访问热度查询
接口
/freeserver-admin//admin/access/top/layer
请求方式
POST
参数类型
application/json
参数
{
count?: number
}
count: 图层访问热度最大个数,按照访问次数排序。默认值为10。
返回结果
{"stat":0,"msg":"ok","val":"资源访问热度"}
数据集
数据集
根据数据集类型获取数据集信息
接口
/freeserver-admin/admin/matrix/get/sourcetype
请求方式
POST
参数类型
application/json
参数
sourcetype: 数据源类型
返回结果
{"stat":0,"msg":"ok","val":数据集集合}
创建PMTS服务(模型瓦片组)数据集
接口
/zuul/freeserver-admin/admin/matrix/import/modeltileset
请求方式
POST
参数类型
multipart/form-data
参数
{
modelfile:File,
name:string,
compress:boolean,
format:string,
desc?:string
}
modelfile: pModel模型文件压缩包,现支持格式为zip或者rar。
name:数据集名称。
compress: 是否压缩存储。
format:模型文件细分类型,可选格式为:application/osgb|application/b3dm|application/i3dm
desc: 备注信息
返回结果
{"stat":0,"msg":"ok","val":数据集ID}
创建WMTS服务(影像瓦片)数据集
接口
/zuul/freeserver-admin/admin/matrix/import/imagetileset
请求方式
POST
参数类型
multipart/form-data
参数
{
imgfile:File,
name:string,
crs:boolean,
format:string,
size:string,
style:string,
desc?:string
}
imgfile: 影像瓦片数据集压缩包,现支持格式为zip或者rar。
name:数据集名称。
crs: 投影类型,可选格式为:EPSG:4326 | EPSG:3857。
format:影像文件细分类型,可选格式为:image/png | image/jpg
size: 瓦片大小,可选参数为:256x256 | 512x512
style: 数据集风格,默认参数为: default
desc: 备注信息
返回结果
{"stat":0,"msg":"ok","val":数据集ID}
创建WETS服务(高程瓦片)数据集
接口
/zuul/freeserver-admin/admin/matrix/import/elevationtileset
请求方式
POST
参数类型
multipart/form-data
参数
{
demfile:File,
name:string,
crs:boolean,
format:string,
desc?:string
}
demfile: 高程瓦片数据集压缩包,现支持格式为zip或者rar。
name:数据集名称。
crs: 投影。
format:高程瓦片类型,可选格式为:application/bil|application/vnd.heightmap|application/vnd.quantized-mesh。 默认选择bil
desc: 备注信息
返回结果
{"stat":0,"msg":"ok","val":数据集ID}
创建通用数据集(添加一条数据集记录信息)
接口
/freeserver-admin/admin/matrix/importmatrix
请求方式
POST
参数类型
application/json
参数
{
name: string,
format: string,
compressed: boolean,
propid?: string
sourcetype: MatrixSetSourceType,
storagetype: StorageType,
metadata: TileMatrixsetMetadata | PMTSMetadata[],
stage: MatrixsetImportStage,
desc?: string
}
name: 数据集名称。
format:数据集中主要数据格式。
compressed: 数据是否压缩存储。
propid:属性数据索引ID,当数据集中存在额外的第三方属性数据时此值有效。
sourcetype: 数据集类型
storagetype: 数据集存储类型
metadata: 数据集元数据,数据集类型不同,元数据格式也不尽相同。元数据可以通过接口单独更新,但最终一定需要保证有且有效。
stage:数据集导入过程状态,状态可以单独更新,而且也需要实时对状态进行更新,但最终状态一定为完成状态,否则认定数据集异常。
desc: 备注信息
返回结果
{"stat":0,"msg":"ok","val":""}
获取完成的数据集信息,支持分页
接口
/freeserver-admin/admin/matrix/getall
请求方式
POST
参数类型
application/json
参数
{
keyword?:string,
offset?:number,
pagecount?:number
}
keyword: 筛选关键字,现只对数据集名称进行筛选。
offset: 偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0.
pagecount: 每页个数。默认值20.
返回结果
{"stat":0,"msg":"ok","val":数据集集合}
获取完成的数据集数量
接口
/freeserver-admin/admin/matrix/count
请求方式
POST
参数类型
application/json
参数
{
keyword?:string
}
keyword: 筛选关键字,现只对数据集名称进行筛选。
返回结果
{"stat":0,"msg":"ok","val":数据集个数}
获取处理中的数据集信息,支持分页
接口
/freeserver-admin/admin/matrix/getprocessall
请求方式
POST
参数类型
application/json
参数
{
keyword?:string,
offset?:number,
pagecount?:number
}
keyword: 筛选关键字,现只对数据集名称进行筛选。
offset: 偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0.
pagecount: 每页个数。默认值20.
返回结果
{"stat":0,"msg":"ok","val":数据集集合}
获取完成的数据集数量
接口
/freeserver-admin/admin/matrix/processcount
请求方式
POST
参数类型
application/json
参数
{
keyword?:string
}
keyword: 筛选关键字,现只对数据集名称进行筛选。
返回结果
{"stat":0,"msg":"ok","val":数据集个数}
更新数据集元数据信息
接口
/freeserver-admin/admin/matrix/metadata/update
请求方式
POST
参数类型
application/json
参数
{
mid: string
metadata: TileMatrixsetMetadata | PMTSMetadata[]
}
mid: 数据集ID。
metadata: 数据集元数据信息. 数据集类型不同元数据格式也不尽相同:
模型瓦片数据集格式为:PMTSMetadata[]。
影像瓦片数据集格式为:TileMatrixsetMetadata。
返回结果
{"stat":0,"msg":"ok","val":""}
获取数据集详细信息
接口
/freeserver-admin/admin/matrix/getone/:mid
请求方式
POST
参数类型
application/json
参数
mid: 数据集ID。
返回结果
{"stat":0,"msg":"ok","val":数据集对象}
删除数据集
接口
/freeserver-admin/admin/matrix/remove/:mid
请求方式
POST
参数类型
application/json
参数
mid: 数据集ID。
返回结果
{"stat":0,"msg":"ok","val":""}
上传规则瓦片数据
接口
/freeserver-admin/admin/matrix/matrixtile/put
请求方式
POST
参数类型
application/octet-stream
参数
1. 请求数据体(Body)
请求数据体包含瓦片文件的全部内容,格式为Buffer。
2. 查询字符串(Query)
{
matrixset:string,
style:string,
format:string,
matrix:string,
col:string,
row:string,
gzip:boolean
}
matrixset:数据集ID,
style:风格,默认为default,
format:瓦片格式,
matrix:当前级别名称,
col:列号,
row:行号,
gzip:数据是否压缩存储,默认不压缩。
返回结果
{"stat":0,"msg":"ok","val":""}
上传文件瓦片数据
接口
/freeserver-admin/admin/matrix/filetile/put
请求方式
POST
参数类型
application/octet-stream
参数
1. 请求数据体(Body)
请求数据体包含瓦片文件的全部内容,格式为Buffer。
2. 查询字符串(Query)
{
matrixset:string,
path:string,
gzip:boolean
}
matrixset:数据集ID,
path:文件路径,相对于数据集根目录,
gzip:数据是否压缩存储,默认不压缩。
返回结果
{"stat":0,"msg":"ok","val":""}
数据共享
数据共享相关
资源共享流程: 创建数据资源 -> 创建分享记录
添加数据资源
接口
/cloudlink-core-framework/app/dataresource/add
请求方式
POST
参数类型
application/json
参数
{
appId:string,
resourceCode:string,
resourceName:string,
parentId:string,
dataId:string,
dataName:string,
description?:string,
remark?:string
}
appId: 【应用ID,必选,字符类型】
resourceCode: 【资源Code,必选,字符类型】 freedo_data_{lid}_{time}
resourceName: 【资源名称,必选,字符类型,最大长度200】freedo_data_{lname}_{time}
parentId: 【父节点ID,必选,字符类型,最大长度50】 "610be183-1dda-43ed-8737-49fa2a55cc80"
description: 【功能描述,可选,字符类型,最大长度2000】
remark: 【备注,可选,字符类型,最大长度2000】
dataId: 【数据ID,必选,字符类型,最大长度100】 lid
dataName:【数据名称,必选,字符类型,最大长度1000】 name (图层名称)
返回结果
正常:
{success:1,msg:”ok “,code:”200 “, rows:[ {“objectId”: 功能ID }] }
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
更新数据资源
接口
/cloudlink-core-framework/app/dataresource/update
请求方式
POST
参数类型
application/json
参数
{
objectId:string,
parentId?:string,
resourceName?:string,
description?:string,
remark?:string
}
objectId: 【要更新的数据资源ID,必选,字符类型,最大长度50】
resourceName: 【资源名称,可选,字符类型,最大长度200】
parentId: 【父节点ID,可选,字符类型,最大长度50】
description: 【功能描述,可选,字符类型,最大长度2000】
remark: 【备注,可选,字符类型,最大长度2000】
返回结果
正常:
{success:1,msg:"ok ",code:"200 ", rows:[ {"objectId": 功能ID }] }
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
删除数据资源
接口
/cloudlink-core-framework/app/dataresource/delete
请求方式
POST
参数类型
application/json
参数
{
objectId:string,
appId:string,
}
objectId: 【要删除的数据资源ID,必选,字符串类型,如果删除的节点含有子节点,则传父节点和所有子节点的Id,用逗号隔开】
appId: 【应用Id,必选,字符串类型】
返回结果
正常:
{success:1,msg:"ok ",code:"200 ", rows:[ {"objectId": 功能ID }] }
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
查询数据资源
接口
/cloudlink-core-framework/app/dataresource/queryList
请求方式
GET
参数类型
application/json
参数
{
appId:string,
creatUserId?:string,
dataId:string,
dataName?:string,
}
appId: 【应用ID,必选,字符类型】
creatUserId: 【资源创建人员ID,可选,字符类型】
dataId: 【数据ID,必选,字符类型】 lid
dataName: 【数据名称,可选,字符类型】
返回结果
正常:
{"success":1,"code":"200","msg":"ok","rows":[{"isExist":true|false}]}
异常:
{success:-1,msg:”对应错误信息”,code:”对应错误编码”,”rows”:[]}
添加分享记录
接口
/cloudlink-core-framework/app/dataresource/share/add
请求方式
POST
参数类型
application/json
参数
{
shareType:string,
dataresourceId:string,
optAdd?:number,
optUpdate?:number,
optDelete?:number,
optGet?:number,
effectiveTime?:Date,
expireTime?:Date,
accessKeyList:string[],
status:number,
dataType:string
}
shareType:【分享类型,必选,字符类型,取值范围:0|1|2|3】(public:0;accesskey:1;组织机构:2;个人:3)
dataresourceId:【数据资源ID,必选,字符类型】
optAdd?:【增加操作权限,可选,int类型,取值范围:0|1】默认为0无操作权限
optUpdate?:【修改操作权限,可选,int类型,取值范围:0|1】默认为0无操作权限
optDelete?:【删除操作权限,可选,int类型,取值范围:0|1】默认为0无操作权限
optGet?:【查看操作权限,可选,int类型,取值范围:0|1】默认为1有操作权限
effectiveTime:【有效期起始时间,可选,时间类型】
expireTime:【有效期终止时间,可选,时间类型】
accessKeyList:【被分享用户访问资源的key值,必选,字符串数组类型】 用户ID/组织机构ID/访问秘钥
status: 【分享状态,可选,int类型,取值范围:-1|1】
1:正常状态,-1:冻结状态,默认取值1
dataType: 资源类型
返回结果
正常:
{success:1,msg:”ok “,code:”200 “, rows:[ {“booleanResult”: true }] }
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
更新分享记录
接口
/cloudlink-core-framework/app/dataresource/share/update
请求方式
POST
参数类型
application/json
参数
{
shareType:string,
dataresourceId:string,
markId:string,
optAdd?:number,
optUpdate?:number,
optDelete?:number,
optGet?:number,
effectiveTime?:Date,
expireTime?:Date,
accessKeyList:string[],
dataType:string
}
shareType:【分享类型,必选,字符类型,取值范围:0|1|2|3】(public:0;accesskey:1;组织机构:2;个人:3)
dataresourceId:【数据资源ID,必选,字符类型】
markId:【分享记录ID,必选,字符串类型】
optAdd?:【增加操作权限,可选,int类型,取值范围:0|1】默认为0无操作权限
optUpdate?:【修改操作权限,可选,int类型,取值范围:0|1】默认为0无操作权限
optDelete?:【删除操作权限,可选,int类型,取值范围:0|1】默认为0无操作权限
optGet?:【查看操作权限,可选,int类型,取值范围:0|1】默认为1有操作权限
effectiveTime:【有效期起始时间,可选,时间类型】
expireTime:【有效期终止时间,可选,时间类型】
accessKeyList:【被分享用户访问资源的key值,必选,字符串数组类型】 用户ID/组织机构ID/访问秘钥
dataType: 资源类型
返回结果
正常:
{success:1,msg:”ok “,code:”200 “, rows:[ {“booleanResult”: true }] }
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
删除分享记录
接口
/cloudlink-core-framework/app/dataresource/share/delete
请求方式
POST
参数类型
application/json
参数
{
markId:string
}
markId:【要删除的分享记录ID,必选,字符串类型】
返回结果
正常:
{ "success": 1, "code": "200", "msg": "ok", "rows": [ { "booleanResult": true } ]}
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
获取登录用户的分享数据资源列表
接口
/cloudlink-core-framework/app/dataresource/share/queryMyShareList
请求方式
GET
参数类型
application/json
参数
{
dataresourceId?:string,
dataId?:string,
dataName?:string,
optAdd?:number,
optUpdate?:number,
optDelete?:number,
optGet?:number,
effectiveTimeBegin?:Date,
effectiveTimeEnd?:Date,
expireTimeBegin?:Date,
expireTimeEnd?:Date,
status:number,
dataType?string
}
dataresourceId:【数据资源ID,可选,字符类型,最大长度100】
dataId:【数据ID,可选,字符类型,最大长度100】
dataName:【数据名称,可选,字符类型,最大长度1000】
optAdd?:【增加操作权限,可选,字符类型,取值范围:0|1】
optUpdate?:【修改操作权限,可选,字符类型,取值范围:0|1】
optDelete?:【删除操作权限,可选,字符类型,取值范围:0|1】
optGet?:【删除操作权限,可选,字符类型,取值范围:0|1】
effectiveTimeBegin?:【有效期起始时间开始,可选,时间类型】
effectiveTimeEnd?:【有效期起始时间结束,可选,时间类型】
expireTimeBegin?:【有效期终止时间开始,可选,时间类型】
expireTimeEnd?:【有效期终止时间结束,可选,时间类型】
status: 【分享状态,可选,List<Integer>类型,取值范围:-1|1】
1:正常状态,-1:冻结状态,默认取值{1,-1}
dataType: 资源类型 字符串,最大长度30
返回结果
正常:
{success:1,msg:"ok ",code:"200 ", rows:[ {分享的资源及记录的相关信息}] }
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
获取登录用户被分享的数据资源列表
接口
/cloudlink-core-framework/app/dataresource/share/queryBeSharedList
请求方式
GET
参数类型
application/json
参数
{
dataresourceId?:string,
dataId?:string,
dataName?:string,
optAdd?:number,
optUpdate?:number,
optDelete?:number,
optGet?:number,
effectiveTimeBegin?:Date,
effectiveTimeEnd?:Date,
expireTimeBegin?:Date,
expireTimeEnd?:Date
dataType?:string
}
dataresourceId:【数据资源ID,可选,字符类型,最大长度100】
dataId:【数据ID,可选,字符类型,最大长度100】
dataName:【数据名称,可选,字符类型,最大长度1000】
optAdd?:【增加操作权限,可选,字符类型,取值范围:0|1】
optUpdate?:【修改操作权限,可选,字符类型,取值范围:0|1】
optDelete?:【删除操作权限,可选,字符类型,取值范围:0|1】
optGet?:【删除操作权限,可选,字符类型,取值范围:0|1】
effectiveTimeBegin?:【有效期起始时间开始,可选,时间类型】
effectiveTimeEnd?:【有效期起始时间结束,可选,时间类型】
expireTimeBegin?:【有效期终止时间开始,可选,时间类型】
expireTimeEnd?:【有效期终止时间结束,可选,时间类型】
dataType: 资源类型
返回结果
正常:
{success:1,msg:"ok ",code:"200 ", rows:[ {分享的资源及记录的相关信息}] }
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
获取应用的用户列表
接口
/cloudlink-core-framework/user/getListByApp
请求方式
GET
参数类型
application/json
参数
{
appId:string,
enterpriseId?:string,
userName?:string,
mobileNum?:number,
email?:number,
account?:number,
status?:number,
orgId?:Date,
isQueryAll?:Date,
roleIds?:Date
}
appId:【应用ID,必选,字符类型】
enterpriseId:【企业ID,可选,字符类型】
userName:【用户姓名,可选,字符类型,模糊查询】
mobileNum?:【联系电话,可选,字符类型,模糊查询】
email?:【邮箱,可选,字符类型,模糊查询】
account?:【账号,可选,字符类型,模糊查询】
status?:【用户在企业应用中的状态,可选,字符类型,取值范围:1|0|-1|-2|-3,支持组合查询,默认为激活1、未激活0及已冻结-1】
[1激活 0未激活 -1冻结 -2移除 -3退出]
orgId?:【组织机构ID,可选,字符类型】
isQueryAll?:【是否查询所有组织机构下的用户,默认为true】
如果isQueryAll=true,则查询该组织机构及所有次级组织机构,否则只查询当前组织机构
roleIds?:【用户在企业应用中的角色,可选,字符类型,多个用逗号隔开】
返回结果
正常:
【分页】:{"success":1,"code":"200","msg":"ok","totalElements":0,"total":0,
"totalPages":0,"size":2,"number":1,"first":true,"last":false,"rows":[用户对象]}
【不分页】:{"success":1,"code":"200","msg":"ok","rows":[用户对象]}
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
获取企业的组织机构
接口
/cloudlink-core-framework/user/getListByApp
请求方式
GET
参数类型
application/json
参数
{
enterpriseId:string,
parentId?:string,
selfIncluded?:string,
IsQueryAll?:number
}
enterpriseId:【企业ID,必选,字符类型】
parentId: 【父节点ID,可选,字符类型】
不为空时获取该父节点下的次级节点组织机构
selfIncluded?:【是否包含自身,可选,布尔类型,默认为true】
selfIncluded为true,则返回的结果不包含树的根节点组织机构。
isQueryAll?:【是否查询所有子节点,可选,布尔类型,默认为true】
为true时则返回所有下级节点组织机构,为false时,只返回次级节点组织机构;
返回结果
正常:
{"success":1,"code":"200","msg":"ok","rows":[{组织机构对象},{组织机构对象}]}
异常:
{success:-1,msg:"对应错误信息",code:"对应错误编码","rows":[]}
静态资源
静态资源
上传资源
接口
freeserver-asset/asset/save
请求方式
POST
参数类型
无
参数
无
返回结果
正常:
{stat: 0, msg: "成功", val:{name, desc, assetUrl, previewImgUrl, crttime}}
异常
{stat: 非0正整数, msg: "错误信息"}
返回值说明:
name: 文件名字
desc: 文件描述
assetUrl: 文件访问的url
previewImgUrl: 预览图的url
crttime: 创建时间
删除资源
接口
freeserver-asset/asset/remove/:id
请求方式
GET
参数类型
无
参数
无
返回结果
正常:
{stat: 0, msg: "成功"}
异常:
{stat: 非0正整数, msg: "错误信息"}
修改资源
接口
freeserver-asset/asset/save
请求方式
POST
参数类型
无
参数
{
id: string
name: string
msg: string
}
name: 必选,修改后的资源名字
desc: 可选,不传默认为空,覆盖原来desc
otherMsg:可选,其他信息,暂不支持
返回结果
正常:
{stat: 0, msg: "修改成功", val: true}
异常:
{stat: 非0正整数, msg: "错误信息", val: false}
查询所有资源
接口
freeserver-asset/asset/getall
请求方式
POST
参数类型
application/json
参数
{
keyword?: string,
offset?: number,
pagecount?: number
}
keyword: 可选,搜索的关键字
offset:可选,偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0
pagecount: 可选,每页个数,默认值20
返回结果
正常:
{stat: 0, msg: "成功", val: {id, name, desc, assetUrl, previewImgUrl, crttime, userid, fileType}}
异常:
{stat:非0正整数, msg: "错误信息"}
查询单个资源
接口
freeserver-asset/asset/getone/:id
请求方式
GET
参数类型
无
参数
无
返回结果
返回文件本身
获取资源个数
接口
freeserver-asset/asset/count
请求方法
POST
参数类型
application/json
参数
{keyword?: string}
keyword: 可选,搜索关键字
返回结果
正常:
{stat: 0, msg: "成功", val: 个数}
异常:
{stat:非0正整数, msg: "错误信息"}
数据结构梳理
创建影像瓦片数据集
瓦片数据集为一个zip/rar格式的压缩包。影像数据文件夹必须是0,1,2,3,4,5这种格式的文件夹。
压缩方式介绍:
(1)压缩包里可以直接放影像数据。如图-1
(2)压缩包里也可以包含一级文件夹,在该文件夹内存放影像数据。如图-2
图-1
图-2
创建高程数据集
高程数据集为一个zip/rar压缩包,高程数据目前支持.bil格式。
压缩方式介绍:
(1)压缩包里可以直接存放高程数据,必须要有metadata.xml文件。如图-4
metadata.xml文件结构如图3所示:
图-3
- bil表示支持bil格式的高程瓦片数据
- MunTilesHighAtLod0 表示0级瓦片数,18和9分别表示18列9行。
- MinLevel和MaxLevel表示高程瓦片的最小和最大级别,这里最小级别是0,最大级别是3。
- DataType表示数据类型是int16类型的。
(2)压缩包里也可以包含一级文件夹,该文件夹内存放高程数据,必须要有metadata.xml文件。如图-5
图-4
图-5
创建Pmodel瓦片数据集
pmodel数据集为一个zip/rar格式的压缩包。
压缩方式介绍:
(1)压缩包里可以直接存放pmodel数据文件。
例如该数据可以是一个由 B1、F1、F2 3部分文件和一个.pmtc文件成的模型数据。点击进入B1文件夹,展示该模型部分详细的数据文件,该文件夹中的xml和mtc文件必须和该部分的模型文件夹同名,如B1.mtc和B1.xml必须和B1文件夹对应。在B1文件夹中,ifc.xml主要用于存储模型属性信息。
如图-6、图-7所示
图-6
图-7
(2)压缩包里也可以包含一级文件夹。
该文件夹内可以存放B1、F1、F2 3部分数据和一个.pmtc文件构成的模型数据。点击进入B1文件夹,展示模型该部分详细的数据文件。如图-8、图-9
图-8
图-9
一键飞渡
一键飞渡
上传模型
接口
/zuul/freeserver-one/services/one/import
请求方式
POST
参数类型
multipart/form-data
参数
{
modelfile:File,
srctype:string,
destype:boolean,
opts:string,
jobid?:string,
mid?:string
}
modelfile: 模型文件。
srctype:数据源格式。
// 枚举
enum SourceTypeStage {
photogrammetry = 1,
ifc = 2,
stp = 3,
fbx = 4,
osgb = 5,
osg = 6,
rvt = 7,
catia = 8,
dgn = 9,
obj = 10,
3ds = 11
}
destype: 数据目标格式。
// 枚举
enum TargetTypeStage {
pmodel = 0,
ptiles = 1,
pmts = 2,
osgb = 3
}
opts:高级参数。其值为空或者是json字符串。
jobid: 处理任务ID (人工流程介入时会需要此参数)
mid:资源ID (人工流程介入时会需要此参数)
返回结果
{"stat":0,"msg":"ok","val":处理任务ID}
上传模型(采用断点续传的接口)
接口
/zuul/freeserver-one/services/one/sliceimport
请求方式
POST
参数类型
application/json
参数
{
filehash:string,
srctype:string,
destype:boolean,
opts:string,
jobid?:string,
mid?:string
}
filehash: 模型文件的MD5值(只有采用断点续传的模型才可以使用)。
srctype:数据源格式。
// 枚举
enum SourceTypeStage {
photogrammetry = 1,
ifc = 2,
stp = 3,
fbx = 4,
osgb = 5,
osg = 6,
rvt = 7,
catia = 8,
dgn = 9,
obj = 10,
3ds = 11
}
destype: 数据目标格式。
// 枚举
enum TargetTypeStage {
pmodel = 0,
ptiles = 1,
pmts = 2,
osgb = 3
}
opts:高级参数。其值为空或者是json字符串。
jobid: 处理任务ID (人工流程介入时会需要此参数)
mid:资源ID (人工流程介入时会需要此参数)
返回结果
{"stat":0,"msg":"ok","val":处理任务ID}
放弃执行中的模型处理任务
接口
/freeserver-one/services/one/drop/:jobid
请求方式
POST
参数类型
无
参数
{
jobid?:string
}
jobid: 处理任务ID
返回结果
{"stat":0,"msg":"ok","val":""}
获取模型资源个数(全部资源)
接口
/freeserver-one/services/one/resource/count
请求方式
POST
参数类型
application/json
参数
{
keyword?: string
}
keyword: 可选,搜索的关键字
返回结果
正常:
{stat: 0, msg: "成功", val:count}
异常:
{stat:非0正整数, msg: "错误信息"}
获取模型资源列表(全部资源)
接口
/freeserver-one/services/one/resource/get
请求方式
POST
参数类型
application/json
参数
{
keyword?: string,
offset?: number,
pagecount?: number
}
keyword: 可选,搜索的关键字
offset:可选,偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0
pagecount: 可选,每页个数,默认值20
返回结果
正常:
{stat: 0, msg: "成功", val: ResourceInformation[]]}
异常:
{stat:非0正整数, msg: "错误信息"}
获取处理错误的模型资源个数
接口
/freeserver-one/services/one/resource/error/count
请求方式
POST
参数类型
application/json
参数
{
keyword?: string
}
keyword: 可选,搜索的关键字
返回结果
正常:
{stat: 0, msg: "成功", val:count}
异常:
{stat:非0正整数, msg: "错误信息"}
获取处理错误的模型资源列表
接口
/freeserver-one/services/one/resource/error/get
请求方式
POST
参数类型
application/json
参数
{
keyword?: string,
offset?: number,
pagecount?: number
}
keyword: 可选,搜索的关键字
offset:可选,偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0
pagecount: 可选,每页个数,默认值20
返回结果
正常:
{stat: 0, msg: "成功", val: ResourceInformation[]}
异常:
{stat:非0正整数, msg: "错误信息"}
获取处理中的模型资源个数
接口
/freeserver-one/services/one/resource/execute/count
请求方式
POST
参数类型
application/json
参数
{
keyword?: string
}
keyword: 可选,搜索的关键字
返回结果
正常:
{stat: 0, msg: "成功", val:count}
异常:
{stat:非0正整数, msg: "错误信息"}
获取处理中的模型资源列表
接口
/freeserver-one/services/one/resource/execute/get
请求方式
POST
参数类型
application/json
参数
{
keyword?: string,
offset?: number,
pagecount?: number
}
keyword: 可选,搜索的关键字
offset:可选,偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0
pagecount: 可选,每页个数,默认值20
返回结果
正常:
{stat: 0, msg: "成功", val: ResourceInformation[]}
异常:
{stat:非0正整数, msg: "错误信息"}
获取成功处理完成的模型资源个数
接口
/freeserver-one/services/one/resource/finish/count
请求方式
POST
参数类型
application/json
参数
{
keyword?: string
}
keyword: 可选,搜索的关键字
返回结果
正常:
{stat: 0, msg: "成功", val:count}
异常:
{stat:非0正整数, msg: "错误信息"}
获取成功处理完成的模型资源列表
接口
/freeserver-one/services/one/resource/finish/get
请求方式
POST
参数类型
application/json
参数
{
keyword?: string,
offset?: number,
pagecount?: number
}
keyword: 可选,搜索的关键字
offset:可选,偏移,分页获取数据时使用。其值为:(页数-1)*每页个数。默认值0
pagecount: 可选,每页个数,默认值20
返回结果
正常:
{stat: 0, msg: "成功", val: ResourceInformation[]}
异常:
{stat:非0正整数, msg: "错误信息"}
获取单个资源详细信息
接口
/freeserver-one/services/one/resource/getone/:mid
请求方式
GET
参数类型
无
参数
mid: 资源ID
返回结果
正常:
{stat: 0, msg: "成功", val: ResourceInformation}
异常:
{stat:非0正整数, msg: "错误信息"}
删除资源
接口
/freeserver-one/services/one/resource/delete/:mid
请求方式
POST
参数类型
无
参数
mid: 资源ID
返回结果
正常:
{stat: 0, msg: "成功", val:""}
异常:
{stat:非0正整数, msg: "错误信息"}
下载资源处理最终结果压缩文件
接口
/freeserver-one/services/one/resource/download/:mid
请求方式
GET
参数类型
无
参数
mid: 资源ID
返回结果
正常:
文件主体
异常:
{stat:非0正整数, msg: "错误信息"}
任务处理详细信息–WebSocket
模型处理过程详细信息采用WebSocket进行传输,使用Socket.io模块进行通信。
1. 链接
a. Socket.io模块必须先引入。
b. 创建链接:
var socket = io.connect('http://localhost:8050?token=c10596db-6921-4a89-890f-0ece7f9ba082', { path: "/freeserver-one/socket.io" });
2. 注册
发送获取详细信息的注册消息
socket.emit("message",{type:"detail",data:"jobid"});
3. 接收消息
注册消息接收事件
socket.on("message",(msg)=>{
// 处理、显示消息
});
/*
其中msg格式如下:
{
type:string,
data:any
}
*/
处理任务详细信息的返回消息格式如下:
type:"detail" // 其中type类型固定为'detail'
data:{
jobid:"任务ID",
msg:"需要展示的详细信息"
}
任务执行状态的返回消息格式如下:
type:"stat" // 其中type类型固定为'stat'
data:{
jobid:"任务ID",
msg:"任务当前执行的具体步骤" // JobStep枚举
}
4. 反注册
发送不再获取任务信息信息的消息
socket.emit("message",{type:"undetail",data:"jobid"});
ForWeb后台
场景相关
新增/更新场景
接口
/freeserver-ocelot/scene/upsert
请求方式
POST
参数类型
application/json
参数
{
pid?: string,
name: string,
detail?: Object,
share?:boolean
}
pid: 更新的场景的pid,不传则新建一个场景。
name: 场景名字。
detail:场景其他信息。
share:是否公开,默认false不公开
返回结果
正常:
{"stat":0,"msg":"成功","val":pid}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
查询单个场景的详细信息
接口
/freeserver-ocelot/scene/getone/:pid
请求方式
GET
参数
无
返回结果
正常:
{"stat":0, "msg":"成功", val:{pid, name, userid, createTime}}
错误:
{"stat":非0数字, "msg":"错误信息"}
获取全部场景
接口
/freeserver-ocelot/scene/getall
请求方式
POST
参数
{
keyword?: string,
offset?: number,
pagecount: number,
share?: boolean
}
keyword:获取包含关键字的所有场景(关键字根据name获取)
offset: 分页的偏移量。其值为:(页数-1)*每页个数。默认值0.
pagecount: 每页数量。默认值20
share:true获取公开的场景,false获取非公开的场景,不传获取所有场景
返回结果
正常:
{"stat":0, "msg":"成功", val:[]}
错误:
{"stat":非0数字, "msg":"错误信息"}
获取全部场景个数
接口
/freeserver-ocelot/scene/count
请求方式
POST
参数
{
keyword?: string
}
keyword: 搜索的关键字
返回结果
正常:
{"stat":0, "msg":"成功", val:场景个数}
错误:
{"stat":非0数字, "msg":"错误信息"}
删除一个场景
接口
/freeserver-ocelot/scene/remove/:pid
请求方式
GET
参数
无
返回结果
正常:
{"stat":0, "msg":"成功"}
错误:
{"stat":非0数字, "msg":"错误信息"}
断点续传上传接口
断点续传
上传文件
接口
/cloudlink/freeserver-one/slice/upload
请求方式
POST
参数类型
multipart/form-data
参数
{
hash: string,
name: string,
index: number,
slicecount: number,
size: number,
chunksize: number,
uploadFile: ArrayBuffer
}
hash: 文件的hash。
name:文件名字。
index: 当前片角标。
slicecount:总片数。
size: 文件大小
chunksize:每一片大小
uploadFile: 上传片的每一片的文件,此参数是直接发送给后台,不是以参数形式传递,例:前端ajax请求时,直接send(uploadFile)
返回结果
{"stat":0,"msg":"ok"}
获取已经上传多少片
接口
/cloudlink/freeserver-one/slice/count/:hash
请求方式
POST
参数类型
无
参数
hash: 文件的hash。
返回结果
{"stat":0,"msg":"ok", val:number}
获取已经上传片的hash,进行校对
接口
/cloudlink/freeserver-one/slice/:hash/:depth/:index
请求方式
POST
参数类型
无
参数
hash: 文件的hash。
depth: 默克尔树的深度。
index: 当前默克尔树的深度的叶子节点的索引
返回结果
{"stat":0,"msg":"ok", val:hash值}
FDB
FDB
查询模型信息
接口
/freeserver-fdb/services/:version/fdb/pmodelinfo/get/:pagenumber/:pagecount
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
pagenumber: number,
pagecount: number,
}
version: 服务版本号。
pagenumber: 页码。
pagecount: 每页记录数。
返回结果
正常:
{"stat":0,"msg":"成功","val":PModelInfo[]}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
查询模型是否存在
接口
/freeserver-fdb/services/:version/fdb/pmodel/exists/:modelname
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelname: string
}
version: 服务版本号。
modelname: 模型名称。
返回结果
正常:
{"stat":0,"msg":"成功","val":modelId}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
查询模型结构树根节点
接口
/freeserver-fdb/services/:version/fdb/pmodeltree/get/root/:modelid
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number
}
version: 服务版本号。
modelid: 模型ID。
返回结果
正常:
{"stat":0,"msg":"成功","val":ModelTreeNode}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
查询树子节点
接口
/freeserver-fdb/services/:version/fdb/pmodeltree/get/node/:modelid/:tileno/:pguid
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
tileno: number,
pguid: string
}
version: 服务版本号。
modelid: 模型ID。
tileno: 子数据集编码,由根节点或者父级节点中获取,
pguid: 父节点GUID
返回结果
正常:
{"stat":0,"msg":"成功","val":ModelTreeNode[]}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
查询模型部件属性
接口
/freeserver-fdb/services/:version/fdb/pmodelcompattr/get/:modelid/:guid
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
guid: string
}
version: 服务版本号。
modelid: 模型ID。
guid: 构件ID
返回结果
正常:
{"stat":0,"msg":"成功","val":CompAttr[]}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
根据指定条件查询模型构件属性
接口
/freeserver-fdb/services/:version/fdb/pmodelcompinfo/get/:modelid/:propkey/:propval/:pagenumber/:pagecount
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
propkey: string,
propval: string,
pagenumber: number,
pagecount: number
}
version: 服务版本号。
modelid: 模型ID。
propkey: 属性Key
propval: 属性值
pagenumber: 页码
pagecount: 每页记录个数
返回结果
正常:
{"stat":0,"msg":"成功","val":CompInfo[]}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
查询所有构件类型
接口
/freeserver-fdb/services/:version/fdb/pmodelcomptype/get/:modelid
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number
}
version: 服务版本号。
modelid: 模型ID。
返回结果
正常:
{"stat":0,"msg":"成功","val":CompType[]}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
根据构件类型ID查询构件信息
接口
/freeserver-fdb/services/:version/fdb/pmodelcomp/get/:modelid/:typeid/:pagenumber/:pagecount
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
typeid: number,
pagenumber: number,
pagecount: number
}
version: 服务版本号。
modelid: 模型ID。
typeid: 构件类型ID
pagenumber: 页码。
pagecount: 每页记录数。
返回结果
正常:
{"stat":0,"msg":"成功","val":CompInfo[]}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
根据构件GUID更新构件属性
接口
/freeserver-fdb/services/:version/fdb/pmodelcompinfo/update/:modelid/:guid/:propkey/:propval
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
guid: string,
propkey: string,
propval: string
}
version: 服务版本号。
modelid: 模型ID。
guid: 构件ID
propkey: 属性Key。
propval: 属性值。
返回结果
正常:
{"stat":0,"msg":"成功"}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
插入一条新的时间任务
接口
/freeserver-fdb/services/:version/fdb/pmodeltask/insert/:modelid
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
taskname:string,
taskid:string,
pid:string,
plans:string,
plane:string,
actuals:string,
actuale:string,
tasktype:number,
guid:string,
tprice:number,
desc:string,
bactive:boolean,
percent:number
}
version: 服务版本号。
modelid: 模型ID。
taskname:任务名称,
taskid:任务ID,
pid:父级任务ID,
plans:计划开始时间,
plane:计划结束时间,
actuals:实际开始时间,
actuale:实际结束时间,
tasktype:任务类型,
guid:任务ID,
tprice:总价,
desc:描述,
bactive:任务是否激活状态,
percent:任务完成百分比
返回结果
正常:
{"stat":0,"msg":"成功"}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
查询时间任务
接口
/freeserver-fdb/services/:version/fdb/pmodeltask/get/:modelid/:pagenumber/:pagecount
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
pagenumber:string,
pagecount:string
}
version: 服务版本号。
modelid: 模型ID。
pagenumber:页码,
pagecount:每页记录个数
返回结果
正常:
{"stat":0,"msg":"成功","val":Task[]}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
删除时间任务
接口
/freeserver-fdb/services/:version/fdb/pmodeltask/remove/:modelid/:taskid
请求方式
POST/GET
参数类型
application/json
参数
{
version: string,
modelid: number,
taskid:number
}
version: 服务版本号。
modelid: 模型ID。
taskid:任务ID
返回结果
正常:
{"stat":0,"msg":"成功"}
异常:
{"stat":非0数字,"msg":"对应错误信息"}
数据转换说明表
XML文件规范
XML文件规范
包含*.xml,*.mtc,*.pmtc等实际文件内容格式为XML的文件。
1. 使用xml文件第一行中定义的’encoding’属性标定此文件的编码格式。如果没有此属性则默认采用’UTF-8’编码。现支持的编码格式如下:
a. Node.js Native encodings: utf8, ucs2/utf16le, ascii, binary, base64, hex
b. Unicode: UTF-16BE, UTF-16(with BOM)
c. Single-byte:
Windows codepages: 874, 1250-1258 (aliases: cpXXX, winXXX, windowsXXX)
ISO codepages: ISO-8859-1 - ISO-8859-16
IBM codepages: 437, 737, 775, 808, 850, 852, 855-858, 860-866, 869, 922, 1046, 1124, 1125, 1129, 1133, 1161-1163 (aliases cpXXX, ibmXXX)
Mac codepages: maccroatian, maccyrillic, macgreek, maciceland, macroman, macromania, macthai, macturkish, macukraine, maccenteuro, macintosh
KOI8 codepages: koi8-r, koi8-u, koi8-ru, koi8-t
Miscellaneous: armscii8, rk1048, tcvn, georgianacademy, georgianps, pt154, viscii, iso646cn, iso646jp, hproman8, tis620
d. Multi-byte:
Japanese: Shift_JIS, Windows-31j, Windows932, EUC-JP
Chinese: GB2312, GBK, GB18030, Windows936, EUC-CN
Korean: KS_C_5601, Windows949, EUC-KR
Taiwan/Hong Kong: Big5, Big5-HKSCS, Windows950
2. 现单文件大小要求上限为400M,大于400M可能存在不能正确解析的问题。
Freedo基础库地址:../../freedox/FreedoX/FreedoX.js
Freedo核心库地址:../../freedo/Freedo/Freedo.js
Freedo核心库文档地址:../../freedo/Documentation/
一、概述
v2.3
- 1、SDK的分发改为Git库的形式
- 2、基础库升级为1.51版
- 3、完善代码注释及文档;
- 4、新增PMTS管理器类;
- 5、新增参数化建模模块;
- 6、新增小组件模块;
- 7、新增综合示例;
- 8、新增各类特效示例;
- 9、新增鹰眼图、多视图功能;
- 10、新增空间分析功能;
- 11、新增特效模块;
v2.1
- 1、提供前端工具功能,新增按用户进行数据上传、浏览、分享功能;
v2.0
- 1、确认以“BIM+”作为Freedo Holo3D for Web产品理念;
- 2、公布技术支持QQ群:276996977;
- 3、重构开发架构;
- 4、重新设计产品网站,注:计划于版本v2.1与现有gBIM360网站进行合并;
- 5、确认产品的开发和发布流程,统一设定产品开发采用的相关管理工具,注:以git作为代码管理工具;
- 6、前端开发使用Vue.js框架为基础。
二、分类说明
Holo3D Server
v2.1
- 1、新增微服务:FREESERVER-FDB; a.提供Linux、Windows两个版本,包含相应的微服务接口;
- 2、FREESERVER-PMTS服务升级,支持属性数据存储到FDB或者MongoDB中;
- 3、FREESERVER-ONE(一键飞渡)直接支持*.rvt【Revit格式】、*.catproduct【Catia格式】、*.obj、*.3ds等其他格式模型; a.完善属性分组功能和属性格式; b.完善转换精细度控制,调整为有视图的控制; c.修复部分Revit数据中部件位置不正确的Bug;
- 4、FREESERVER-ONE支持断点续传和秒传,支持数据完整性验证,支持最大400M的属性文件【xml格式】;
- 5、修复部分Bug
v2.0
- 1、采用SpringCloud微服务框架
- 2、支持公有云、私有云部署;
- 3、WMS服务;
- 4、WMTS服务;
- 5、PMTS服务。PMTS服务提供的服务包括PModel数据服务、结构树信息服务、部件属性信息服务等在内的一整套数据服务;
- 6、WETS服务。WETS为飞渡自定义的地形高程服务;
- 7、一键飞渡服务,支持rvt、CATProduct、dwg、dgn、obj等三维数据在线自动转换;
- 8、Holo3D for Web 场景服务;
Holo3D Viewer
v2.1
- 1、完善渲染调度,大幅优化移动端性能,降低手机耗能,解决了大部分发烫问题;
v2.0
- 1、产品架构调整,以“高、中、低”三层架构对外提供接口功能;
- 2、高级接口提供的功能粒度最细,接口数量也最多,基本适用于大部分图形化功能应用;
- 3、中级接口的功能主要以场景操作和BIM应用为主,具体包含场景定义、相机镜头操作、三维测量、模型剖切等功能,以降低“BIM+”应用的开发难度为目标提供接口功能;
- 4、初级接口的功能以提供“微应用”的模式提供接口功能,其中的应用对象的接口和调用流程相对固定,以解决最终应用场景为目标进行相应开发;
- 5、以vue.js为前端开发框架;
基础功能模块----<命名空间 :fdapp>
v2.3
- 1、新增综合示例;
v2.1
- 1、新增平面显示模式,支持倾斜摄影数据、模型数据在局部坐标系下同时显示;
v2.0
- 1、创建默认场景视图;
- 2、获取FreedoX.js文件的路径;
- 3、设置天空盒或者背景色;
- 4、设置贴地后的天空盒背景;
漫游交互模块----<命名空间 :fdcamera>
v2.3
- 1、三维窗口截屏:优化全屏截屏与比例截屏的展示效果,区分更加明显;
- 2、框选放大:由原来的跳往框选放大区域改为飞往;
- 3、相机飞入或跳入:增加以经纬度作为参数的飞入,跳入接口
- 4、线框选取模式。
v2.0
- 1、通过边界设置相机视域;
- 2、截屏(截取当前屏幕内容);
- 3、相机围绕中心点顺时针环绕飞行两周,并缓慢停止,支持时间设置;
- 4、相机定位到指定的位置和姿态(支持飞入和跳转两种操作);
- 5、相机定位到制定包围球的位置(东、南、西、北、上);
- 6、获取相机的位置和姿态;
- 7、支持相机以当前位置向左/向右旋转指定角度(单位:度);
- 8、支持记录相机路径;
- 9、支持聚焦和非聚焦模式管理;
工具模块----<命名空间 :fdtools>
v2.3
- 1、新增 PMTS 管理器类;
- 2、新增水域特效;
- 3、新增淹没分析;
- 4、新增云层特效;
- 5、新增粒子特效;
- 6、新增河流特效;
- 7、模型剖切:增加操作轴的显隐;
- 8、部件选取:增加高亮闪烁和显隐闪烁两种点选方式;
- 9、新增gltf模型剖切;
- 10、新增等高线分析;
- 11、新增: 通视分析、视域分析、天际线分析、开敞度分析、限高分析、日照分析、断面分析、挖填方分析、坡度与坡向分析;
v2.1
- 1、新增PModel数据编辑(压平、抬升);
- 2、新增地形数据编辑(压平、抬升),支持WETS、STK等地形数据;
- 3、完善地质体属性拾取功能;
- 4、新增参数化建模功能;
- 5、量测功能新增高程实时测量和点量测功能、面积量测功能更新(三角剖分);
- 6、道路绘制功能增强,增加贴合率接口(平滑且不更改关键数据);
- 7、多个功能的节点编辑功能(路径编辑、多段线绘制、道路绘制、标绘等);
v2.0
- 1、根据输入点进行地形挖洞;
- 2、根据钻孔信息进行地质模拟;
- 3、影像图层管理
- 4、键盘控制,并且支持连续发送按键时间(频率:30次/秒);
- 5、标签管理;
- 6、地形图层管理,支持STK、WETS地形数据,支持WETS多图层加载;
- 7、视点管理,支持用组的形式管理视点,每个视点可以进行连续播放。
微应用模块----<命名空间 :fdmicroapp>
v2.3
- 1、新增多段线的绘制;
- 2、新增圆的绘制;
- 3、新增填充多边形的绘制;
- 4、新增动态线的绘制;
- 5、新增shp文件的加载;
- 6、新增动态纹理多段线的绘制;
- 7、新增标签的绘制:支持鼠标点击事件;
- 8、新增道路的绘制:支持设置平滑度、自定义贴图、任意横断面形状等特性;
- 9、新增二维标牌和立体标牌;
- 10、新增地质体;
- 11、新增Tube绘制:支持几种预置的Loft绘制;
- 12、新增圆柱绘制:支持有厚度和无厚度的管道;
- 13、新增围墙和围栏的绘制;
- 14、新增全景图定位与浏览;
v2.1
- 1、新增PModel数据编辑(压平、抬升);
- 2、新增地形数据编辑(压平、抬升),支持WETS、STK等地形数据;
- 3、完善地质体属性拾取功能;
- 4、新增参数化建模功能;
- 5、量测功能新增高程实时测量和点量测功能、面积量测功能更新(三角剖分);
- 6、道路绘制功能增强,增加贴合率接口(平滑且不更改关键数据);
- 7、多个功能的节点编辑功能(路径编辑、多段线绘制、道路绘制、标绘等);
v2.0
- 1、空间量测功能,包含线段量测、折线量测、点量测功能;
- 2、裁剪功能类,支持调整裁剪面的位置和姿态;
- 3、根据点数组绘制多段线;
- 4、根据点数组和截面符号,绘制道路模型;
- 5、地形挖洞;
- 6、通过鼠标控制进行地质模拟,支持地层拾取;
- 7、PModel拾取功能,支持整体和部件分别拾取;
- 8、模型姿态编辑;
数据接口模块----<命名空间 :fdserver>
v2.1
- 1、FdPMTSServer文件新增了获取资源针对PMTS资源个数获取的方法
- 2、FdPMTSServer文件getResourceList方法传值方式修改
- 3、FdPMTSParser文件中获取请求地址功能修改,支持FDB方式的template
- 4、增加modelServer文件,支持访问一键飞渡功能,该文件私有化,未公开
v2.0
- 1、获取单个、多个影响图层服务;
- 2、获取单个、多个PMTS数据服务;
- 3、PMTS数据解析服务,例如BIM数据属性查询;
- 4、用户场景服务,包含场景、分享场景等内容;
- 5、分享服务,支持数据、场景内容分享;
- 6、获取单个、多个地形图层服务;
- 7、用户管理服务,管理用户注册、登录、密码修改等内容(注:登录后返回Token);
前端UI模块----<命名空间 :fdwidgets>
v2.3
- 1、新增导航器组件;
- 2、新增相机信息组件;
v2.0
- 1、创建、销毁指北针,指北针图片通过SVG加载;
其他----<命名空间 :fdmisc>
v2.1
- 1、gltf模型子部件控制;
- 2、修复ie截屏不能保存、地形挖洞鼠标操作异常等问题;
v2.0
- 1、支持球面距离计算;
- 2、制定位置的经纬度换算比例;
- 3、获取鼠标位置的世界/经纬度坐标;
- 4、经纬度与世界坐标换算;
- 5、判断当前值是否为数字;
- 6、小数点数字截取;
关于Holo3D for Web并发数的说明
Holo3D for Web支持的最大并发数:100
- (1)并发指所有客户终端浏览器同一时刻连入Holo3D for Web私有云服务器的数量。再次强调:“同一时刻”。
- (2)在Holo3D for Web私有云服务器端,可以设置超时时间,客户如果不与BIM场景进行交互,并超过设定的时间后,自动断开该连接,并释放该并发。
- (3)举例来说:
A用户打开场景1,并发数:1;
B用户打开场景1,并发数:2;
B用户不关闭场景1,新开页面打开场景2,并发数:3;
C用户用手机或微信打开场景3,并发数:4;
A用户关闭场景1,并发数:3;
B用户场景1放着不交互,超过10分钟(设定的超时时间),并发数:2
C用户关闭手机浏览器,并发数:1.
一、系统软硬件最小配置要求
操作系统 | CPU | 内存 | 服务支持 |
---|
Centos7 1台 | 16核 | 32G | Docker服务 |
Windows Server 2008 R2 1台 | 4核 | 8G | Visual C++ Redistributable for Visual Studio 2015 |
二、部署MySQL、MongoDB、Redis、RabbitMQ、Elasticsearch等公共服务
1、解压holo3d安装包
unzip holo3d.zip
2、切换到holo3d目录
cd holo3d/
3、修改配置文件config中的参数
#公共服务IP地址 PUBLIC_OLD_IP=192.168.30.31 PUBLIC_MYIP=192.168.30.31 #云产品研发平台IP地址 CLOUDLINK_OLD_IP=192.168.30.31 CLOUDLINK_MYIP=192.168.30.33 #holo3d server IP地址 FREESERVER_OLD_IP=192.168.30.31 FREESERVER_MYIP=192.168.30.31 #域名相关 domain_name=gbim.cc domain_new=gbim360.com
4、使用脚本启动公共服务
sh ./public_service_start.sh
5、启动完成之后,初始化rabbitmq
docker exec -it cloudlink-rabbitmq bash rabbitmqctl add_user paasAdmin 123456 rabbitmqctl set_user_tags paasAdmin administrator rabbitmqctl add_vhost /paas_host rabbitmqctl set_permissions -p /paas_host paasAdmin '.*' '.*' '.*' exit
6、配置mongodb权限,导入初始化数据
docker exec –it freeserver-mongo bash mongo admin db.createUser({ user: 'mongo_admin', pwd: 'mongo_admin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }); db.auth("mongo_admin","mongo_admin"); use freeserver; db.createUser({user:"admin",pwd:"admin",roles:["dbOwner"]});
三、部署Holo3D 前端服务
1、切换到解压出来的holo3d目录
cd holo3d
2、使用脚本启动前端服务
sh holo3d_front_start.sh
四、部署云产品研发平台
1、切换到holo3d目录
cd holo3d/
2、执行脚本启动云产品研发平台所有服务
sh ./cloudlink_start.sh
五、部署Holo3D Server后台服务
1、部署freeserver_admin、freeserver_asset、freeserver_ocelot、freeserver_pmts、freeserver_wets、freeserver_wmts服务
切换到holo3d目录
cd holo3d
使用脚本启动holo3d server相关服务
sh holo3d_server_start.sh
2、部署freeserver_one服务
注:freeserver_one服务需要在windows server 2008 R2 服务器上执行- 1、安装nodejs 8.9.4版本,直接双击holo3d/windows目录下的 node-v8.9.4-x64.msi安装即可
- 2、修改配置文件 holo3d/ freeserver/one/scfg/config.one.json
- 3、启动freeserver_one服务
打开cmd窗口,然后执行以下命令
cd holo3d/freeserver/ node freeserver/one/server/serve_one.js