⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 suiyi.java.svn-base

📁 aresde 空间数据开发 例子
💻 SVN-BASE
字号:
import java.io.IOException;

import javax.management.InvalidApplicationException;

import com.esri.arcgis.beans.map.MapBean;
import com.esri.arcgis.carto.FeatureLayer;
import com.esri.arcgis.carto.IFeatureLayer;
import com.esri.arcgis.carto.IMap;
import com.esri.arcgis.datasourcesGDB.SdeWorkspaceFactory;

import com.esri.arcgis.geodatabase.Feature;
import com.esri.arcgis.geodatabase.FeatureClass;
import com.esri.arcgis.geodatabase.GeometricNetwork;
import com.esri.arcgis.geodatabase.IDataset;
import com.esri.arcgis.geodatabase.IEnumDataset;
import com.esri.arcgis.geodatabase.IEnumNetEID;
import com.esri.arcgis.geodatabase.IEnumNetEIDProxy;
import com.esri.arcgis.geodatabase.IFeature;
import com.esri.arcgis.geodatabase.IFeatureClass;
import com.esri.arcgis.geodatabase.IFeatureClassContainer;
import com.esri.arcgis.geodatabase.IFeatureCursor;
import com.esri.arcgis.geodatabase.IFeatureDataset;
import com.esri.arcgis.geodatabase.IField;
import com.esri.arcgis.geodatabase.IGeometricNetwork;
import com.esri.arcgis.geodatabase.IGeometricNetworkProxy;
import com.esri.arcgis.geodatabase.INetElements;
import com.esri.arcgis.geodatabase.INetElementsProxy;
import com.esri.arcgis.geodatabase.INetwork;
import com.esri.arcgis.geodatabase.INetworkCollection;
import com.esri.arcgis.geodatabase.INetworkCollectionProxy;
import com.esri.arcgis.geodatabase.INetworkProxy;
import com.esri.arcgis.geodatabase.IWorkspace;
import com.esri.arcgis.geodatabase.SimpleJunctionFeature;
import com.esri.arcgis.geodatabase.SpatialFilter;
import com.esri.arcgis.geodatabase.UtilityNetwork;
import com.esri.arcgis.geodatabase.esriElementType;
import com.esri.arcgis.geodatabase.esriSpatialRelEnum;


import com.esri.arcgis.geodatabase.IFeatureWorkspace;
import com.esri.arcgis.geometry.IGeometry;
import com.esri.arcgis.geometry.IPoint;
import com.esri.arcgis.geometry.IPointProxy;
import com.esri.arcgis.interop.Dispatch;

import com.esri.arcgis.networkanalysis.EIDHelper;
import com.esri.arcgis.networkanalysis.EIDInfo;
import com.esri.arcgis.networkanalysis.IEIDHelper;
import com.esri.arcgis.networkanalysis.IEIDHelperProxy;
import com.esri.arcgis.networkanalysis.IEdgeFlag;
import com.esri.arcgis.networkanalysis.IEnumEIDInfo;
import com.esri.arcgis.networkanalysis.IJunctionFlag;
import com.esri.arcgis.networkanalysis.INetSolver;
import com.esri.arcgis.networkanalysis.JunctionFlag;
import com.esri.arcgis.networkanalysis.NetworkLoader;
import com.esri.arcgis.networkanalysis.PointToEID;
import com.esri.arcgis.networkanalysis.TraceFlowSolver;
import com.esri.arcgis.networkanalysis.esriFlowElements;
import com.esri.arcgis.networkanalysis.esriFlowMethod;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.PropertySet;
import com.esri.arcgis.system.esriLicenseProductCode;


public class Suiyi {
	
