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

📄 creategeometricnetwork.java.svn-base

📁 aresde 空间数据开发 例子
💻 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 + -