📄 creategeometricnetwork.java.svn-base
字号:
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.esri.arcgis.datasourcesGDB.SdeWorkspaceFactory;
import com.esri.arcgis.geodatabase.DENetworkDataset;
import com.esri.arcgis.geodatabase.EdgeFeatureSource;
import com.esri.arcgis.geodatabase.EvaluatedNetworkAttribute;
import com.esri.arcgis.geodatabase.IDEDataset;
import com.esri.arcgis.geodatabase.IDEGeoDataset;
import com.esri.arcgis.geodatabase.IDENetworkDataset;
import com.esri.arcgis.geodatabase.IDataElement;
import com.esri.arcgis.geodatabase.IDataset;
import com.esri.arcgis.geodatabase.IDatasetContainer2;
import com.esri.arcgis.geodatabase.IDatasetContainer2Proxy;
import com.esri.arcgis.geodatabase.IEdgeFeatureSource;
import com.esri.arcgis.geodatabase.IEvaluatedNetworkAttribute;
import com.esri.arcgis.geodatabase.IFeatureDatasetExtension;
import com.esri.arcgis.geodatabase.IFeatureDatasetExtensionContainer;
import com.esri.arcgis.geodatabase.IFeatureDatasetExtensionContainerProxy;
import com.esri.arcgis.geodatabase.IFeatureWorkspace;
import com.esri.arcgis.geodatabase.IGeoDataset;
import com.esri.arcgis.geodatabase.IGeoDatasetProxy;
import com.esri.arcgis.geodatabase.IJunctionFeatureSource;
import com.esri.arcgis.geodatabase.IJunctionFeatureSourceProxy;
import com.esri.arcgis.geodatabase.INetworkAttribute2;
import com.esri.arcgis.geodatabase.INetworkBuild;
import com.esri.arcgis.geodatabase.INetworkConstantEvaluator;
import com.esri.arcgis.geodatabase.INetworkDataset;
import com.esri.arcgis.geodatabase.INetworkEvaluator;
import com.esri.arcgis.geodatabase.INetworkFieldEvaluator;
import com.esri.arcgis.geodatabase.INetworkSource;
import com.esri.arcgis.geodatabase.IStreetNameFields;
import com.esri.arcgis.geodatabase.ITransactions;
import com.esri.arcgis.geodatabase.ITurnFeatureSource;
import com.esri.arcgis.geodatabase.JunctionFeatureSource;
import com.esri.arcgis.geodatabase.NetworkConstantEvaluator;
import com.esri.arcgis.geodatabase.NetworkDataset;
import com.esri.arcgis.geodatabase.NetworkFieldEvaluator;
import com.esri.arcgis.geodatabase.NetworkSource;
import com.esri.arcgis.geodatabase.StreetNameFields;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.Array;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.IArray;
import com.esri.arcgis.system.PropertySet;
import com.esri.arcgis.system.esriLicenseProductCode;
public class CreateGeometricNetwork {
private final Log log=LogFactory.getLog(this.getClass());
private final String dsname="ZJ_WZ_OHB1011";
private final String ndname="ZJ_WZ_OHB_NET1011";
private final String Bus_Layer="Bus_Layer1011";
private final String ACLineSegMent_Layer="ACLineSegMent_Layer1011";
private final String Link_Layer="Link_Layer1011";
private final String Breaker_Layer="Breaker_Layer1011";
private final String Disconnector_Layer="Disconnector_Layer1011";
private final String Transformer3_Layer="Transformer3_Layer1011";
private final String Compensator_Layer="Compensator_Layer1011";
private final String PT_Layer="PT_Layer1011";
private void create() throws Exception{
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();
log.info("连接SDE");
//连接SDE
IFeatureWorkspace ifw=(IFeatureWorkspace)swf.open(propSet, 0);
IGeoDataset fdsGDS=new IGeoDatasetProxy(ifw.openFeatureDataset(this.dsname));
//为一个可build的Network Dataset创建一个新的data element
IDENetworkDataset deND = new DENetworkDataset();
deND.setBuildable(true);
IDEGeoDataset deGDS=(IDEGeoDataset)deND;
//创建IDEGeoDataset
deGDS.setExtentByRef(fdsGDS.getExtent());
deGDS.setSpatialReferenceByRef(fdsGDS.getSpatialReference());
//设置NetworkDataset名称
IDataElement dataElement=(IDataElement)deND;
dataElement.setName(this.ndname);
//ndSource列表
IArray sourceArray = new Array();
/**
* 取线层为EdgeFeatureSource
* 点层为JunctionFeatureSource
*
* 线层设置组为IEdgeFeatureSource.setClassConnectivityGroup(int)
* 点层设置组为IJunctionFeatureSource.addClassConnectivityGroup(int);
*
* 线层Policy为IEdgeFeatureSource.setClassConnectivityPolicy(int)
* 点层Policy为IJunctionFeatureSource.setClassConnectivityPolicy(int)
* */
ITransactions tx=(ITransactions)ifw;
tx.startTransaction();
//母线
log.info("母线");
INetworkSource Bus_Layer = new EdgeFeatureSource();
Bus_Layer.setName(this.Bus_Layer);
Bus_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETEdge
);
IEdgeFeatureSource edgeFS =(IEdgeFeatureSource)Bus_Layer;
edgeFS.setClassConnectivityGroup(1);
edgeFS.setClassConnectivityPolicy(
com
.esri
.arcgis
.geodatabase
.esriNetworkEdgeConnectivityPolicy
.esriNECPAnyVertex
);
sourceArray.add(Bus_Layer);
log.info("线路");
//线路
INetworkSource ACLineSegMent_Layer = new EdgeFeatureSource();
ACLineSegMent_Layer.setName(this.ACLineSegMent_Layer);
ACLineSegMent_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETEdge
);
edgeFS =(IEdgeFeatureSource)ACLineSegMent_Layer;
edgeFS.setClassConnectivityGroup(1);
edgeFS.setClassConnectivityPolicy(
com
.esri
.arcgis
.geodatabase
.esriNetworkEdgeConnectivityPolicy
.esriNECPEndVertex
);
sourceArray.add(ACLineSegMent_Layer);
log.info("连接线");
//连接线
INetworkSource Link_Layer=new EdgeFeatureSource();
Link_Layer.setName(this.Link_Layer);
Link_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETEdge
);
edgeFS =(IEdgeFeatureSource)Link_Layer;
edgeFS.setClassConnectivityGroup(1);
edgeFS.setClassConnectivityPolicy(
com
.esri
.arcgis
.geodatabase
.esriNetworkEdgeConnectivityPolicy
.esriNECPEndVertex
);
sourceArray.add(Link_Layer);
log.info("开关");
//开关
INetworkSource Breaker_Layer=new JunctionFeatureSource();
Breaker_Layer.setName(this.Breaker_Layer);
Breaker_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETJunction
);
IJunctionFeatureSource juncFS =(IJunctionFeatureSource)Breaker_Layer;
juncFS.addClassConnectivityGroup(1);
juncFS.setClassConnectivityPolicy(
com.esri.arcgis.geodatabase.esriNetworkJunctionConnectivityPolicy.esriNJCPHonor
);
sourceArray.add(Breaker_Layer);
log.info("刀闸");
//刀闸
INetworkSource Disconnector_Layer=new JunctionFeatureSource();
Disconnector_Layer.setName(this.Disconnector_Layer);
Disconnector_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETJunction
);
juncFS =(IJunctionFeatureSource)Disconnector_Layer;
juncFS.addClassConnectivityGroup(1);
juncFS.setClassConnectivityPolicy(
com.esri.arcgis.geodatabase.esriNetworkJunctionConnectivityPolicy.esriNJCPHonor
);
sourceArray.add(Disconnector_Layer);
log.info("三相变");
//三相变
INetworkSource Transformer3_Layer=new JunctionFeatureSource();
Transformer3_Layer.setName(this.Transformer3_Layer);
Transformer3_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETJunction
);
juncFS =(IJunctionFeatureSource)Transformer3_Layer;
juncFS.addClassConnectivityGroup(1);
juncFS.setClassConnectivityPolicy(
com.esri.arcgis.geodatabase.esriNetworkJunctionConnectivityPolicy.esriNJCPHonor
);
sourceArray.add(Transformer3_Layer);
log.info("电容");
//电容
INetworkSource Compensator_Layer=new JunctionFeatureSource();
Compensator_Layer.setName(this.Compensator_Layer);
Compensator_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETJunction
);
juncFS =(IJunctionFeatureSource)Compensator_Layer;
juncFS.addClassConnectivityGroup(1);
juncFS.setClassConnectivityPolicy(
com.esri.arcgis.geodatabase.esriNetworkJunctionConnectivityPolicy.esriNJCPHonor
);
sourceArray.add(Compensator_Layer);
log.info("PT");
//PT
INetworkSource PT_Layer=new JunctionFeatureSource();
PT_Layer.setName(this.PT_Layer);
PT_Layer.setElementType(
com
.esri
.arcgis
.geodatabase
.esriNetworkElementType
.esriNETJunction
);
juncFS =(IJunctionFeatureSource)PT_Layer;
juncFS.addClassConnectivityGroup(1);
juncFS.setClassConnectivityPolicy(
com.esri.arcgis.geodatabase.esriNetworkJunctionConnectivityPolicy.esriNJCPHonor
);
sourceArray.add(PT_Layer);
log.info("设置Source");
//设置Source
deND.setSourcesByRef(sourceArray);
log.info("设置Attribute");
IArray attrArray = new Array();
IEvaluatedNetworkAttribute evalNetAttr = new EvaluatedNetworkAttribute();
INetworkAttribute2 netAttr2=(INetworkAttribute2)evalNetAttr;
netAttr2.setName("length");
netAttr2.setUsageType(
com
.esri
.arcgis
.geodatabase
.esriNetworkAttributeUsageType
.esriNAUTCost
);
netAttr2.setDataType(
com
.esri
.arcgis
.geodatabase
.esriNetworkAttributeDataType
.esriNADTDouble
);
netAttr2.setUnits(
com
.esri
.arcgis
.geodatabase
.esriNetworkAttributeUnits
.esriNAUMeters
);
netAttr2.setUseByDefault(false);
//设置Attribute为SHP.LEN字段
INetworkFieldEvaluator netFieldEval = new NetworkFieldEvaluator();
netFieldEval.setExpression("[SHP.LEN]", "");
/**
* 设置Evaluators中的线层Source关系
* esriNEDAlongDigitized -- From-To
* esriNEDAgainstDigitized -- From-To
* */
evalNetAttr.setEvaluatorByRef(Bus_Layer, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAlongDigitized, (INetworkEvaluator)netFieldEval);
evalNetAttr.setEvaluatorByRef(Bus_Layer, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAgainstDigitized, (INetworkEvaluator)netFieldEval);
evalNetAttr.setEvaluatorByRef(ACLineSegMent_Layer, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAlongDigitized, (INetworkEvaluator)netFieldEval);
evalNetAttr.setEvaluatorByRef(ACLineSegMent_Layer, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAgainstDigitized, (INetworkEvaluator)netFieldEval);
evalNetAttr.setEvaluatorByRef(Link_Layer, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAlongDigitized, (INetworkEvaluator)netFieldEval);
evalNetAttr.setEvaluatorByRef(Link_Layer, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAgainstDigitized, (INetworkEvaluator)netFieldEval);
INetworkConstantEvaluator netConstEval = new NetworkConstantEvaluator();
netConstEval.setConstantValue(false);
INetworkEvaluator eval=(INetworkEvaluator)netConstEval;
//默认的Evaluator设定(必需)
evalNetAttr.setDefaultEvaluatorByRef(com.esri.arcgis.geodatabase.esriNetworkElementType.esriNETEdge, eval);
evalNetAttr.setDefaultEvaluatorByRef(com.esri.arcgis.geodatabase.esriNetworkElementType.esriNETJunction, eval);
evalNetAttr.setDefaultEvaluatorByRef(com.esri.arcgis.geodatabase.esriNetworkElementType.esriNETTurn, eval);
attrArray.add(evalNetAttr);
//把Attribute加入到NetworkDataset
deND.setAttributesByRef(attrArray);
log.info("准备构建");
IFeatureDatasetExtensionContainer fdxc=new IFeatureDatasetExtensionContainerProxy(fdsGDS);
log.info("得到IFeatureDatasetExtension");
IFeatureDatasetExtension fdx=fdxc.findExtension(
com
.esri
.arcgis
.geodatabase
.esriDatasetType
.esriDTNetworkDataset);
log.info("得到IDatasetContainer2");
IDatasetContainer2 dsc2=new IDatasetContainer2Proxy(fdx);
IDEDataset ide=(IDEDataset)deND;
log.info("转换IDataset");
IDataset ds=dsc2.createDataset(ide);
log.info("构建INetworkDataset");
INetworkDataset netDataset=new NetworkDataset(ds);
INetworkBuild netBuild=(INetworkBuild)netDataset;
log.info("开始构建");
netBuild.buildNetwork(fdsGDS.getExtent());
tx.commitTransaction();
log.info("完成");
}
public static void main(String args[]) throws IOException{
EngineInitializer.initializeEngine();
final AoInitialize aoInit =new AoInitialize();
try{
aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
new CreateGeometricNetwork().create();
}catch(Exception e){
e.printStackTrace();
}finally{
aoInit.shutdown();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -