Skyline_DateTime

来源:互联网 发布:淘宝上可靠的韩国代购 编辑:程序博客网 时间:2024/06/10 07:20
        想把skyline的Analysis接口的阴影分析功能。 实际写的过程中发现阴影这个概念和时间属性密不可分。 准确的阴影是通过在某年的某个月份来计算太阳高度角在结合某天的某个时刻太阳所在的位置计算出来的,如果想得到准确的阴影分析的结果就一定要搞清楚时间和阴影的关系。所以重点介绍skyline中的时间系统。
先来张图说明一下时间和阴影的关系


在C#中的DateTime和skyline的对象是可以转换的。 所以在程序中我们可以通过DateTime.Current来设置当前三维场景中的时间。来查看阴影的变化。

1.DateTime.Curren
如果想看到DateTime.Current 设置后的变化首先要修改模式 将模式设置成为“SliderDisplayMode .MODE_TIME”。
你就可以看到如下效果。


在左侧调整时间和小时后就可以看到场景中光阴的变化。

2.TimeZone
可以通过DateTime.FixedLocalTime 获取当前的时间
可以在DateTime中获取当前系统时区的信息。时区在阴影计算过程中也是需要考虑的重要因素。
你可以根据位置来计算时区。在根据对照表来设置系统合适的时区信息
  //计算时区
        private double CalculateTimeZone(IPosition65 pos)
        {
            double xLatLong = 0;
            try
            {
                var srcCoordSys = sg65.Terrain.CoordinateSystem;
                var destCoordSys = sg65.CoordServices.CreateCoordinateSystem("");
                destCoordSys.InitLatLong();

                xLatLong = sg65.CoordServices.Reproject(srcCoordSys, destCoordSys, pos.X, pos.Y).X;
            }
            catch { return 0; }

            //15度一个时区所以 坐标值除15;
            return Math .Round(xLatLong / 15);
        }

时区:由于地球每24小时自转一周,一小时转15个经度。因此,国际上规定,每隔15°划为一个时区,全球可分为24个时区 。


3.TimeSpan

DateTime.TimeRangeStart 和 DateTime.TimeRangeEnd 可以用来设置 在一个通过范围来调整时间轴。 在某个时间范围来调整时间。比如说按照 12个小时来查看。


在skyline三维场景中每个对象都赋予了时间属性。 可以理解成生命周期,通过调整时间可以根据时间来显示不同时间阶段的内容。如下图。


Okay 介绍完毕,欢迎讨论。 示例代码


0 0
原创粉丝点击