精华内容
下载资源
问答
  • 自动化建模
    2021-05-16 21:22:03

    继上篇介绍完CGA建模规则及纹理贴图设计、使用,本篇主要介绍CityEngine+Python自动化建模,自动化建模有以下几个优势:

    (1)渐少人手工操作的工作量;

    (2)针对大场景,可以设置成分区域建模。

    如果你喜欢本篇文章,欢迎收藏、分享和转载,转载请注明出处:https://blog.csdn.net/shaxiaozilove/article/details/116903365

    如果你有任何问题,欢迎与我联系和沟通,谢谢。

    1、自动化建模步骤

    • 创建场景(同时设置坐标系)

    • 导入数据

    • 设置规则文件及开始规则

    • 设置对象名称(根据属性分类/分批次建模的需要)

    • 生成模型

    • 导出模型(包括导出设置)

    2、自动化建模脚本

    自动化建模脚本auto_cga.py位于scripts目录下, 对于上述建模步骤有如下实现:

    • 从GDB中导入数据(还可以导入ShapeFile等其他格式),且导入指定的数据集

    • 建模关键在于CGA规则文件,脚本中使用wuhan_blank.cga,具体根据需要设置

    • 分区域(按照行政区划代码分区)对建筑物进行批量自动化建模,前提是重置对象名称(ce.setName),也可以直接利用现有名称(Shape 序号格式)每次对一定数量建筑物进行建模

    • 导出模型,目前支持GDB和GLTF/GLB两种格式,可根据需要进行扩展

    3、 运行及测试数据

    • 安装CityEngine(比如2019.0版本)

    • 导入项目wuhan后,打开auto_cga.py,菜单栏中出现Python,选择Run Script(F9)即可运行脚本

    • 脚本中测试数据wuhan_for_local_test是武汉市13个行政区的部分数据,可自行替换

    4、可优化内容

    • 新建场景文件是否存在的判断及处理

    • 重置对象名称使用多进程进行处理(jython没有多进程)

    • 分批次建模、导出模型后的数据处理(如合并数据集等,需在ArcGIS Pro中进行)

    5、自动化建模脚本

    自动化建模实现脚本,请参考CityEngine+Python自动化建模实现【系列文章之四】

     

     

    更多相关内容
  • 为了提高带式输送机的三维建模效率,以广泛使用的DT(II)型带式输送机为例,利用Solidworks三维设计软件以及Solidworks API,开发实现了一个带式输送机的快速参数化建模系统,实践发现建模效率提升了4倍左右。
  • 提出了一种基于自然语言理解及XML的线性规划问题自动化建模方法,并给出实例。实践证明,该方法具有灵活性、通用性及可行性。
  • 铣刀设计过程的自动化建模.pdf
  • 履带车辆混合驱动系统自动化建模.pdf
  • 基于Dynamo的点云BIM自动化建模.pdf
  • 基于EDA工具的自动化建模平台建设.pdf
  • 基于AltaRica的故障自动化建模和分析.pdf
  • 城市地下管线三维自动化建模技术研究.pdf
  • 隧道异形初期支护结构自动化建模及安全评价.pdf
  • 基于LiDAR和倾斜摄影测量技术的实景三维自动化建模方法.pdf
  • 基于BIM技术的既有地下管线三维自动化建模的研究.pdf
  • 三维自动化建模技术在宁波市综合管线信息系统中的应用.pdf
  • 看我如何用Dataphin实现自动化建模

    千次阅读 2020-06-17 19:59:46
    前言:更多关于数智转型、数据中台内容可扫码加群一起探讨 阿里云数据中台官网https://dp.alibaba.com/index 作者:数据小海豚 随着大数据趋势的迅速增长,数据的重要性与日俱增,企业内看数据、用数据的诉求...

    前言:更多关于数智化转型、数据中台内容可扫码加群一起探讨
    668d7f5941782665ed1f41529db3eb677f4b9379.png
    阿里云数据中台官网 https://dp.alibaba.com/index


    作者:数据小海豚
     

    随着大数据趋势的迅速增长,数据的重要性与日俱增,企业内看数据、用数据的诉求越来越强烈,其中最常见的就是各种经营报表数据:

    老板早晨9点准时需要看到企业核心的经营数据,以便进行企业战略及方向决策
    业务负责人不定期进行个性化的项目筹划,需要多维、及时效果数据以优化项目安排
    运营需要和高层一致但粒度不同的经营分析数据,并进行活动策略调整
    ……

    举个经营报表的例子:
    image.png

    这个例子并不复杂,但是对于分析师或者业务开发者,实际执行的复杂度和工作量并不小,而且类似的工作每日都在重复……业务发展越快,带来的问题就越来越多:

      加工时间长、人工成本高,招再多的分析师也难以满足需求
      代码可读性差,数据可维护性差,类似需求需要反复、重复开发
      代码开发不规范,加工过程中难以避免的计算存储浪费
      得到的数据指标,复用性差导致重复建设,数据越来越不标准规范

    这种情况下,对业务的直接影响就是:决策周期长(数据需求满足慢),决策易出错(数据指标口径不一致)。

    既要保证数据生产时效性——及时产出数据并满足需求,又要支持数据多样性——企业自下而上不同业务分析场景,最后还要保证数据准确性——任何时间、不同岗位的人都能用同样的数据解读经营情况,怎么才能做到呢?

    企业的发展加速,离不开20世纪的文档管理转到21世纪的信息管理。同样的,如果繁复的指标代码编写工作,也可以如计算器一般,界面可视化点选,复杂的代码研发过程由计算器自行处理完成就好了。

    Dataphin的自动化建模功能,就可以很好实现这个能力。

    1、选择组合条件

    如下图,确定需要统计计算的值,Dataphin里称为“原子指标”——最小的数据值统计单元,比如用户数这样的统计值等,然后组合如下内容:

    • A. 统计计算值需要应用的分析对象,Dataphin里称为“统计粒度”——维度或维度的组合,比如用户星级、用户状态等
    • B. 数据统计计算的时间周期,Dataphin里称为“统计周期”——统计数据需要跨越的时间长度,比如最近1天、最近30天、自然周、自然月的等
    • C. 数据统计的其他个性化限定条件,Dataphin里称为“业务限定”——数据记录的筛选过滤条件,比如生鲜业务类型、PC端、女性等
      image.png

    2 预览指标

    选择完毕组合条件后,可以预览组合出来的派生指标:
    1)组合的指标,默认名取“原子指标+时间周期+业务限定”组合名,保证命名标准规范。
    2)历史已生成的组合,不再生成,保证指标建设统一,无重复
    image.png

    3 一键自动化生成

    确认需要提交的指标后,一键【提交】,分钟级指标生成:
    1)自动汇聚至以“统计粒度为主题”的汇总逻辑表表下,保证管理标准规范;
    2)代码和调度依赖关系,系统自动生成;
    3)派生指标基于汇总逻辑表,可快速雪花模型查询使用指标、分析对象的属性信息。

    image.png

    ①派生指标自动汇聚至汇总逻辑表
    ②派生指标所在汇总表节点,代码及调度关系自动生成
    image.png

    ③汇总表及派生指标可查询消费
    image.png

    4 复杂需求实现

    上面主要是基于简单统计指标实现,实际上,报表需求还有类似 比率型、乘积型等复合统计方式,比如“客单价=销售额/客户数”,这类也可以通过Dataphin的衍生原子指标实现:

    1)衍生原子指标是基于原子指标的再组合;
    image.png

    2)基于衍生原子指标新建派生指标时,需要保证拆解到最细粒度的原子指标,有相同的分析维度、时间周期,允许维度的计算路径不同、设置的业务限定不同。

    ①新建衍生原子指标
    ②基于衍生原子指标新建派生指标
    image.png

    总结

    上面步骤可以看到,派生指标的计算生成,离不开原子指标、业务限定、统计粒度的协助,这其中有什么奥秘呢?

    其实很简单,用Dataphin高效创建派生指标,掌握这1张图就够了:

    1)原子指标为核心,原子指标的来源表为中心
    2)统计粒度取自来源表的关联维度,以及关联维度上的关联维度
    3)业务限定基于来源表为中心的雪花模型做定义
    4)统计周期可任意搭配使用
    image.png

     

    数据中台是企业数智化的新基建,阿里巴巴认为数据中台是集方法论、工具、组织于一体的,“快”、“准”、“全”、“统”、“通”的智能大数据体系。目前正通过阿里云数据中台解决方案对外输出,包括零售金融互联网政务等领域,其中核心产品有:

    官方站点:
    数据中台官网 https://dp.alibaba.com
    数据中台钉钉群二维码2.jpg

    原文链接
    本文为云栖社区原创内容,未经允许不得转载。

    展开全文
  • 敏捷自动化建模——一种用于城市规划自动设计和生成的新型地理计算方法.pdf
  • 基于粒子群理论的鱼群聚集模型——实现鱼群聚集全过程的自动化建模.pdf
  • 基于Dynamo的点云BIM自动化建模.rar
  • 基于BIM的三维地质自动化建模方法.pdf
  • 基于AltaRica的故障自动化建模和分析.rar
  • 基于EDA工具的自动化建模平台建设.rar
  • 电信设备-一种岩层移动数值模拟自动化建模方法.zip
  • 基于BIM技术的既有地下管线三维自动化建模的研究.rar
  • 为解决传统工作流建模方式主观性强、效率低以及成本高等问题,出现一种从工作流日志中自动化推导工作流模型的建模方法,又称工作流挖掘。这种新方法在国际上还处于研究初级阶段,但已引起广泛关注。该文对当前主要...
  • 基于并行计算和插值方法的微波设备基于神经的自动化建模
  • 敏捷自动化建模——一种用于城市规划自动设计和生成的新型地理计算方法.rar
  • 基于粒子群理论的鱼群聚集模型——实现鱼群聚集全过程的自动化建模.rar
  • 非线性回归的自动化建模过程
  • 基于CityEngine的建筑物自动化建模

    千次阅读 2020-12-10 14:34:47
    近年来, 全国很多城市都在进行数字城市...城市三维描述的核心是构建建筑物三维模型,数字城市建设对城市建筑物三维建模有两方面的要求:一是模型的精细,构建的三维建筑物模型越精细,效果越逼真; 二是建模过程的自...

    近年来, 全国很多城市都在进行数字城市建设, 推进城市信息化进程[。数字城市是运用3S、遥测、仿真-虚拟等技术,以计算机技术、多媒体技术和大规模存储技术为基础,以宽带网络为纽带,实现对城市多尺度、多时空、多分辨率以及多种类的三维描述[。城市三维描述的核心是构建建筑物三维模型,数字城市建设对城市建筑物三维建模有两方面的要求:一是模型的精细化,构建的三维建筑物模型越精细,效果越逼真; 二是建模过程的自动化,自动化程度越高,操作越简单,效率越高。

    在建筑物三维建模方面,娄启业等研究了基于AutoCAD和3DS Max进行建筑物三维建模的方法[; 张习科等利用Skyline和3DS Max构建湖南城市学院校园主要建筑物三维模型[; 吴森等基于Skyline生成地形模型,并构建了西南科技大学三维数字校园[; 王新志等研究了基于SketchUp的校园三维建模方法[; 万宝林将SketchUp和3DS Max分别与ArcGIS结合,研究了一体化建模流程,并进行了对比分析[; 朱安峰等基于CityEngine实现了河南大学三维数字校园系统[; 张晖等研究了基于CityEngine的室内三维建模的方法[。

    传统的三维建模软件(如3DS Max等)采用手工建模的方法,建模过程费时、费力[,且模型重用度低。作为新的三维建模软件,CityEngine支持基于CGA规则的建模方法,建模速度快,模型重用度高,既可以读取ArcGIS中的shapefile数据,也可以导出多种格式(包括ArcGIS支持的Multipatch格式)的三维模型。

    本文主要介绍在CityEngine中基于CGA规则的建筑物建模方法,并介绍基于Python脚本实现建筑物自动化建模的过程。

    1 创建CGA规则文件

    CGA规则文件一般存放在工程文件的rules文件夹下,创建CGA规则文件的方法是:右击CityEngine工作空间中的项目工程rules文件夹,通过菜单中new下的CGA Rule File菜单命令来创建。通过CityEngine提供的编辑窗口编辑CGA文件。CGA文件通常包含如下内容:① 建筑物的属性定义; ② 建筑物的图形操作; ③ 建筑物面的纹理贴图。

    1.1 建筑物的属性定义

    建筑物属性值的类型包括数值型和字符串型,通常数值型属性值表示建筑物的高度、宽度等,字符串型属性值代表贴图文件的路径及文件名,表示对贴图的引用。直接用属性值编写CGA规则时,如果属性值发生改变,在规则文件中修改属性值时会存在很大的不便,另外未经定义的属性值不能在Inspector窗口的属性面板中查看和编辑建筑物属性值。为方便起见,通常为建筑物的一些属性值进行“常量”的定义,如果属性值发生变化,只需在定义处进行修改。

    属性定义的格式为attr name=value,其中name表示对建筑物属性的命名,value表示属性值。如attr Height=20表示高度为20 m; attr WindowImage=“window/window.tif”表示建筑物窗户的贴图路径为window文件夹下的window.tif文件。

    1.2 建筑物的图形操作

    图形操作主要有extrude、comp、split、texture等命令,如

    表 1(Table 1)

    表 1 常用图形操作命令及其作用Table 1 Frequently-used Rules and Their Meanings

    表 1 常用图形操作命令及其作用Table 1 Frequently-used Rules and Their Meanings

    命令

    作用

    extrude

    对二维图形进行拉伸

    comp

    将拉伸后三维模型的各个面划分成不同部分,并定义各部分的名称

    split

    对图形进行横向或纵向切割

    texture

    贴图操作

    建筑物由二维到三维的拉伸过程由extrude命令完成,其格式为:extrude(Height),其中,Height为数值型,表示拉伸长度。拉伸后二维矢量图变成三维立体图。

    图 1(Figure 1)

    图 1 二维矢量图Figure 1 2D Vector Graph

    图 2(Figure 2)

    图 2 三维立体图Figure 2 3D Stereogram

    通常建筑物各个面的设计是不同的,所以在建模时需要将建筑物各个面划分出来,并对其命名,然后编写对应的规则。建筑物各个面的处理主要用comp命令,其格式为:comp(type) {id1:name1 | id2:name2...| id(n):name(n)},其中type表示划分类型,包括三种类型:f、e、v分别表示对面、边、点进行划分; id1, id2, …, id(n)表示划分对象的编号,name1, name2, …, name(n)表示对划分对象的命名。

    拉伸后,模型底面和顶面对应的id分别为0和1,侧面的id从2开始,与原矢量数据的节点编号有关,对于不规则图形的矢量数据,可以根据其节点编号确定多面体侧面的id。对于四边形,拉伸后成为六面体,其6个面可用前、后、左、右、上、下表示(对应的id可以是front、back、left、right、top、bottom,也可以是2、3、4、5、6、1、0)。id为“side”时,表示侧面划分后剩余的一个或多个侧面成为一个整体。

    图 3(Figure 3)

    图 3 三维建筑物面的划分Figure 3 Division of Horizontal of 3D Building

    建筑物一般有多个楼层,并且楼层有门、窗等部分,所以需要对建筑物的面进行切割,并对各切割部分进行贴图。面的切割过程主要用split命令。该命令格式为:split(axis){size1:name1|size2:name2|…|size(n):name(n)},其中axis为切割方向,其值为x、y或z,x为切割面第一条边对应的方向,y为在该面上x方向的正交方向,z为该切割面的法线方向; size1, size2, …, size(n)为切割长度,可以是相对长度(带前缀’)、绝对长度或浮动长度(带有前缀~); name1,name2,…,name(n)表示对切割出部分的命名。切割时,通常有循环过程,“*”表示重复执行,如split(y){3:floors}*表示以3 m为高度循环纵向切割。

    图 4(Figure 4)

    图 4 切割图Figure 4 Results of Splitting

    1.3 建筑物面的纹理贴图

    纹理是物体表面的沟纹,也包括光滑表面上的彩色图案。CityEngine中建筑物的纹理由纹理贴图完成。纹理贴图操作主要由setupProjection、texture、projectUV命令完成。setupProjection用于设置纹理图层、纹理投影面和纹理大小,其命令格式为:setupProjection (uvSet, axesSelector, texWidth, texHeight),其中uvSet为整数,取值范围为[0, 5],表示不同的贴图效果,0为颜色贴图,1为凹凸贴图,2为光影贴图,3为高光贴图,4为透明贴图,5为普通贴图; axesSelector为纹理投影面,取值为scope.xy、scope.xz、scope.yx、scope.yz、scope.zx、scope.zy和world.xy、world.xz、world.yx、world.yz、world.zx、world.zy,scope表示贴图面坐标系,world表示场景坐标系; texWidth和texHeight为纹理的宽度和长度,如果绝对的宽度和长度无法确定,可以用相对比例表示,前缀“ ' ”表示纹理与需要贴图部分的相对比例。texture用于定义贴图的路径及文件名,其格式为:texture (path),其中path为纹理贴图的路径及文件名,贴图可以是一般的图片或.obj文件格式。projectUV格式为:projectUV (uvSet),其中,uvSet与setupProjection命令的参数保持一致。

    图 5(Figure 5)

    图 5 建筑物门、窗及墙面贴图Figure 5 Texture Operation for Doors, Windows and Walls

    2 Python脚本实现建筑物自动化建模

    CityEngine内置了Python编程语言和Python脚本编辑器,并提供了一个针对CityEngine的Python模块——scripting模块,CE类是scripting模块中的一个类,它封装了读写和编辑CityEngine内部数据的API函数。CE类具有的主要属性和方法如

    表 2(Table 2)

    表 2 CE类的主要属性和方法Table 2 Main Attributes and Methods of CE Class

    表 2 CE类的主要属性和方法Table 2 Main Attributes and Methods of CE Class

    属性和方法

    含义

    ce.newFile(self, workspacePath, interactive)

    创建一个新场景,其中workspacePath是场景路径及名称,interactive是布尔型,默认值为False。

    setSceneCoordSystem (self, description)

    为场景定义坐标系统,其中description是投影坐标系统以proj4、WKT或CODE格式文件的内容。

    importFile (self, filesystemPath, importSettings, interactive)

    导入矢量数据,其中filesystemPath为矢量数据的路径及文件名,importSettings默认值为None,interactive是布尔型,默认值为False。

    ce.setStartRule (self, shapes, rule)

    设置起始规则

    ce.setRuleFile(self, shapes, workspacePath, hasToExist)

    为矢量数据(shapes)赋予CGA规则文件(rule),其中shapes为矢量数据,workspacePath默认值为None,hasToExist是布尔型,默认值为False。

    generateModels (self, shapes, synchronous, updateSeed)

    对shapes矢量数据生产三维模型,其中synchronous和updateSeed是布尔型,前者默认值为True,后者默认值为False。

    refreshWorkspace (self)

    刷新场景

    利用Python脚本实现建筑物自动化建模主要有以下6个过程:① 实例化CityEngine; ② 新建场景文件; ③ 定义坐标系统; ④ 导入二维矢量数据; ⑤ 生成CityEngine三维场景模型; ⑥ 导出三维模型。

    生成CityEngine三维场景模型的过程需要调用规则文件,通过规则文件生成相应的建筑物模型。对多个模型进行自动化建模时,可以在ArcGIS中为二维矢量数据的属性表增加一个字段,用于存放对应的规则文件名,Python脚本通过循环读取各数据的记录,根据对应的规则文件生成建筑物三维模型。

    3 应用实例

    以华东师范大学图书馆为应用实例,基于CityEngine创建三维模型。前期已有的数据包括:记录建筑物平面形状的shapefile数据、实地拍摄的建筑物外表照片等。通过测量得到建筑物高30 m,由照片获得建筑物各部分的相对比例。

    图书馆裙楼共5层,裙楼正面左侧为平面,中间为弧形面,右侧为平面,左侧为墙面,墙面上每层分布有横向和纵向排列的两排窗; 中间弧形面第一层以门为主,第二层及以上以窗户为主; 右侧平面左边为窗户,右边为墙面,墙面上有不规则分布的窗户和“图书馆”字体。在工程文件rules文件夹下新建CGA文件lib.cga,编写规则文件时,通过extrude将矢量图拉伸为三维模型,由comp命令对模型的面进行划分,并对各面进行切割操作和贴图操作。

    以右侧平面为例,介绍该面的切割和贴图过程。由该平面窗户的分布可以看出需要先进行横向切割,可以切割为窗户、墙面、窗户、墙面、带有窗户和字体的墙面等5部分,各自所占比例为0.25、0.2、0.05、0.1、0.4。即

    Facade-->split(x){′0.25:window_a|′0.2:wall|′0.05:window_b|′0.1:wall|′0.4:window_c}

    对于第一部分window_a,表示纵向按楼层高度切割,每层按窗户宽度横向切割,切割出窗户; 对于第二部分和第四部分的墙面,直接贴图; 对于第三部分window_b,表示纵向切割出墙面、窗户、墙面3部分,相对比例为1:12:1,并对窗户再进行纵向切割,切割出窗户; 对于第五部分,需要纵向切割出每一层。

    根据每一层的横向和纵向切割,切割出窗户和字体等部分,以带有“图”字和窗户的第五层为例。

    FifthFloor→split(x){′0.4:split(y){~1:wall|~1:part1|~1:wall}|′0.6:part2}

    part1→split(x){2:window_2}*

    part2→split(y){~1:wall|3:split(x){~1:wall|3:tu_tex|1:wall}|1:wall}

    其中,window_1、window_2、wall、tu_tex为窗户1、窗户2、墙面、“图”字的纹理贴图操作,以“图”字贴图为例:

    tu_tex→

    setupProjection(0, scope.xy, ′1, ′1)

    projectUV(0)

    texture(″assets/library/tu.tif″)

    裙楼CGA文件编写完成后,可以通过Python脚本实现自动化建模,脚本运行时,调用CGA规则文件,运行后可以得到CityEngine场景模型以及导出的三维模型。

    导出的MultiPatch格式三维模型加载到ArcScene中,同时加载矢量数据library.shp,加载后数据之间完全吻合,即导出的三维模型可以在ArcScene中与原矢量数据叠置。

    图 6(Figure 6)

    图 6 模型在ArcScene中显示图Figure 6 Model Display in ArcScene

    展开全文
  • Simulink是一个对动态系统(包括连续系统、离散系统和混合系统)进行建模、仿真和综合分析的集成软件包,是Matlab的重要组成部分。它可以看做是一个虚拟的实验室,里面有丰富的工具,你只要按照软件的操作要求去连接...
  • 为了实现配电线路的馈线自动化(FA)功能,将IEC61850建模思想引入馈线自动化系统中,建立关于智能分布式馈线自动化的终端设备信息模型;然后构建了基于GOOSE通信的信息交换模型,提出了将信息交换限制在相邻终端...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,311
精华内容 60,124
关键字:

自动化建模