基于Skyline的TerraExplorer6.1.1如何通过二次开发实现矢量图层的空间查询和属性查询


说明:先准备好一个FLY工程文件,其中要加载一个相对标准的SHP文件,自己参考其他部分实现绘制几何对象的方法;

 

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head >
     < title ></ title >
     < script  type ="text/javascript"  language ="javascript" >
        
// 遍历整个图层 
         // zhaohe.2012.09.25.
         function  GetFeatureAll() {
            
var  strResult  =   " <table> " ;
            
var  SGWorld  =  CreateSGObj();
            
var  ItemID  =  SGWorld.ProjectTree.FindItem( " Fairfax_zones " );
            
var  obj  =  SGWorld.ProjectTree.GetLayer(ItemID);
            
//  遍历当前图层中已经在地图上加载的全部对象及其属性
             var  pIFeatureGroup  =  obj.FeatureGroups( 0 );
            
for  ( var  i  =   0 ; i  <  pIFeatureGroup.Count; i ++ ) {
                strResult 
=  strResult  +   " <tr> " ;
                
var  pIFeature  =  pIFeatureGroup.Item(i);
                
for  ( var  j  =   0 ; j  <  pIFeature.FeatureAttributes.Count; j ++ ) {
                    
var  pIFeatureAttribute  =  pIFeature.FeatureAttributes.Item(j);
                    strResult 
=  strResult  +   " <td> "   +  pIFeatureAttribute.Name  +   " * "   +  pIFeatureAttribute.Value  +   " </td> " ;
                }
                strResult 
=  strResult  +   " </tr> " ;
            }
            strResult 
=  strResult  +   " </table> " ;
            window.document.getElementById(
" result " ).innerHTML  =  strResult;
        }

        
// 多边形查询
         // zhaohe.2012.09.25.
         function  GetFeatureWithPoly() {
            
var  strResult  =   " <table> " ;
            
var  SGWorld  =  CreateSGObj();
            
var  ItemID  =  SGWorld.ProjectTree.FindItem( " Fairfax_zones " );
            
var  obj  =  SGWorld.ProjectTree.GetLayer(ItemID);
            
//  遍历多边形内选中的对象及其属性
             var  qItemID  =  SGWorld.ProjectTree.GetNextItem( 0 10 );
            
var  qobj  =  SGWorld.ProjectTree.GetObject(qItemID);
            
var  queryGeometry  =  qobj.Geometry;
            
var  resFeatures  =  obj.ExecuteSpatialQuery(queryGeometry,  1 );
            
for  ( var  i  =   0 ; i  <  resFeatures.Count; i ++ ) {
                strResult 
=  strResult  +   " <tr> " ;
                
var  pIFeature  =  resFeatures.Item(i);
                
for  ( var  j  =   0 ; j  <  pIFeature.FeatureAttributes.Count; j ++ ) {
                    
var  pIFeatureAttribute  =  pIFeature.FeatureAttributes.Item(j);
                    strResult 
=  strResult  +   " <td> "   +  pIFeatureAttribute.Name  +   " * "   +  pIFeatureAttribute.Value  +   " </td> " ;
                }
                strResult 
=  strResult  +   " </tr> " ;
            }
            strResult 
=  strResult  +   " </table> " ;
            window.document.getElementById(
" result " ).innerHTML  =  strResult;
        }

        
// 属性查询
         // zhaohe.2012.09.25.
         function  GetFeatureWithPro() {
            
var  SGWorld  =  CreateSGObj();
            
var  ItemID  =  SGWorld.ProjectTree.FindItem( " Fairfax_zones " );
            
var  obj  =  SGWorld.ProjectTree.GetLayer(ItemID);
            
var  clause  =  window.document.getElementById( " Text1 " ).value;
            
if  (clause  ==   "" ) {
                obj.Filter 
=  clause;
                obj.Streaming 
=   1 ;
                obj.Refresh();
            }
            
else  {
                obj.Filter 
=  clause;
                obj.Streaming 
=   0 ;
                obj.Refresh();
            }
            GetFeatureAll();
        }

        
/*   
        功能:   创建sgworld对象
        备注:   赵贺 2011.04.01.
        
*/
        
function  CreateSGObj() {
            
var  obj  =  $( " sgworld " );
            
if  (obj  ==   null ) {
                obj 
=  document.createElement( ' object ' );
                document.body.appendChild(obj);
                obj.name 
=   " sgworld " ;
                obj.id 
=   " sgworld " ;
                obj.classid 
=   " CLSID:3a4f91b0-65a8-11d5-85c1-0001023952c1 " ;
            }
            
return  obj;
        }
        
function  $(id) {
            
return  window.document.getElementById(id);
        }
    
</ script >
</ head >
< body >
     < table >
         < tr >
             < td  colspan ="4" >
                 < input  id ="Button1"  type ="button"  value ="全部Feature"  onclick ="GetFeatureAll()"   />
                 < input  id ="Button2"  type ="button"  value ="空间查询"  onclick ="GetFeatureWithPoly()"   />
             </ td >
         </ tr >
         < tr >
             < td  colspan ="4" >
                 < input  id ="Text1"  type ="text"  value ="Class=3"   />
                 < input  id ="Button6"  type ="button"  value ="属性查询"  onclick ="GetFeatureWithPro()"   />
             </ td >
         </ tr >
         < tr >
             < td >
                 < div  id ="result" >
                 </ div >
             </ td >
         </ tr >
     </ table >
</ body >
</ html >

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM