SuperMap iObjects .NET 日照分析之生成

地理位置是决定太阳光照空间变化的一个重要因素,不同经纬度、模型要素投射的阴影等方面因素会影响某区域接收到的日照时间长短。日照分析考虑到太阳角度的日变化和季节性变化以及周围地形投射的阴影所带来的影响,得出指定范围内的采光信息,即日照时间所占总分析时间的百分比。

基于GPU分析日照,相较于基于数据的日照分析”,精度较低,但可以大范围分析。

本文使用的iOBjects .net版本为:supermap-iobjectsdotnet-10.2.1-20429-92256

首先,此分析基于GPU,因此需要在分析前打开场景

Workspace Workspace = new Workspace();
SceneControl sceneControl = new SceneControl();
 WorkspaceConnectionInfo wksinfo = new WorkspaceConnectionInfo(@"D:\Desktop\日照分析\test.smwu");
  wksinfo.Type = WorkspaceType.SMWU;
  Workspace.Open(wksinfo);

  sceneControl.Scene.Workspace = Workspace;
  sceneControl.Scene.Open("NewDataset");

打开场景后,开始进行分析

日照分析使用到的方法为:

ModelBuilder3D.SunlightAnalysis

  
本文将使用ModelBuilder3D.SunlightAnalysis 方法 (Geometry3D, GeoModel3D, SunlightAnalysisSetting, Boolean) 进行分析

在这个方法中,共需要传入四个参数,Geometry3D geometry是需要进行分析的三维几何对象;GeoModel3D geoModelDes是分析结果保存成的三维实体模型;SunlightAnalysisSetting param是日照分析时所需要的分析参数,bool bLatLon是确认阴影率查询的对象是否是经纬度坐标。参数含义可参考iObject .net帮助文档,下载地址为:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/SuperMap_iObjects_.NET_Help.zip

根据参数,首先确认需要分析的三维几何对象,以场景中选中的对象为例

  Selection3D[] selections = sceneControl.Scene.FindSelection(true);
  Selection3D selection = selections[0];

  Recordset rs = selection.ToRecordset();
  GeoModel3D model3D = rs.GetGeometry() as GeoModel3D;

 构造一个GeoModel3D对象保存分析结果

GeoModel3D geoModel3D = new GeoModel3D();

构造分析参数设置SunlightAnalysisSetting 对象,这个设置在测试时可参考iDesktop

        

 

            setting.BaseUtcOffset = TimeSpan.FromHours(8);
            setting.DistanceThreshold = 1;
            setting.StartTime = Convert.ToDateTime("2022-07-05 06:00:00");
            setting.EndTime = Convert.ToDateTime("2022-07-05 18:00:00");
            setting.SubdivisionThreshold = 20;
            List<DatasetVector> datasets = new List<DatasetVector>();
            DatasetVector vector = Workspace.Datasources[0].Datasets["NewDataset"] as DatasetVector;
            datasets.Add(vector);
            setting.QueryDatasets = datasets;
            setting.TimeInterval = TimeSpan.FromMinutes(30);

进行分析,并将分析结果模型保存到数据集

  m_pointsResultList = ModelBuilder3D.SunlightAnalysis(model3D, geoModel3D, setting, true);

            DatasetVector datasetM = Workspace.Datasources[0].Datasets["New_Model"] as DatasetVector;
            Recordset recordset = datasetM.GetRecordset(false, CursorType.Dynamic);
            recordset.Edit();
            bool a = recordset.AddNew(geoModel3D);
            recordset.Refresh();
            recordset.Update();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值