本文主要是介绍ArcGISEngine时态数据浏览回放,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ArcGIS10新增了对时态数据的可视化功能,二次开发组件ArcGIS Engine也提供了相应的开发接口供用户根据实际要求开发相应的时态数据回放功能。
所谓的时态数据是某个时间点的状态的数据,如不同时间点的飓风位移、降雨量等。
时态数据图层必须包含时间字段,如下图所示
下面介绍如何通过ArcGISEngine编程实现时态数据的回放浏览功能。
ITimeExtent pLayerTimeExtent = null;
Int32 pCount = 0;
privatevoid DoReplay(IFeatureLayer pFLyr)
{
try
{
ITimeZoneFactory pTimeZoneFactory = newTimeZoneFactoryClass();
ITimeData pTimeData = pFLyr asITimeData;
pTimeData.UseTime = true;
String slocalTimeZoneWId =pTimeZoneFactory.QueryLocalTimeZoneWindowsID();
ITimeReference pTimeReference =pTimeZoneFactory.CreateTimeReferenceFromWindowsID(slocalTimeZoneWId);
if (!pTimeData.SupportsTime) return;
pTimeData.UseTime = true;
ITimeTableDefinition pTimeDataDef = pFLyr asITimeTableDefinition;
pTimeDataDef.StartTimeFieldName = “Date_Time”;
pTimeDataDef.TimeReference = pTimeReference;
//获取图层时态数据时间
pLayerTimeExtent = pTimeData.GetFullTimeExtent();
//激活timer控件
timer1.Enabled = true;
pCount = 0;
}
catch (Exception Err)
{
string msg = Err.Message;
}
}
//timer控件
privatevoid timer1_Tick(objectsender, EventArgs e)
{
try
{
IMap pMap = axMapControl1.Map;
IActiveView pActiveView = pMap asIActiveView;
IScreenDisplay pScreenDisplay =pActiveView.ScreenDisplay;
ITimeDisplay pTimeDisplay = pScreenDisplay asITimeDisplay;
ITime startTime = pLayerTimeExtent.StartTime;
ITime endTime = (ITime)((IClone)startTime).Clone();
//每次递进12小时
((ITimeOffsetOperator)endTime).AddHours(12.0 * pCount);
ITimeExtent pTimeExt = newTimeExtentClass();
pTimeExt.SetExtent(startTime, endTime);
pTimeExt.Empty = false;
pTimeDisplay.TimeValue = pTimeExt asITimeValue;
pActiveView.Refresh();
pCount += 1;
//当前浏览时间已到达图层时态数据终止时间时,停止timer控件
if (endTime.Compare(pLayerTimeExtent.EndTime)== 1)
{
timer1.Enabled = false;
button1.Enabled = true;
}
}
catch (Exception Err)
{
}
}
主要接口:
ITime:设置时间点
ITimeData:图层时间数据
ITimeExtent:时间范围
ITimeDisplay:显示时间范围
ITimeTableDefinition:设置图层时间数据字段
ITimeReference:时间参考
ITimeZoneFactory:设置时区
这篇关于ArcGISEngine时态数据浏览回放的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!