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

📄 createannotationfeatureclass.java.svn-base

📁 aresde 空间数据开发 例子
💻 SVN-BASE
字号:
import java.io.IOException;

import com.esri.arcgis.carto.AnnotateLayerPropertiesCollection;
import com.esri.arcgis.carto.AnnotationFeatureClassDescription;
import com.esri.arcgis.carto.AnnotationVBScriptEngine;
import com.esri.arcgis.carto.GraphicsLayerScale;
import com.esri.arcgis.carto.LabelEngineLayerProperties;
import com.esri.arcgis.datasourcesGDB.SdeWorkspaceFactory;
import com.esri.arcgis.display.IColor;
import com.esri.arcgis.display.IRgbColorProxy;
import com.esri.arcgis.display.RgbColor;
import com.esri.arcgis.display.SymbolCollection;
import com.esri.arcgis.display.TextSymbol;
import com.esri.arcgis.geodatabase.FeatureClass;
import com.esri.arcgis.geodatabase.Field;
import com.esri.arcgis.geodatabase.Fields;
import com.esri.arcgis.geodatabase.GeometryDef;
import com.esri.arcgis.geodatabase.IFeatureClass;
import com.esri.arcgis.geodatabase.IFeatureDataset;
import com.esri.arcgis.geodatabase.IFeatureWorkspace;
import com.esri.arcgis.geodatabase.IFeatureWorkspaceAnno;
import com.esri.arcgis.geodatabase.IFeatureWorkspaceAnnoProxy;
import com.esri.arcgis.geodatabase.IFieldEdit;
import com.esri.arcgis.geodatabase.IFieldsEdit;
import com.esri.arcgis.geodatabase.IGeometryDefEdit;
import com.esri.arcgis.geometry.ISpatialReference3;
import com.esri.arcgis.geometry.ISpatialReferenceFactory3;
import com.esri.arcgis.geometry.SpatialReferenceEnvironment;
import com.esri.arcgis.support.ms.stdole.StdFont;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.PropertySet;
import com.esri.arcgis.system.esriLicenseProductCode;
import com.esri.arcgis.system.esriUnits;


public class CreateAnnotationFeatureClass {
	
	public static 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();
		
		//连接SDE
		IFeatureWorkspace ifw=(IFeatureWorkspace)swf.open(propSet, 0);
		
		IFeatureClass featureClass=new FeatureClass(ifw.openFeatureClass("testDatasetTest1214"));
		
		//数值范围
		GraphicsLayerScale referenceScale = new GraphicsLayerScale();
		//单位
        referenceScale.setUnits(esriUnits.esriMeters);
        //比例 1: ***
        referenceScale.setReferenceScale(10);
        
        //样式集合
        SymbolCollection symbolCollection = new SymbolCollection();
        //字体样式
        TextSymbol textSymbol = new TextSymbol();
        //颜色参数
        RgbColor color=new RgbColor();
        color.setRed(0);
        color.setGreen(0);
        color.setBlue(0);
        //设置参数
        StdFont font = new StdFont();
        font.setName("SimSun");
        font.setBold(true);
        //font.
       
        //设置字体
        textSymbol.setFont(font);
       //字体大小不是通过IFont对象设置
        textSymbol.setSize(14);
        //字体颜色
        textSymbol.setColor(color);
        //textSymbol.set
        //textSymbol.
//        textSymbol.setAngle(0.0);
//        textSymbol.setRightToLeft(false);
//        textSymbol.setVerticalAlignment(esriTextVerticalAlignment.esriTVABaseline);
//        textSymbol.setHorizontalAlignment(esriTextHorizontalAlignment.esriTHAFull);
//        textSymbol.setCharacterSpacing(200.0);
//        textSymbol.setCase(esriTextCase.esriTCNormal);
        symbolCollection.setSymbolByRef(0, textSymbol);
        
        
        //设置与关联图层的关系
        LabelEngineLayerProperties annotationProperties = new LabelEngineLayerProperties();
        annotationProperties.setFeatureLinked(true);
        annotationProperties.setAddUnplacedToGraphicsContainer(false);
        annotationProperties.setCreateUnplacedElements(true);
        annotationProperties.setDisplayAnnotation(true);
        annotationProperties.setUseOutput(true);

        AnnotationFeatureClassDescription annotationFeatureClassDescription = new AnnotationFeatureClassDescription();
       // annotationFeatureClassDescription.
//        annotationProperties.setAnnotationMaximumScale(arg0);
//        annotationProperties.setAnnotationMinimumScale(arg0);
//        AnnotationJScriptEngine annotationExpressionEngine = new AnnotationJScriptEngine();
        AnnotationVBScriptEngine annotationExpressionEngine = new AnnotationVBScriptEngine();
        annotationProperties.setExpressionParserByRef(annotationExpressionEngine);
        // just show the first field for now, until I get this working
        annotationProperties.setExpression("[" + featureClass.getFields().getField(0).getAliasName() + "]");
        annotationProperties.setIsExpressionSimple(true);
        annotationProperties.setOffset(0.0);
        annotationProperties.setSymbolID(0);
        annotationProperties.setSymbolByRef(textSymbol);
        annotationProperties.setReferenceScale(referenceScale.getReferenceScale());
        annotationProperties.setUnits(referenceScale.getUnits());
        annotationProperties.setScaleRatio(1.0);

        AnnotateLayerPropertiesCollection annotateLayerPropertiesCollection = new AnnotateLayerPropertiesCollection();
        annotateLayerPropertiesCollection.add(annotationProperties);
        
        //获得Annotation的必要字段
        IFieldsEdit pFieldsEdit=new Fields(annotationFeatureClassDescription.getRequiredFields());
        IFieldEdit pFieldEdit = new Field();
        //添加自定义字段
        pFieldEdit.setName("SVGID");
        pFieldEdit.setType(com.esri.arcgis.geodatabase.esriFieldType.esriFieldTypeString);
        
        pFieldsEdit.addField(pFieldEdit);
        
        IFeatureWorkspaceAnno annotationWorkspace = new IFeatureWorkspaceAnnoProxy(ifw);
        
        /**
         * createAnnotationClass(java.lang.String name,
                                           IFields fields,
                                           IUID cLSID,
                                           IUID eXTCLSID,
                                           java.lang.String shapeFieldName,
                                           java.lang.String configKeyword,
                                           IFeatureDataset dstFeatureDataset,
                                           IFeatureClass srcFeatureClass,
                                           java.lang.Object annoProperties,
                                           java.lang.Object referenceScale,
                                           java.lang.Object symbolCollection,
                                           boolean autoCreate)
         *
         * dstFeatureDataset参数指定建到哪个Dataset下
         * srcFeatureClass参数指定与哪个FeatureClass关联
         * autoCreate指定当关联的FeatureClass添加新值时是否自动添加注释
         * */
        IFeatureClass annotationFeatureClass = annotationWorkspace.createAnnotationClass(
				featureClass.getAliasName() + "Annotation",
				pFieldsEdit,
				annotationFeatureClassDescription.getInstanceCLSID(),
				annotationFeatureClassDescription.getClassExtensionCLSID(),
				annotationFeatureClassDescription.getShapeFieldName(),
				"",
				featureClass.getFeatureDataset(),
				//featureClass,
				null,//null,
				annotateLayerPropertiesCollection,
				referenceScale,
				symbolCollection,
				true);
	}
	
	
	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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -