ArcEngine二次开发-时间滑块实现时空数据动态展示

本文介绍了如何在ArcMap中实现时间滑块功能,通过设置要素时间属性使数据随时间变化展示不同内容。使用ArcGIS自带数据进行演示,并提供了代码示例,包括DoReplay和Display函数,涉及ITimeData、ITimeTableDefinition等接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现了ArcMap中的时间滑块的基本功能,通过要素设置时间属性,是数据在不同的时间显示不同的内容。数据的话使用的是ArcGIS自带的数据,我把它放在程序的 根目录下了,需要的同学可以下载学习下,有不足的地方请见谅。

主界面

界面中可以看到有两种方法,事实是第一种方法没有调试好,一直出现问题,方法二其实是方法一的简化版,有兴趣的同学可以自行下载代码调试下,不过方法二中也大致实现了时间滑块的功能。在这里插入图片描述在这里插入图片描述

效果图

在这里插入图片描述
主要用到了两个函数,具体的大家可以可以下载代码查看:

   private void DoReplay(IFeatureLayer pFLyr)
    {
        try
        {
            ITimeZoneFactory pTimeZoneFactory = new TimeZoneFactoryClass(); ITimeData pTimeData = pFLyr as ITimeData;

            pTimeData.UseTime = true;

            String slocalTimeZoneWId = pTimeZoneFactory.QueryLocalTimeZoneWindowsID();

            ITimeReference pTimeReference = pTimeZoneFactory.CreateTimeReferenceFromWindowsID(slocalTimeZoneWId);

            if (!pTimeData.SupportsTime) return;

            pTimeData.UseTime = true;

            ITimeTableDefinition pTimeDataDef = pFLyr as ITimeTableDefinition;

            pTimeDataDef.StartTimeFieldName = "Date_Time";

            pTimeDataDef.TimeReference = pTimeReference;

            //获取图层时态数据时间

            pLayerTimeExtent = pTimeData.GetFullTimeExtent();

            //激活timer控件

            timer1.Enabled = true;

            pCount = 0;

        }

        catch (Exception Err)
        {

            string msg = Err.Message;

        }

    }
    private void Display(int count)
    {
        //IMap pMap = axMapControl1.Map;

        IActiveView pActiveView = pMap as IActiveView;

        IScreenDisplay pScreenDisplay = pActiveView.ScreenDisplay;

        ITimeDisplay pTimeDisplay = pScreenDisplay as ITimeDisplay;

        ITime startTime = pLayerTimeExtent.StartTime;

        ITime endTime = (ITime)((IClone)startTime).Clone();

        //每次递进12小时
       ((ITimeOffsetOperator)startTime).AddHours(0.5 * (count - 1));
        ((ITimeOffsetOperator)endTime).AddHours(0.5 * count);
        ITimeExtent pTimeExt = new TimeExtentClass();
        pTimeExt.SetExtent(startTime, endTime);
        pTimeExt.Empty = false;
        pTimeDisplay.TimeValue = pTimeExt as ITimeValue;
        pActiveView.Refresh();

    }

ArcEngine的时间滑块用到的主要接口:ITimeData、ITimeTableDefinition 、ITimeDataDisplay、ITimeExtent等等:代码示例下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值