AE三维点击查询(3D Identify)的实现(转)

AE三维点击查询(3D Identify)的实现,类似ArcGIS的Identify对话框
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Function: 三维点击查询 3D Identify
// Copyright ©  天下无双之dxcgis
// 2008-5-8  于岳麓山下。

主窗体中的代码:

// 在主窗体中定义一个frmIdentify窗体类的对象
        frmIdentify m_frmIdentify = new frmIdentify();

// SceneControl1的MouseDown 事件中添加代码
private void axSceneControl1_OnMouseDown(object sender, ISceneControlEvents_OnMouseDownEvent e)
        {
               //三维查询         
                axSceneControl1.SceneGraph.IsNavigating = false;
               
                IHit3DSet pHit3DSet;
                axSceneControl1.SceneGraph.LocateMultiple(axSceneControl1.SceneGraph.ActiveViewer,
                    e.x, e.y, esriScenePickMode.esriScenePickAll, false, out pHit3DSet);
                                
                pHit3DSet.OnePerLayer();
                if (pHit3DSet.Hits.Count == 0)
                {
                    MessageBox.Show("当前点未能查找到任何要素");
                    return;
                }
                IDisplay3D pDisplay3D = (IDisplay3D)axSceneControl1.Scene.SceneGraph;//用于高亮显示要素
                //显示信息窗体
                m_frmIdentify.listBox1.Items.Clear();
                m_frmIdentify.listView1.Items.Clear();
                m_frmIdentify.pHit3DSet = pHit3DSet;
                m_frmIdentify.pDisplay3D = pDisplay3D;
                m_frmIdentify.InitData();
                m_frmIdentify.Location = System.Windows.Forms.Cursor.Position; //获得当前鼠标的屏幕坐标
                m_frmIdentify.Show();
                m_frmIdentify.Focus();
    }

3D Identify 窗体(frmIdentify)的代码

public partial class frmIdentify : Form
    {
        
        public IHit3DSet pHit3DSet;
        public IDisplay3D pDisplay3D;

public frmIdentify()
        {
            InitializeComponent();
        }              
        private void frmIdentify_Load(object sender, EventArgs e)
        {
        }
        private void btnHide_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {                  
            listView1.Items.Clear();//消除 listView1 的内容
      IHit3D pHit3D = (IHit3D)pHit3DSet.Hits.get_Element(listBox1.SelectedIndex);
            IFeature pFeature = (IFeature)pHit3D.Object;
            for (int j = 0; j < pFeature.Fields.FieldCount; j++)
            {
                ListViewItem li = new ListViewItem();
                li.SubItems.Clear();
                li.SubItems[0].Text = pFeature.Fields.get_Field(j).Name;
                li.SubItems.Add(pFeature.get_Value(j).ToString());               
                listView1.Items.Add(li);
            }
            //pDisplay3D.AddFlashFeature(pFeature.Shape);
            pDisplay3D.FlashGeometry(pHit3D.Owner,pHit3D.Object);
        }

//自己添加的方法,用以初始化窗体。
        public void InitData()
        {
            listBox1.Items.Clear();//消除 listBox1 的内容
            listView1.Items.Clear();//消除 listView1 的内容
            if (pHit3DSet == null)
                return;
            for (int i = 0; i < pHit3DSet.Hits.Count; )
            {
                IHit3D pHit3D = (IHit3D)pHit3DSet.Hits.get_Element(i);
                IPoint pPoint = pHit3D.Point;
                //if (pPoint.IsEmpty)
                //    return;
                ILayer pLayer = (ILayer)pHit3D.Owner;
                //判断是否为要素图层
         if (pLayer is IFeatureLayer)
                {
                    IFeature pFeature = (IFeature)pHit3D.Object;
                    listBox1.Items.Add(pLayer.Name);//在列表中添加图层名
                    //for (int j = 0; j < pFeature.Fields.FieldCount; j++)
                    //    strHits += "\n  :" + pFeature.Fields.get_Field(j).Name + pFeature.get_Value(j).ToString();
                    pDisplay3D.AddFlashFeature(pFeature.Shape);
                    i++; //计数i加1
                }
                else
                {
                    //不是要素层就从pHit3DSet中删去,因删除后总数减1,计数i不加1
                    pHit3DSet.Hits.Remove(i);
                }
            }                     
            pDisplay3D.FlashFeatures();
        }
    }

