技术领域
[0001] 本发明涉及建模领域,具体涉及一种云建模方法、云建模装置以及云建模系统。
相关背景技术
[0002] 随着BIM的推广,三维建模技术发展迅速,形成了以AutoDesk,Bentley,CATIA为代表的技术生态。在房建、交通工程、城市管理、生态环境等领域,存在着大量的常规三维模型,他们具有数量众多、特点统一、采用通用参数设计、具备自动建模条件等特点。为了降低工作量,常规三维模型建模一般采用抽象统一参数、开发建模插件、自动批量建模的手段,一般称之为参数化建模手段。使用参数化建模能够在一定程度上提高建模效率,但对于复杂的工程行业,工程本身具有专业领域多、数据量庞大、数据种类繁多等特点,常规的参数化建模软件无法实现这些数据和三维建模成果在同一场景中展示,这也限制了基于地图学、地理学的分析功能,而GIS学科的发展,恰好弥补了这一不足。
[0003] 以BIM建模软件实现建模,以GIS软件实现模型呈现分析,成为了行业技术热门。常规的BIM数据到GIS数据要经过数据处理工具的处理,然后在GIS软件中发布成为服务,以供后续使用,但是这种方式,严重阻碍了数据的及时呈现。
[0004] 常规建模软件往往需要安装到建模人员的计算机上,目前常规建模软件往往会对计算机性能提出挑战,并且多套软件的部署往往需要多套授权,无形之中增加了部署成本。
[0005] 针对常规模型建模,往往提取的参数有限,建模方法统一,而将常规建模软件部署给建模人员,则需要培训建模人员学会使用该软件,无形之中增加了学习成本。
[0006] 常规建模软件为解决常规模型批量建模问题,一般采用插件开发的方式,但该方法同样要求建模人员电脑上包含建模软件。
[0007] 当不同组织或机构在同一场景下建模时,一般包括各种表现形式的大量数据,涉及地理学、测量学、地图学等多学科,数据来源也多种多样,常规的建模软件一般难以承载这些数据。
[0008] 常规BIM数据到GIS数据需要先将BIM数据处理成为GIS数据,然后再发布成为服务,供后续使用,流程复杂冗长。
具体实施方式
[0028] 为使本发明的目的、技术方案和优点更加清楚明白,下面结合附图和实施方式对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本发明的限定。
[0029] 另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分。
[0030] 在不冲突的情况下,本发明中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明本发明。
[0031] 本实施例的实施环境包括客户端、任务中心、建模中心和插件中心。
[0032] 客户端可以是可以是手机、平板电脑、电子书阅读器、便携计算机和台式计算机等等。
[0033] 客户端可以安装有应用程序客户端,或者安装有浏览器,通过浏览器访问应用程序的网页客户端。本发明实施例将应用程序客户端和网页客户端统称为客户端,下文不再特别声明。
[0034] 客户端将不同的建模开发包呈现给用户,引导用户输入建模参数,并将参数提交到任务中心,实现新的建模任务。
[0035] 任务中心可以是一台服务器,或者由若干台服务器组成的服务器集群,或是一个云计算服务中心。任务中心用于与客户端交互提供数据输入与输出功能。负责建模引擎空闲管理以及建模任务的分发工作,当客户端提交了建模参数以后,任务中心创建一个新的任务,查找空闲的建模引擎,并将建模任务和建模参数分发出去,并且跟踪建模引擎的状态,直到建模完成,任务结束。
[0036] 建模中心可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心,并且在服务器内安装了多个建模引擎,建模中心用于根据建模参数进行建模,通过接收建模开发包以及建模参数,实现建模中心的自动化建模,并生成可供客户端调用的在线数据,并将数据进行合理管理。
[0037] 插件中心可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。插件中心用于存储建模开发包,主要负责建模逻辑以及建模参数的抽象化,通过开发人员定制开发,实现不同三维模型的建模方法。
[0038] 其中任务中心、建模中心、插件中心可以由一台服务器同时兼任三种功能,也可以两两配合组队,当然,也可以独立,并且由不同的服务提供商提供相应的服务。
[0039] 例如:服务商一提供任务分配服务,服务商二提供建模服务,服务商三提供建模开发包的开发服务。
[0040] 客户端与任务中心之间可以通过无线网络相连,任务中心、建模中心和插件中心之间可以通过无线网络或者有线网络相连。
[0041] 首先需要说明的是,在本发明各个实施例中,所涉及的术语为:建模引擎是建模中心的编程控制引擎,其中建模引擎包括但不限于市面上常见的Revit,CATIA,Civil,Bentley,自研建模软件等。
[0042] 在进行建模之前,需要提取建模所需的必要参数(即建模参数),并将其形成表单模板,便于采集用户填写的参数值,供后续建模插件调用,此过程称之为建模参数的抽象化过程。
[0043] 在此过程中影响建模参数结构的因素一般有两个,①模型种类的不同,②建模引擎的不同。本发明中,三维模型的创建过程主要采用自动建模思路,因此需要将参数进行结构化,这里主要采用Json表达结构化的入参,Json结构例子如下,modelVersion:表达建模参数的不同,不同的modelVersion一般配合不同的建模逻辑,即可完成模型的自动创建。根据模型种类的不同modelVersion由用户自定义。
[0044] platform:表达建模平台的不同,不同平台一般也要配合不同的建模逻辑,实现模型的创建。Platform一般支持,CATIA、Revit、Bentley、C3D。
[0045] params:表达了建模所需要的参数集合,params是一个数组,每个元素都表征了入参的名称、描述、默认值、值类型、值等信息。
[0046] 针对不同种类的模型,参数表达方式一般不同,即使相同种类的模型也可能因为规格、材料、大小等不同造成建模参数的不同。
[0047] 不同的建模引擎(C3D,Revit,Bentley,CATIA等),各有特点。例如:C3D使用.NET做二次开发,集成方便,适合创建路线、路基等模型。
[0048] Revit使用.NET做二次开发,采用族库的思路,适合创建小范围的结构物。
[0049] Bentley和CATIA则使用C++进行二次开发,其中Bentley将所有计算机指令都以文件形式存储,避免了数据丢失,但这种基于文件的应用在与其他软件互用的时候会不兼容。
[0050] CATIA作为三维设计的领导者,可以将点、线、面作为输入条件,快速的创建模板库,实现了全参数化建模,在异形结构设计中大大提高了建模效率。本发明中,针对需要进行建模的三维模型,首先要根据其特点,确定建模所需要的引擎,根据引擎的不同,创建不同的参数和方法。
[0051] 在结构化参数中,platform字段主要标识该参数将要用于何种建模引擎,例如以上的例子中,涵洞作为小范围的结构物,使用Revit的建模更加简单。所以首选确定建模引擎为Revit,将platform字段确定为revit,再根据模型类型的不同,以及revit族库特点,确定params参数,实现建模参数的抽象化。
[0052] 实施例一参考图1,本实施例给出一种云建模方法,具体包括以下步骤:
101、客户端接收第一信息,第一信息用于触发任务需求。
[0053] 第一信息为用户根据任务需求选取插件中心的建模开发包的信息。本发明中针对版本号配置了相应的描述信息,用户可以按照开发包名称、开发包版本、描述自定义选择开发包。
[0054] 也可以根据任务需求对开发包进行筛选。
[0055] 客户端指的是用户按照建模需求采集建模参数并呈现建模结果的端,主要功能包括确定建模类型,选择建模方法,输入建模参数,提交建模参数,展示建模结果等功能。
[0056] 从形式上来说既可以是windows桌面程序又可以是web程序也可以是其它移动端程序。客户端的设计主要考虑从轻出发,保证用户使用的轻量化,业务功能的简单性,解决依赖复杂的建模软件问题。
[0057] 102、客户端将第一信息发送至插件中心,插件中心接收第一信息后判断是否存在满足任务需求的建模方法。
[0058] 插件中心中若存在满足任务需求的建模方法,则调用建模方法对应的建模开发包,并将建模开发包发送至客户端。
[0059] 当用户选择了确定的建模方法以后,也就意味着客户端知道了所需要的建模开发包,则证明插件中心中有相关的建模开发包。
[0060] 103、客户端接收到建模开发包后,根据建模开发包获得建模所需的建模参数。
[0061] 建模开发包当中包含了抽象参数,客户端拉取抽象参数,并自动生成参数录入表单,供用户在客户端录入建模参数。
[0062] 该录入方式可以为在客户端通过可交互界面(显示屏幕等)进行直接手动输入,也可以为采集式(即直接从客户端的数据库中进行调用)。
[0063] 插件中心针对建模参数抽象化,每个建模开发包都包含了批量的建模参数,每个参数明确描述了数据名称、数据类型、默认值、可选值、数据约束等信息,UI根据不同的数据类型展示不同的录入方式,用户录入最终的建模参数,完成参数录入工作。
[0064] 104、客户端将建模参数发送至任务中心。
[0065] 当参数录入完成后,首先需要用户在本地客户端对数据做简单的校验和确认,程序在提交参数前也要根据数据约束条件进行检查。一切准备就绪后,将建模参数以及依赖的建模开发包信息统一提交到任务中心。
[0066] 并且,最好保持客户端和任务中心通讯,实时确定任务状态,并且在客户端呈现给用户,直到建模完成。
[0067] 105、任务中心根据建模参数生成建模任务,并将生成的建模任务入任务池。
[0068] 106、任务中心接收建模中心发送的第三信息,并根据第三信息确定建模中心的工作状态。
[0069] 任务中心支持多个建模引擎的管理,当任务忙碌时,任务中心需要第一时间获取空闲的、符合条件的建模引擎,将建模任务分发出去。在这种要求下,任务中心和建模引擎之间必然要存在一定的通信才能解决,即建模中心需要向任务中心发送第三信息,且第三信息需要包括以下功能:建模中心第一次启动时要向任务中心进行注册,注册内容包括建模引擎类型、空闲状态。
[0070] 定时向任务中心发送心跳信息,保证建模中心和任务中心保持通信畅通。
[0071] 时刻监听建模中心的建模任务,以对建模中心做出正确的响应。
[0072] 时刻监控建模中心的空闲状态,并将状态汇报给任务中心。
[0073] 107、任务中心进行任务管理,并根据权重进行分类并排序。
[0074] 对任务池内的建模任务按照权重进行分类,依据任务紧急度、任务复杂度、建模引擎空闲数量等进行权重分析并排序,多次任务失败的任务进行移除。
[0075] 108、任务中心按照顺序将建模任务分发至处于空闲状态的建模引擎。
[0076] 如果建模引擎处于空闲状态,任务中心就会向建模中心分发建模任务。
[0077] 针对任务池内的建模任务进行任务分发,分发原则为队列顺序,根据建模引擎任务情况进行相应的负载均衡措施,保障所有的任务都能有序执行。
[0078] 根据心跳机制管理建模引擎的状态,在任务分发时根据引擎状态和类型进行相应的任务分发。
[0079] 任务中心就会向建模中心分发建模任务。建模任务的描述形式使用结构化Json数据,具体结构类型如下,cmd字段为枚举值,主要用于描述该命令的类型。包括,创建、取消、强制终止、状态诊断等类型。
[0080] version字段为字符串类型,描述了该命令的解析方式,version的不同,该json结构具有不同的数据结构。
[0081] type字段为枚举值,包括请求、应答等值,反应任务中心期望该消息是否被应答。
[0082] message_id字段为任务中心颁发的唯一标识,针对相同的消息,重复发送时,使用该字段保证唯一,解决网络异常,消息重发的容错问题。
[0083] parameters字段为建模管理装置主要要解析的字段,内部包含了,建模方法,客户端录入的参数,开发包的获取方式,以及任务中心对结果的要求等。
[0084] 109、建模中心内的建模引擎解析建模任务,并获取建模参数。
[0085] 客户端选择建模方法以后,自动生成了建模表单,用户填写了建模表单后,便将参数提交到了任务中心,因此在任务中心,每个任务都附带了用户录入的建模参数,将这个参数Json化后放入了clientParams字段中,该数据结构在建模引擎中可以直接被调用使用。
[0086] 110、建模中心根据建模参数,从插件中心下载建模开发包。
[0087] 建模中心获取的Json建模任务信息中, plugin字段描述了建模开发包的相关信息,可以得到,开发包的下载地址、开发包与建模引擎的匹配关系、开发包的版本信息等。
[0088] 110、建模引擎根据建模参数和建模开发包进行建模。
[0089] 建模中心将建模信息转化为瓦片化数据并进行归档。
[0090] 建模中心将开发包、资源、参数等注入到建模引擎中,然后启动建模引擎进行建模,建模引擎即可按照开发包的逻辑完成建模任务。开发包一般要包括两部分内容,一部分为依赖建模引擎开发的建模逻辑,生成建模引擎自身的建模结果。另一部分为将建模结果进行数据格式转换,转换为可供前端调用的瓦片化数据。
[0091] 111、建模中心将建模结果发送至任务中心。
[0092] 将转化后的瓦片化数据传输至任务中心进行保存。
[0093] 112、客户端向任务中心发出调用信息。
[0094] 113、客户端接收任务中心发送的第二信息,并呈现建模结果,第二信息用于供客户端呈现建模结果。
[0095] 建模完成后,客户端可以将建模结果以及其它路线、地形、影像信息同时融合在一个3D场景中进行查看,方便核查建模错误。
[0096] 实施例二本发明还包括了另一实施例提供的一种云建模方法,用于客户端中,其方法包括:
201、接收第一信息,第一信息用于触发任务需求。
[0097] 第一信息为用户根据任务需求选取插件中心的建模开发包的信息。本发明中针对版本号配置了相应的描述信息,用户可以按照开发包名称、开发包版本、描述自定义选择开发包。
[0098] 也可以根据任务需求对开发包进行筛选。
[0099] 客户端指的是用户按照建模需求采集建模参数并呈现建模结果的端,主要功能包括确定建模类型,选择建模方法,输入建模参数,提交建模参数,展示建模结果等功能。
[0100] 从形式上来说既可以是windows桌面程序又可以是web程序也可以是其它移动端程序。客户端的设计主要考虑从轻出发,保证用户使用的轻量化,业务功能的简单性,解决依赖复杂的建模软件问题。
[0101] 202、将第一信息发送至插件中心,插件中心用于存储建模开发包,建模开发包用于确定建模方法和所需的建模参数。
[0102] 插件中心中若存在满足任务需求的建模方法,则调用建模方法对应的建模开发包,并将建模开发包发送至客户端。
[0103] 当用户选择了确定的建模方法以后,也就意味着客户端知道了所需要的建模开发包,则证明插件中心中有相关的建模开发包。
[0104] 203、接收插件中心的建模开发包。
[0105] 建模开发包当中包含了抽象参数,客户端拉取抽象参数,并自动生成参数录入表单,供用户在客户端录入建模参数。
[0106] 204、根据建模开发包获取建模参数。
[0107] 该录入方式可以为在客户端通过可交互界面(显示屏幕等)进行直接手动输入,也可以为采集式(即直接从客户端的数据库中进行调用)。
[0108] 205、将建模参数发送至任务中心,任务中心用于生成建模任务,并将其发送至建模中心,建模中心用于接收任务中心的建模任务并完成建模。
[0109] 当参数录入完成后,首先需要用户在本地客户端对数据做简单的校验和确认,程序在提交参数前也要根据数据约束条件进行检查。一切准备就绪后,将建模参数以及依赖的建模开发包信息统一提交到任务中心。
[0110] 并且,最好保持客户端和任务中心通讯,实时确定任务状态,并且在客户端呈现给用户,直到建模完成。
[0111] 206、接收任务中心发送的第二信息,第二信息用于呈现建模结果。
[0112] 建模完成后,客户端可以将建模结果以及其它路线、地形、影像信息同时融合在一个3D场景中进行查看,方便核查建模错误。
[0113] 实施例三本发明还包括了另一实施例提供的一种云建模方法,用于任务中心中,其方法包括:
301、接收客户端发送的建模参数,建模参数用于确定建模方法。
[0114] 当建模参数录入完成后,首先需要用户在本地客户端对数据做简单的校验和确认,程序在提交参数前也要根据数据约束条件进行检查。一切准备就绪后,将建模参数以及依赖的建模开发包信息统一提交到任务中心。
[0115] 302、生成建模任务。
[0116] 任务中心根据建模参数生成建模任务,并将生成的建模任务入任务池。
[0117] 303、接收第三信息,第三信息用于显示建模中心的工作状态。
[0118] 任务中心支持多个建模引擎的管理,当任务忙碌时,任务中心需要第一时间获取空闲的、符合条件的建模引擎,将建模任务分发出去。在这种要求下,任务中心和建模引擎之间必然要存在一定的通信才能解决,即建模中心需要向任务中心发送第三信息,且第三信息需要包括以下功能:建模中心第一次启动时要向任务中心进行注册,注册内容包括建模引擎类型、空闲状态。
[0119] 定时向任务中心发送心跳信息,保证建模中心和任务中心保持通信畅通。
[0120] 时刻监听建模中心的建模任务,以对建模中心做出正确的响应。
[0121] 时刻监控建模中心的空闲状态,并将状态汇报给任务中心。
[0122] 304、进行任务管理,按照权重进行分类并排序。
[0123] 对任务池内的建模任务按照权重进行分类,依据任务紧急度、任务复杂度、建模引擎空闲数量等进行权重分析并排序,多次任务失败的任务进行移除。
[0124] 305、将建模任务发送至建模中心,建模中心用于根据建模任务启用建模引擎进行建模。
[0125] 306、接收建模中心生成的建模结果。
[0126] 307、向客户端发送第二信息,第二信息用于呈现建模结果。
[0127] 实施例四本发明还包括了另一实施例提供的一种云建模方法,用于建模中心中,其方法包括:
401、接收任务中心发送的建模任务,任务中心用于接收客户端发送的建模参数和建模开发包并生成建模任务。
[0128] 如果建模引擎处于空闲状态,任务中心就会向建模中心分发建模任务。
[0129] 针对任务池内的建模任务进行任务分发,分发原则为队列顺序,根据建模引擎任务情况进行相应的负载均衡措施,保障所有的任务都能有序执行。
[0130] 根据心跳机制管理建模引擎的状态,在任务分发时根据引擎状态和类型进行相应的任务分发。
[0131] 402、解析建模任务,获取建模参数。
[0132] 客户端选择建模方法以后,自动生成了建模表单,用户填写了建模表单后,便将参数提交到了任务中心,因此在任务中心,每个任务都附带了用户录入的建模参数,将这个参数Json化后放入了clientParams字段中,该数据结构在建模引擎中可以直接被调用使用。
[0133] 403、根据建模参数,从插件中心下载建模开发包,建模开发包用于确定建模方法。
[0134] 建模中心获取的Json建模任务信息中, plugin字段描述了建模开发包的相关信息,可以得到,开发包的下载地址、开发包与建模引擎的匹配关系、开发包的版本信息等。
[0135] 404、选择处于空闲状态的建模引擎,并根据建模任务和建模开发包进行建模。
[0136] 将建模信息转换为瓦片化数据进行归档。
[0137] 建模中心将开发包、资源、参数等注入到建模引擎中,然后启动建模引擎进行建模,建模引擎即可按照开发包的逻辑完成建模任务。开发包一般要包括两部分内容,一部分为依赖建模引擎开发的建模逻辑,生成建模引擎自身的建模结果。另一部分为将建模结果进行数据格式转换,转换为可供前端调用的瓦片化数据。
[0138] 405、发送建模结果至任务中心,任务中心用于存储建模结果,并根据客户端的调用向客户端发送建模结果,客户端用于呈现建模结果。
[0139] 实施例五本发明还包括了另一实施例提供的一种云建模方法,用于插件中心中,其方法包括:
501、接收客户端发送的第一信息,第一信息用于触发任务需求。
[0140] 第一信息为用户根据任务需求选取插件中心的建模开发包的信息。本发明中针对版本号配置了相应的描述信息,用户可以按照开发包名称、开发包版本、描述自定义选择开发包。
[0141] 也可以根据任务需求对开发包进行筛选。
[0142] 502、根据第一信息判断是否存在满足任务需求的建模方法。
[0143] 若存在满足任务需求的建模方法,则调用建模方法对应的建模开发包。
[0144] 插件中心中若存在满足任务需求的建模方法,则调用建模方法对应的建模开发包,并将建模开发包发送至客户端。
[0145] 当用户选择了确定的建模方法以后,也就意味着客户端知道了所需要的建模开发包,则证明插件中心中有相关的建模开发包。
[0146] 503、将建模开发包发送至客户端,客户端用于根据建模开发包获取建模参数,并将建模参数发送至任务中心,任务中心用于生成建模任务,并将其发送至建模中心,建模中心用于接收任务中心的建模任务并完成建模504、接收建模中心发送的调用信息,调用信息用于建模中心根据建模参数调用对应的建模开发包。
[0147] 将对应的建模开发包发送至建模中心。
[0148] 建模中心获取的Json建模任务信息中, plugin字段描述了建模开发包的相关信息,可以得到,开发包的下载地址、开发包与建模引擎的匹配关系、开发包的版本信息等。
[0149] 建模中心从插件中心下载对应的建模开发包。
[0150] 若不存在满足任务需求的建模方法,则需要开发对应的建模方法,开发对应的建模方法包括:根据三维模型特点,确定建模所需要的建模引擎。
[0151] 根据确定的建模引擎,创建建模方法和建模参数。
[0152] 提取建模所需的参数,并将其形成表单模板。
[0153] 建模插件是三维模型创建过程的主要逻辑部分,本发明中建模插件的开发输入参数为结构化的建模参数,以及确定的建模引擎。建模插件的主要功能是接收建模参数,并且实现解析,通过自定义的建模逻辑,在指定建模引擎中被调用执行,生成建模结果。建模插件的主要影响因素为两个①建模引擎的不同②建模参数的不同,一般根据建模引擎的不同,确定逻辑编写的技术路线,在根据建模参数的不同,编写具体的建模方式。
[0154] 当建模装置为Revit时,因为Revit支持.NET二次开发,因此建模插件主要使用C#语言进行编写,本发明中通过C#语言对输入的Json结构化数据进行反序列化,可以得到建模所需要的必要参数,并根据指定三维模型特点,创建族库,编写创建逻辑,实现三维模型的创建。当需要建立的模型为桥和隧道时,一般抽象的建模参数不同,建模参数的不同将导致编写的逻辑不同。而当建模装置为CATIA时,因为CATIA主要是支持基于CAA的二次开发,因此建模插件主要C++语言进行编写,通过对输入的Json结构化参数进行反序列化,得到必须的建模参数,并创建模板,编写创建逻辑,实现三维模型的创建。
[0155] 由于建模逻辑的编写和建模参数的抽象过程一般是程序员负责的,因此当程序员将程序开发完成后需要将建模逻辑和抽象化的建模参数进行打包提交,提交的开发包自然需要增、删、改等功能,才能实现开发包较好的管理。本发明中针对开发包,要研发对应的增、删、改等功能的软件,辅助实现开发包的管理工作。
[0156] 实施例六如图2所示,本实施例与实施例一的区别在于,本实施例中删除了插件中心,即可以直接通过建模中心实时的进行建模,不通过调用建模开发包来实现,其方法如下:
601、客户端接收第一信息,第一信息用于触发任务需求。
[0157] 客户端指的是用户按照建模需求采集建模参数并呈现建模结果的端,主要功能包括确定建模类型,选择建模方法,输入建模参数,提交建模参数,展示建模结果等功能。
[0158] 从形式上来说既可以是windows桌面程序又可以是web程序也可以是其它移动端程序。客户端的设计主要考虑从轻出发,保证用户使用的轻量化,业务功能的简单性,解决依赖复杂的建模软件问题。
[0159] 602、获得建模所需的建模参数。
[0160] 建模开发包当中包含了抽象参数,客户端拉取抽象参数,并自动生成参数录入表单,供用户在客户端录入建模参数。
[0161] 该录入方式可以为在客户端通过可交互界面(显示屏幕等)进行直接手动输入,也可以为采集式(即直接从客户端的数据库中进行调用)。
[0162] 603、客户端将建模参数发送至任务中心。
[0163] 当参数录入完成后,首先需要用户在本地客户端对数据做简单的校验和确认,程序在提交参数前也要根据数据约束条件进行检查。一切准备就绪后,将建模参数以及依赖的建模开发包信息统一提交到任务中心。
[0164] 并且,最好保持客户端和任务中心通讯,实时确定任务状态,并且在客户端呈现给用户,直到建模完成。
[0165] 604、任务中心根据建模参数生成建模任务,并将生成的建模任务入任务池。
[0166] 605、任务中心接收建模中心发送的第三信息,并根据第三信息确定建模中心的工作状态。
[0167] 任务中心支持多个建模引擎的管理,当任务忙碌时,任务中心需要第一时间获取空闲的、符合条件的建模引擎,将建模任务分发出去。在这种要求下,任务中心和建模引擎之间必然要存在一定的通信才能解决,即建模中心需要向任务中心发送第三信息,且第三信息需要包括以下功能:建模中心第一次启动时要向任务中心进行注册,注册内容包括建模引擎类型、空闲状态。
[0168] 定时向任务中心发送心跳信息,保证建模中心和任务中心保持通信畅通。
[0169] 时刻监听建模中心的建模任务,以对建模中心做出正确的响应。
[0170] 时刻监控建模中心的空闲状态,并将状态汇报给任务中心。
[0171] 606、任务中心进行任务管理,并根据权重进行分类并排序。
[0172] 对任务池内的建模任务按照权重进行分类,依据任务紧急度、任务复杂度、建模引擎空闲数量等进行权重分析并排序,多次任务失败的任务进行移除。
[0173] 607、任务中心按照顺序将建模任务分发至处于空闲状态的建模引擎。
[0174] 如果建模引擎处于空闲状态,任务中心就会向建模中心分发建模任务。
[0175] 针对任务池内的建模任务进行任务分发,分发原则为队列顺序,根据建模引擎任务情况进行相应的负载均衡措施,保障所有的任务都能有序执行。
[0176] 根据心跳机制管理建模引擎的状态,在任务分发时根据引擎状态和类型进行相应的任务分发。
[0177] 任务中心就会向建模中心分发建模任务。建模任务的描述形式使用结构化Json数据,cmd字段为枚举值,主要用于描述该命令的类型。包括,创建、取消、强制终止、状态诊断等类型。
[0178] version字段为字符串类型,描述了该命令的解析方式,version的不同,该json结构具有不同的数据结构。
[0179] type字段为枚举值,包括请求、应答等值,反应任务中心期望该消息是否被应答。
[0180] message_id字段为任务中心颁发的唯一标识,针对相同的消息,重复发送时,使用该字段保证唯一,解决网络异常,消息重发的容错问题。
[0181] parameters字段为建模管理装置主要要解析的字段,内部包含了,建模方法,客户端录入的参数,开发包的获取方式,以及任务中心对结果的要求等。
[0182] 608、建模中心内的建模引擎解析建模任务,并获取建模参数。
[0183] 客户端选择建模方法以后,自动生成了建模表单,用户填写了建模表单后,便将参数提交到了任务中心,因此在任务中心,每个任务都附带了用户录入的建模参数,将这个参数Json化后放入了clientParams字段中,该数据结构在建模引擎中可以直接被调用使用。
[0184] 609、建模引擎根据建模参数进行建模。
[0185] 建模中心将建模信息转化为瓦片化数据并进行归档。
[0186] 建模中心将开发包、资源、参数等注入到建模引擎中,然后启动建模引擎进行建模,建模引擎即可按照开发包的逻辑完成建模任务。开发包一般要包括两部分内容,一部分为依赖建模引擎开发的建模逻辑,生成建模引擎自身的建模结果。另一部分为将建模结果进行数据格式转换,转换为可供前端调用的瓦片化数据。
[0187] 610、建模中心将建模结果发送至任务中心。
[0188] 将转化后的瓦片化数据传输至任务中心进行保存。
[0189] 611、客户端向任务中心发出调用信息。
[0190] 客户端接收任务中心发送的第二信息,并呈现建模结果,第二信息用于供客户端呈现建模结果。
[0191] 建模完成后,客户端可以将建模结果以及其它路线、地形、影像信息同时融合在一个3D场景中进行查看,方便核查建模错误。
[0192] 实施例七如图3所示,本实施例与实施例一的区别在于,本实施例中删除了任务中心,即通过客户端直接与建模中心通信,来实现建模操作。
[0193] 701、客户端接收第一信息,第一信息用于触发任务需求。
[0194] 第一信息为用户根据任务需求选取插件中心的建模开发包的信息。本发明中针对版本号配置了相应的描述信息,用户可以按照开发包名称、开发包版本、描述自定义选择开发包。
[0195] 也可以根据任务需求对开发包进行筛选。
[0196] 客户端指的是用户按照建模需求采集建模参数并呈现建模结果的端,主要功能包括确定建模类型,选择建模方法,输入建模参数,提交建模参数,展示建模结果等功能。
[0197] 从形式上来说既可以是windows桌面程序又可以是web程序也可以是其它移动端程序。客户端的设计主要考虑从轻出发,保证用户使用的轻量化,业务功能的简单性,解决依赖复杂的建模软件问题。
[0198] 702、客户端将第一信息发送至插件中心,插件中心接收第一信息后判断是否存在满足任务需求的建模方法。
[0199] 插件中心中若存在满足任务需求的建模方法,则调用建模方法对应的建模开发包,并将建模开发包发送至客户端。
[0200] 当用户选择了确定的建模方法以后,也就意味着客户端知道了所需要的建模开发包,则证明插件中心中有相关的建模开发包。
[0201] 703、客户端接收到建模开发包后,根据建模开发包获得建模所需的建模参数。
[0202] 建模开发包当中包含了抽象参数,客户端拉取抽象参数,并自动生成参数录入表单,供用户在客户端录入建模参数。
[0203] 该录入方式可以为在客户端通过可交互界面(显示屏幕等)进行直接手动输入,也可以为采集式(即直接从客户端的数据库中进行调用)。
[0204] 插件中心针对建模参数抽象化,每个建模开发包都包含了批量的建模参数,每个参数明确描述了数据名称、数据类型、默认值、可选值、数据约束等信息,UI根据不同的数据类型展示不同的录入方式,用户录入最终的建模参数,完成参数录入工作。
[0205] 704、客户端将建模参数发送至建模中心。
[0206] 当参数录入完成后,首先需要用户在本地客户端对数据做简单的校验和确认,程序在提交参数前也要根据数据约束条件进行检查。一切准备就绪后,将建模参数以及依赖的建模开发包信息统一提交到建模中心。
[0207] 并且,最好保持客户端和建模中心通讯,实时确定任务状态,并且在客户端呈现给用户,直到建模完成。
[0208] 705、建模中心将建模任务分发至处于空闲状态的建模引擎。
[0209] 如果建模引擎处于空闲状态,任务中心就会向建模中心分发建模任务。
[0210] 706、建模中心内的建模引擎获取建模参数。
[0211] 客户端选择建模方法以后,自动生成了建模表单,用户填写了建模表单后,便将参数提交到了建模中心,每个任务都附带了用户录入的建模参数,将这个参数Json化后放入了clientParams字段中。
[0212] 该数据结构在建模引擎中可以直接被调用使用。
[0213] 707、建模中心根据建模参数,从插件中心下载建模开发包。
[0214] 建模中心获取的Json建模任务信息中, plugin字段描述了建模开发包的相关信息。
[0215] 从以上结构中可以得到,开发包的下载地址、开发包与建模引擎的匹配关系、开发包的版本信息等。
[0216] 110、建模引擎根据建模参数和建模开发包进行建模。
[0217] 建模中心将建模信息转化为瓦片化数据并进行归档。
[0218] 建模中心将开发包、资源、参数等注入到建模引擎中,然后启动建模引擎进行建模,建模引擎即可按照开发包的逻辑完成建模任务。开发包一般要包括两部分内容,一部分为依赖建模引擎开发的建模逻辑,生成建模引擎自身的建模结果。另一部分为将建模结果进行数据格式转换,转换为可供前端调用的瓦片化数据。
[0219] 111、建模中心将建模结果发送至客户端,并呈现建模结果。
[0220] 建模完成后,客户端可以将建模结果以及其它路线、地形、影像信息同时融合在一个3D场景中进行查看,方便核查建模错误。
[0221] 实施例八根据上述实施例的方法,提供针对于客户端、任务中心、建模中心和插件中心的结构的实施例。
[0222] 第一方面,一种云建模装置,用于客户端中,装置包括:第一接收模块,用于接收触发任务需求的第一信息。
[0223] 第一发送模块,用于将第一信息发送至插件中心,插件中心用于存储建模开发包,建模开发包用于确定建模方法和所需的建模参数。
[0224] 第二接收模块,用于接收插件中心的建模开发包。
[0225] 第一获取模块,用于根据建模开发包获取建模参数。
[0226] 第二发送模块,用于将建模参数发送至任务中心,任务中心用于生成建模任务,并将其发送至建模中心,建模中心用于接收任务中心的建模任务并完成建模。
[0227] 第三接收模块,用于接收任务中心发送的第二信息,第二信息用于呈现建模结果。
[0228] 第二方面,一种云建模装置,用于任务中心中,装置包括:第四接收模块,用于接收客户端发送的建模参数,建模参数用于确定建模方法。
[0229] 第一生成模块,用于生成建模任务。
[0230] 第五接收模块,用于接收第三信息,第三信息用于显示建模中心的工作状态。
[0231] 第三发送模块,用于将建模任务发送至建模中心,建模中心用于根据建模任务启用建模引擎进行建模。
[0232] 第六接收模块,用于接收建模中心生成的建模结果。
[0233] 第四发送模块,用于向客户端发送第二信息,第二信息用于呈现建模结果。
[0234] 进一步地,任务中心还包括:第一确认模块,用于根据第三信息确认建模中心的工作状态。
[0235] 任务管理模块,用于进行任务管理,按照权重进行分类并排序。
[0236] 任务发送模块,用于按照顺序将建模任务分发至建模中心。
[0237] 第三方面,一种云建模装置,用于建模中心中,装置包括:第七接收模块,用于接收任务中心发送的建模任务,任务中心用于接收客户发送的建模参数和建模开发包并生成建模任务。
[0238] 解析模块,用于解析建模任务,获取建模参数。
[0239] 下载模块,用于根据建模参数,从插件中心下载建模开发包,建模开发包用于确定建模方法。
[0240] 选择模块,用于选择处于空闲状态的建模引擎,并根据建模任务和建模开发包进行建模。
[0241] 转换模块,用于将建模信息转换为瓦片化数据进行归档。
[0242] 第五发送模块,用于发送建模结果至任务中心,任务中心用于存储建模结果,并根据客户端的调用向客户端发送建模结果,客户端用于呈现建模结果。
[0243] 优选地,建模中心还包括:启动注册模块,用于启动建模中心,并向任务中心进行注册,注册内容包括建模引擎类型和空闲状态。
[0244] 第四方面,一种云建模装置,用于插件中心中,装置包括:第八接收模块,用于接收客户端发送的第一信息,第一信息用于触发任务需求。
[0245] 判断模块,用于根据第一信息判断是否存在满足任务需求的建模方法。
[0246] 第一调用模块,若存在满足任务需求的建模方法,则调用建模方法对应的建模开发包。
[0247] 第六发送模块,用于将建模开发包发送至客户端,客户端用于根据建模开发包获取建模参数,并将建模参数发送至任务中心,任务中心用于生成建模任务,并将其发送至建模中心,建模中心用于接收任务中心的建模任务并完成建模第九接收模块,用于接收建模中心发送的调用信息,调用信息用于建模中心根据建模参数调用对应的建模开发包。
[0248] 第六发送模块将对应的建模开发包发送至建模中心。
[0249] 建模模块,用于在不存在满足任务需求的建模方法,开发对应的建模方法。
[0250] 实施例九一种云建模系统,包括客户端、任务中心、插件中心和建模中心,客户端与任务中心和插件中心相连,任务中心与客户端和建模中心相连,建模中心与插件中心和任务中心相连。
[0251] 客户端包括如第一方面的一种云建模装置,任务中心包括如第二方面的一种云建模装置,建模中心包括如第三方面的一种云建模装置,插件中心包括如第四方面的一种云建模装置。
[0252] 一种云建模系统,包括存储器、处理器以及存储存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法的步骤。
[0253] 存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区﹐其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0254] 一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
[0255] 不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令﹑数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD‑ROM、DVD或其他光学存储、磁带盒﹑磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。
[0256] 在本说明书的描述中,参考术语“一个实施例/方式”、“一些实施例/方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例/方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例/方式或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例/方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例/方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例/方式或示例以及不同实施例/方式或示例的特征进行结合和组合。
[0257] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0258] 本领域的技术人员应当理解,上述实施方式仅仅是为了清楚地说明本发明,而并非是对本发明的范围进行限定。对于所属领域的技术人员而言,在上述发明的基础上还可以做出其它变化或变型,并且这些变化或变型仍处于本发明的范围内。