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

📄 testutilitynetworkanalyst.java.svn-base

📁 aresde 空间数据开发 例子
💻 SVN-BASE
字号:
import com.esri.arcgis.datasourcesGDB.SdeWorkspaceFactory;
import com.esri.arcgis.geodatabase.IEnumNetEID;
import com.esri.arcgis.geodatabase.IFeature;
import com.esri.arcgis.geodatabase.IFeatureClass;
import com.esri.arcgis.geodatabase.IFeatureDataset;
import com.esri.arcgis.geodatabase.IFeatureWorkspace;
import com.esri.arcgis.geodatabase.IForwardStar;
import com.esri.arcgis.geodatabase.IGeoDataset;
import com.esri.arcgis.geodatabase.IGeometricNetwork;
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.INetworkQuery;
import com.esri.arcgis.geodatabase.INetworkQueryProxy;
import com.esri.arcgis.geodatabase.IWorkspace;
import com.esri.arcgis.geodatabase.IWorkspaceEdit;
import com.esri.arcgis.geodatabase.IWorkspaceFactory;
import com.esri.arcgis.networkanalysis.EIDHelper;
import com.esri.arcgis.networkanalysis.EIDInfo;
import com.esri.arcgis.networkanalysis.EdgeFlag;
import com.esri.arcgis.networkanalysis.IEIDHelper;
import com.esri.arcgis.networkanalysis.IEdgeFlag;
import com.esri.arcgis.networkanalysis.IEnumEIDInfo;
import com.esri.arcgis.networkanalysis.IJunctionFlag;
import com.esri.arcgis.networkanalysis.INetFlag;
import com.esri.arcgis.networkanalysis.INetSolver;
import com.esri.arcgis.networkanalysis.ITraceFlowSolverGEN;
import com.esri.arcgis.networkanalysis.JunctionFlag;
import com.esri.arcgis.networkanalysis.NetworkLoader;
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 TestUtilityNetworkAnalyst {
	public static void UpdateRoadsEnabled(boolean status){
      try
      {
        int x = 17;
        int y;
        /*switch(Id)
        {
          case "8CF8031C-4086-4F57-BEDA-6545A23472E7":
            //core2GISroadsTableAdapter.UpdateEnabledQuery(iEnabled, 1);
            x = 1;
            //core2GISroadsTableAdapter.UpdateEnabledQuery(iEnabled, 4);
            y = 4;
            break;
          case "DCD55909-058B-4B8A-9CCE-85C15F87B481":
            //core2GISroadsTableAdapter.UpdateEnabledQuery(iEnabled, 8);
            x = 8;
            //core2GISroadsTableAdapter.UpdateEnabledQuery(iEnabled, 6);
            y = 6;
            break;
          default:
            return;
            break;
          //core2GISpgdbDataSet.AcceptChanges();
        }*/
        // convert the status parameter into an int
        short iEnabled;
        if(status)
        {
          iEnabled = 1;
        }
        else
        {
          iEnabled = 0;
        }
        com.esri.arcgis.system.PropertySet propSet = new PropertySet();
		
		//连接参数
		propSet.setProperty("SERVER", "192.168.1.220");
		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();
       // IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
       // IWorkspace pWS = pWorkspaceFactory.OpenFromFile(@"D:\CoreExperimentProject\Core2GISpgdb.mdb", 0);
        IWorkspace pWS = swf.open(propSet, 0);
        IFeatureWorkspace pFWS = (IFeatureWorkspace)pWS;
        IFeatureClass pFC = pFWS.openFeatureClass("point");
        /*IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)pWS;
        //IGeoDataset pGD = (IGeoDataset)pFC;
        
        
        workspaceEdit.startEditing(false);
        workspaceEdit.startEditOperation();*/

        IFeature feature = pFC.getFeature(2);
       /* feature.setValue(feature.getFields().findField("ENABLED"), iEnabled);
        feature.store();*/
       /* feature = pFC.getFeature(y);
        feature.setValue(4, iEnabled);
        feature.store();*/

        // let's use this last feature to establish a flag for the impending fow analysis
        // IJunctionFlag junctionFlag = new JunctionFlagClass() as IJunctionFlag;
        IEdgeFlag edgeFlag = new EdgeFlag();
        INetFlag netFlag = (INetFlag)edgeFlag;
        //netFlag.UserClassID = pFC.FeatureClassID;
        netFlag.setUserClassID(pFC.getFeatureClassID());
        //netFlag.UserID = feature.OID;
        netFlag.setUserID(feature.getOID());
        //netFlag.UserSubID = 0;
        netFlag.setUserSubID(0);
        IEdgeFlag[] edgeFlags = new IEdgeFlag[1];
        edgeFlags[0] = (IEdgeFlag)edgeFlag;
        
        JunctionFlag juncFlag = new JunctionFlag();
        juncFlag.setUserClassID(pFC.getFeatureClassID());
        juncFlag.setUserID(feature.getOID());
        juncFlag.setUserSubID(0);
        
        
        IJunctionFlag[] juncFlags = new IJunctionFlag[1];
        juncFlags[0] = (IJunctionFlag)juncFlag;
        //juncFlag.
        


        /*workspaceEdit.stopEditOperation();
        workspaceEdit.stopEditing(true);*/


        IFeatureDataset featureDataset = pFWS.openFeatureDataset("tang");
        INetworkCollection networkCollection = new INetworkCollectionProxy(featureDataset);
        IGeometricNetwork geometricNetwork = networkCollection.getGeometricNetworkByName("tang_Net");

        // now that we've matched status, let's run the analysis again
        INetwork myNetwork = geometricNetwork.getNetwork();
        //NetworkLoader loader = new NetworkLoader();

        ITraceFlowSolverGEN traceFlowSolver = new TraceFlowSolver();
        INetSolver netSolver = (INetSolver)traceFlowSolver;
        //netSolver.SourceNetwork = myNetwork;
        netSolver.setSourceNetworkByRef(myNetwork);
        // now add the beginning flag to the solver
        //traceFlowSolver.PutEdgeOrigins(ref edgeFlags);
        //traceFlowSolver.putEdgeOrigins(edgeFlags);
        traceFlowSolver.putJunctionOrigins(juncFlags);
        IEnumNetEID[] juncs = new IEnumNetEID[1];
        IEnumNetEID[] edg = new IEnumNetEID[1];
        //traceFlowSolver.findFlowEndElements(esriFlowMethod.esriFMConnected, esriFlowElements.esriFEEdges, juncs, edg);
        traceFlowSolver.findFlowElements(esriFlowMethod.esriFMConnected, esriFlowElements.esriFEJunctionsAndEdges, juncs, edg);
        System.out.println("edges: " + edg[0].getCount());
        System.out.println("juncs: " + juncs[0].getCount());
        INetElements ne =new INetElementsProxy(myNetwork);
        /* int[] userClassID = new int[1];
        int[] userID = new int[1];
        int[] userSubID = new int[1];
        int countJuncs = juncs[0].getCount();
        
        int juncEID =0 ;
        for(int i = 0;i<countJuncs;i++){
        	juncEID = juncs[0].next();
        	System.out.println(juncEID);
        	ne.queryIDs(juncEID, com.esri.arcgis.geodatabase.esriElementType.esriETJunction, userClassID, userID, userSubID);
        	
        	//System.out.println("userClassID = "+userClassID[0]);
        	System.out.println("OID = "+userID[0]);
        	//System.out.println("userSubID = "+userSubID[0]);
        	//geometricNetwork.getGeometryForEdgeEID(juncs[0].next())
        }
        System.out.println("===============");
        int edgeEID = 0;
        int countEdge = edg[0].getCount();
        for(int i= 0;i<countEdge;i++){
        	edgeEID = edg[0].next();
        	System.out.println(edgeEID);
        	ne.queryIDs(edgeEID, com.esri.arcgis.geodatabase.esriElementType.esriETEdge, userClassID, userID, userSubID);
        	System.out.println("OID = "+userID[0]);
        }*/
       // IForwardStar forwardStar = myNetwork.createForwardStar(true, null, null, null, null);
       // forwardStar.queryAdjacentEdge(index, adjacentEdgeEID, reverseOrientation, adjacentEdgeWeightValue)
        
        IEIDHelper idehelp=new EIDHelper();
		idehelp.setGeometricNetworkByRef(geometricNetwork);
		idehelp.setPartialComplexEdgeGeometry(true);
		idehelp.setReturnFeatures(true);
		//idehelp.setReturnGeometries(true);
		 IEnumEIDInfo junctionInfo=	idehelp.createEnumEIDInfo(juncs[0]);
		 IEnumEIDInfo edgeInfo=	idehelp.createEnumEIDInfo(edg[0]);
		 System.out.println(junctionInfo.getCount());
		 for(int m=0;m<junctionInfo.getCount();m++)
		 {
			 EIDInfo eidInfo=(EIDInfo)junctionInfo.next();
			 IFeature iff=eidInfo.getFeature();
			 System.out.println("junctionOid======"+iff.getOID()+"====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());
		 }

        
      }
      catch(Exception ex)
      {
    	  ex.printStackTrace();
      }
    }
	
	public static void main(String[] args) throws Exception{
		EngineInitializer.initializeEngine();
		final AoInitialize aoInit =new AoInitialize();
		try{
			aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
			UpdateRoadsEnabled(true);
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			aoInit.shutdown();
		}
	}
}

⌨️ 快捷键说明

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