createrelationshipclass.java.svn-base

来自「aresde 空间数据开发 例子」· SVN-BASE 代码 · 共 89 行

SVN-BASE
89
字号
import java.io.IOException;

import com.esri.arcgis.datasourcesGDB.SdeWorkspaceFactory;
import com.esri.arcgis.geodatabase.IFeatureClass;
import com.esri.arcgis.geodatabase.IFeatureDataset;
import com.esri.arcgis.geodatabase.IFeatureWorkspace;
import com.esri.arcgis.geodatabase.IRelationship;
import com.esri.arcgis.geodatabase.IRelationshipClass;
import com.esri.arcgis.geodatabase.IRelationshipClassContainer;
import com.esri.arcgis.geodatabase.IRelationshipClassContainerProxy;
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 CreateRelationshipClass {
	
	
	public static void create() throws Exception{
		com.esri.arcgis.system.PropertySet propSet = new PropertySet();
		
		//连接参数
		propSet.setProperty("SERVER", "10.158.164.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();
		
		//连接SDE
		IFeatureWorkspace ifw=(IFeatureWorkspace)swf.open(propSet, 0);
		
		IFeatureDataset ifd= ifw.openFeatureDataset("ddddd");
		
		IFeatureClass point=ifw.openFeatureClass("point");
		IFeatureClass line=ifw.openFeatureClass("line");
		
		IRelationshipClassContainer ic=new IRelationshipClassContainerProxy(ifd);
		
		/**
		 * 
		 * createRelationshipClass(java.lang.String relClassName,
                                                  IObjectClass originClass,
                                                  IObjectClass destinationClass,
                                                  java.lang.String forwardLabel,
                                                  java.lang.String backwardLabel,
                                                  int cardinality,
                                                  int notification,
                                                  boolean isComposite,
                                                  boolean isAttributed,
                                                  IFields relAttrFields,
                                                  java.lang.String originPrimaryKey,
                                                  java.lang.String destPrimaryKey,
                                                  java.lang.String originForeignKey,
                                                  java.lang.String destForeignKey)
		
		 *
		 *可以建立一个没有FeatureDataset成员的独立的relationship class 
		 *如果many-to-many或者isAttributed是true就需要指定4个key
		 *OriginPrimaryKey和DestinationPrimaryKey是源对象和目标对象的主键
		 *OriginForeignKey和DestinationForeignKey是被创建的外键名称
		 * */
		ic.createRelationshipClass("LineToPoint", line, point, "R_line", "R_point",
				com.esri.arcgis.geodatabase.esriRelCardinality.esriRelCardinalityOneToMany,
				com.esri.arcgis.geodatabase.esriRelNotification.esriRelNotificationNone,
				false, false, null, "OBJECTID", "", "OBJECTID", "");
		
	}
	
	public static void main(String[] args) throws IOException{
		EngineInitializer.initializeEngine();
		final AoInitialize aoInit =new AoInitialize();
		try{
			aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
			
			create();
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			aoInit.shutdown();
		}

	}
}

⌨️ 快捷键说明

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