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