	public static void edit() throws Exception{
		com.esri.arcgis.system.PropertySet propSet = new PropertySet();
		
		//连接参数
		propSet.setProperty("SERVER", "192.168.1.6");
		propSet.setProperty("INSTANCE", "5151");
		//propSet.setProperty("DATABASE", "sde");
		propSet.setProperty("USER", "sde");
		propSet.setProperty("PASSWORD", "sde");
		propSet.setProperty("VERSION", "SDE.DEFAULT");
		
		SdeWorkspaceFactory swf=new SdeWorkspaceFactory();
		
		IWorkspace space=swf.open(propSet, 0);
		
		
		IFeatureWorkspace ifw=(IFeatureWorkspace)space;
		
		IFeatureDataset ds=ifw.openFeatureDataset("tang");

		//System.out.println("===="+ds.getSubsets().);
		INetworkCollection col =new INetworkCollectionProxy(ds);    //取得所有网络集合
		
		IGeometricNetwork iGnetwork=col.getGeometricNetwork(0);     //取得第一个几何网络
		
		GeometricNetwork network=new GeometricNetwork(iGnetwork);   //类型转换
		INetworkProxy i=(INetworkProxy)network.getNetwork();
		
		
		
		UtilityNetwork unetwork=new UtilityNetwork(i);
		 INetElements ie=new INetElementsProxy();
		 ie=unetwork.getAsINetElements();
		TraceFlowSolver netsol=new TraceFlowSolver();     //初始化一个网络流向的对象
		netsol.setSourceNetworkByRef(i);                   //赋值
		
		 IFeatureClassContainer featureClassCon=network.getAsIFeatureClassContainer();

	
		
		FeatureClass fcl=new FeatureClass(ifw.openFeatureClass("point"));   //得到图层
		
		
		IFeature f=fcl.getFeature(5);    //查询出图层种OID为5的点
		JunctionFlag juncFlag = new JunctionFlag();   //将点设置为JunctionFlag
        juncFlag.setUserClassID(fcl.getFeatureClassID());
        juncFlag.setUserID(f.getOID());
        juncFlag.setUserSubID(0);
        
        IJunctionFlag[] ijflag=new IJunctionFlag[1];
        ijflag[0]=(IJunctionFlag)juncFlag;    //加到数组种
		netsol.putJunctionOrigins(ijflag);     //为流向设置JunctionFlag

	   IEnumNetEID[]  junctionEIDs =new  IEnumNetEID[1];
		IEnumNetEID[] edgeEIDs =new  IEnumNetEID[1];
		//查询以961为起始点 联通的Junctions和Edge  返回2个数组 都存的是EID
		netsol.findFlowElements(esriFlowMethod.esriFMConnected,esriFlowElements.esriFEJunctionsAndEdges, junctionEIDs, edgeEIDs);
		
		
			System.out.println("==========jjjjjjjjjjj=============="+junctionEIDs[0].getCount());
			
	
			System.out.println("==========eeeeeeeeeee=============="+edgeEIDs[0].getCount());
			IEIDHelper idehelp=new EIDHelper();
			idehelp.setGeometricNetworkByRef(iGnetwork);
			idehelp.setPartialComplexEdgeGeometry(true);
			idehelp.setReturnFeatures(true);
			//idehelp.setReturnGeometries(true);
			
			 for(int p=0;p<junctionEIDs[0].getCount();p++)
			 {
			
			 int[] userClassID=new int[1];
			 int[] userID=new int[1];
			
			 int eID=junctionEIDs[0].next();
			 System.out.println("eIDeIDeID===="+eID);
			 	ie.queryIDs(eID, esriElementType.esriETJunction, userClassID, userID, null);
			 	//System.out.println("userClassID======"+userClassID[0]);
			 	//System.out.println("userID======"+userID[0]);
			 	//System.out.println("userSubID======"+userSubID[0]);
			 	
			 	IFeatureClass feaclass=featureClassCon.getClassByID(userClassID[0]);
			 	System.out.println("feaclass====="+feaclass.getAliasName());
			 	//这样就可以通过IFeatureClass来得到里面的字段值了
			 	 if(feaclass.getFields().findField("bbb")!=-1){    //有type这个字段  
			 		 
			 		IFeature iff=feaclass.getFeature(userID[0]);
			 		
			 		
			 //	IField if1=feaclass.getFields().getField(feaclass.getFields().findField("TYPE"));
			 	String TYPE=iff.getValue(feaclass.getFields().findField("type")).toString();
			 	String test=iff.getValue(feaclass.getFields().findField("test")).toString();
			 	String test1=iff.getValue(feaclass.getFields().findField("test1")).toString();
			 	String ttt=iff.getValue(feaclass.getFields().findField("ttt")).toString();
			 	 System.out.println("type===="+TYPE); 
                 System.out.println("test===="+test); 
                 System.out.println("test1===="+test1); 
                 System.out.println("ttt===="+ttt);          // 这个可以取到
			 	 }
			 	 }
			 
			
			
			/* IEnumEIDInfo junctionInfo=	idehelp.createEnumEIDInfo(junctionEIDs[0]);    //转换成EIDInfo数组
			 IEnumEIDInfo edgeInfo=	idehelp.createEnumEIDInfo(edgeEIDs[0]);
			 
			 
			 for(int m=0;m<junctionInfo.getCount();m++)
			 {
				 
				 EIDInfo eidInfo=(EIDInfo)junctionInfo.next();
				 IFeature iff=eidInfo.getFeature();
				 //iff.getOID();
  				 if(iff.getFields().findField("angle")!=-1){    //有angle这个字段  这样可以把junction过滤掉 只留下point
  					System.out.println("============="+iff.getFields().getFieldCount());
                 java.lang.Object angle = iff.getValue(iff.getFields().findField("angle"));
               
                 java.lang.Object ot = iff.getValue(iff.getFields().findField("objectid"));
                 java.lang.Object shape = iff.getExtent().getEnvelope();
                	 //iff.getValue(iff.getFields().findField("objectid"));
                 System.out.println("angle===="+angle);             //这个取不到
             
                 System.out.println("objecit===="+ot);          // 这个可以取到
                 System.out.println("shape===="+shape);          // 这个可以取到
  
  				 }
					
				 if(iff.getFields().findField("bbb")!=-1){    //有type这个字段  
	  					System.out.println("========11====="+iff.getFields().getFieldCount());
	                 java.lang.Object enabled = iff.getValue(iff.getFields().findField("enabled"));
	                 java.lang.Object type = iff.getValue(iff.getFields().findField("TYPE"));
	              //   IField typeField=iff.getValue(iff.getFields().findField("TYPE"));
	                 IField typeField= iff.getFields().getField(iff.getFields().findField("TYPE"));
	                 System.out.println("ffffffffffff======="+typeField.getName()+"===="+typeField.getType()+"===="+typeField.getDefaultValue()+"======"+typeField.isNullable());
	                 java.lang.Object test = iff.getValue(iff.getFields().findField("test"));
	                 java.lang.Object test2 = iff.getValue(iff.getFields().findField("test1"));
	                 java.lang.Object ttt = iff.getValue(iff.getFields().findField("ttt"));
	               //  System.out.println("========55555555====="+iff.getOID());
	                 java.lang.Object ot = iff.getValue(iff.getFields().findField("objectid"));
	                 //java.lang.Object shape = iff.getExtent().getEnvelope();
	                	 //iff.getValue(iff.getFields().findField("objectid"));
	                 System.out.println("enabled===="+enabled);             //这个取不到
	                 System.out.println("type===="+type); 
	                 System.out.println("test===="+test); 
	                 System.out.println("test2===="+test2); 
	                 System.out.println("ttt===="+ttt);          // 这个可以取到
	                 System.out.println("ot===="+ot);  
	                // System.out.println("shape===="+shape);          // 这个可以取到
	  
	  				 }

  				 //System.out.println("featureclassname===="+iff.esri_getClass().getAliasName());
			 }
			 
			 for(int m=0;m<edgeInfo.getCount();m++)
			 {
				 EIDInfo eidInfo=(EIDInfo)edgeInfo.next();
				 IFeature iff=eidInfo.getFeature();
				// System.out.println("edgeOid======"+iff.getOID()+"====featureclassname===="+iff.esri_getClass().getAliasName());
			 }
*/
		
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException{
		EngineInitializer.initializeEngine();
		final AoInitialize aoInit =new AoInitialize();
		try{
			aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
			
			edit();
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			aoInit.shutdown();
		}

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -