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