📄 testutilitynetworkanalyst.java.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 + -