转自ESRI官论坛的dxcGIS

AE三维点击查询(3D Identify)的实现(转),布布扣,bubuko.com

时间: 2024-10-07 10:28:45

AE三维点击查询(3D Identify)的实现(转)的相关文章

bind绑定事件,摁回车键提交查询,点击查询也可以提交查询

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <

三维人脸识别预处理,3D face recognition preprocess

本文由兔死机发布在http://blog.csdn.net/smartempire/article/details/31373817, 转载请注明出处,howdeshui#163.com 最近在做三维人脸识别相关的东西,在已获取三维数据的情况下进行人脸的识别切割是第一步,本文将介绍预处理内的几个操作,最终给出切割后的三维人脸数据以及经过变换的灰度图像. 作者之前申请了国内的三维人脸数据库都没申请到,FRGC v2库也没有回复,只申请到了一个非常小众的库,此库重点是研究有遮挡情况下的三维人脸识别,

Layui 点击查询分页,页码不刷新解决方法

Layui 点击查询分页,页码不刷新解决方法 function queryDataGrid() { layui.table.reload(tableName, { where: { //设定异步数据接口的额外参数,任意设 columnName: layui.$("#columnName").val(), columnValue: layui.$("#columnValue").val(), QueryStr: "", state: layui.$

借助WebGL三维可视化技术检索3D动态图像

大数据可视化平台是通过三维表现技术来表示复杂的信息,实现对海量数据的立体呈现.可视化技术借助人脑的视觉思维能力,通过挖掘数据之间重要的关联关系将若干关联性的可视化数据进行汇总处理,揭示数据中隐含的规律和发展趋势,从而提高数据的使用效率.在解决了海量数据分析耗时过长.挖掘深度不够.数据展现简单等问题的基础上,大数据可视化平台使人们不再局限于使用传统关系数据表来分析数据信息,而是以更直观的方式呈现和推导数据间的逻辑关系.总而言之,数据可视化是做大数据分析的一个很重要的手段.WebGL光栅化数据渲染引

unity区分点击在3D物体还是2D UI上

当场景中的3D物体需要响应点击,但同时有UI显示时,存在判断点击是在3D物体上还是UI上的问题,办法如下: 1. 射线检测所有2D 3D物体,有2D物体被检测到时表明当前有UI.但无论Physics2D.Raycast()还是Physics.Raycast()都只能检测到含有Collider组件的物体,普通UI如Image Button等一般用射线是不起作用的.EventSystem.current.RaycastAll()可以将当前屏幕上的所有可检测的物体全部检测到,该方法需要自己构造一个Po

高德地图点击查询信息定位到点+异步加载点+点击点显示信息窗口

一:配置地图 根据官方步骤申请key 可以异步或者同步调用地图,此处Wie同步 html <div id="container" tabindex="0"></div> js //设置中心位置,显示当前城市的中心点 var map = new AMap.Map('container', { resizeEnable: true, //center: [117.031479, 36.66314],//定位的济南//center缺省则根据IP自动

20151224:Web:CheckBoxList 控件:去重显示 ;复选框多选时可点击查询查出结果

aspx代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Main.aspx.cs" Inherits="Main" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&qu

CSS3和js炫酷点击按钮3D翻转动画特效

简要教程 flipside是一款使用CSS3和js制作的炫酷点击按钮无缝过渡到确认面板的过渡动画特效.该点击按钮特效在按钮不同方向的边部点击时,产生的过渡动画特效是不一样的. 在线预览   源码下载 使用方法 使用该按钮过渡动画特效需要引入它提供的按钮样式表style.css和用于触发按钮点击事件的js文件script.js. HTML结构 该点击按钮过渡动画特效使用一个嵌套div的HTML结构: <div class="btn"> <div class="

浏览器JS交互,点击查询

鼠标自动移动到文字上,最重要的是 ,移动的位置是微小随机,每次还不同 A大龙插件官方群3:621816328 原文地址:https://www.cnblogs.com/plug/p/10344054.html