PandaGIS的SkyLine开发教程(1)__三维场景下的矢量数据的属性查询方法和对象闪烁
使用SkyLine平台进行三维GIS系统开发,可以在三维场景中加载各种二维矢量数据,有常见的Shp数据,KML数据,还有以WFS形式发布的矢量数据等。这样我们就面临一个新的问题,那就是二维矢量数据在三维场景下的查询。
通常我们把Shp格式的数据导入三维场景中,无论直接导入还是以流的方式导入,都能够进行对象查询。对于线型对象,只要能够捕捉到线对象,就能进行属性查询,而导入的面对象,则要注意对于面的透明度这一属性进行设置,不能为零,否则无法捕捉到面对象。
对于线闪烁和面闪烁则通过改变其线宽,边界颜色,填充颜色和透明度来实现。以下是线闪烁和面闪烁的相关代码,以供学习。
if (tempObj.ObjectType == TerraExplorerX.ObjectTypeCode.OT_POLYLINE)
{
//保存原有属性
FgColor = tempObj.FgColor;
FgAlpha = tempObj.FgAlpha;
LineWidth = tempObj.LineWidth;
tempObj.LineWidth = LineWidth + 3;
tempObj.FgColor = 255;
tempObj.FgAlpha = 1;
}
if (tempObj.ObjectType == TerraExplorerX.ObjectTypeCode.OT_POLYGON)
{
//保存原有属性
FgColor = tempObj.FgColor;
FgAlpha = tempObj.FgAlpha;
LineWidth = tempObj.LineWidth;
BgColor = tempObj.BgColor;
BgAlpha = tempObj.BgAlpha;
tempObj.LineWidth = LineWidth + 3;
tempObj.BgColor = 65535;
tempObj.BgAlpha = 0.36;
tempObj.FgColor = 255;
tempObj.FgAlpha = 1;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (bVisable)
{
//隐藏对象
tempObj.Visible = 0;
}
else
{
//显示对象
tempObj.Visible = 1;
}
bVisable = !bVisable;
}
![](http://www.3snews.net/bbs/attachments/forumid_38/20090429_bab6c5355ca55fd0701bj3IA0H8WNXYz.jpg)
通常我们把Shp格式的数据导入三维场景中,无论直接导入还是以流的方式导入,都能够进行对象查询。对于线型对象,只要能够捕捉到线对象,就能进行属性查询,而导入的面对象,则要注意对于面的透明度这一属性进行设置,不能为零,否则无法捕捉到面对象。
对于线闪烁和面闪烁则通过改变其线宽,边界颜色,填充颜色和透明度来实现。以下是线闪烁和面闪烁的相关代码,以供学习。
if (tempObj.ObjectType == TerraExplorerX.ObjectTypeCode.OT_POLYLINE)
{
//保存原有属性
FgColor = tempObj.FgColor;
FgAlpha = tempObj.FgAlpha;
LineWidth = tempObj.LineWidth;
tempObj.LineWidth = LineWidth + 3;
tempObj.FgColor = 255;
tempObj.FgAlpha = 1;
}
if (tempObj.ObjectType == TerraExplorerX.ObjectTypeCode.OT_POLYGON)
{
//保存原有属性
FgColor = tempObj.FgColor;
FgAlpha = tempObj.FgAlpha;
LineWidth = tempObj.LineWidth;
BgColor = tempObj.BgColor;
BgAlpha = tempObj.BgAlpha;
tempObj.LineWidth = LineWidth + 3;
tempObj.BgColor = 65535;
tempObj.BgAlpha = 0.36;
tempObj.FgColor = 255;
tempObj.FgAlpha = 1;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (bVisable)
{
//隐藏对象
tempObj.Visible = 0;
}
else
{
//显示对象
tempObj.Visible = 1;
}
bVisable = !bVisable;
}