📄 createfeatureclass.java.svn-base
字号:
import java.io.IOException;
import com.esri.arcgis.carto.AnnotationFeature;
import com.esri.arcgis.datasourcesGDB.SdeWorkspaceFactory;
import com.esri.arcgis.geodatabase.FeatureClassDescription;
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.IFieldEdit;
import com.esri.arcgis.geodatabase.IFieldsEdit;
import com.esri.arcgis.geodatabase.IGeometryDefEdit;
import com.esri.arcgis.geometry.ISpatialReference;
import com.esri.arcgis.geometry.ISpatialReference3;
import com.esri.arcgis.geometry.ISpatialReferenceFactory3;
import com.esri.arcgis.geometry.SpatialReferenceEnvironment;
import com.esri.arcgis.geometry.UnknownCoordinateSystem;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.PropertySet;
import com.esri.arcgis.system.UID;
import com.esri.arcgis.system.esriLicenseProductCode;
public class CreateFeatureClass{
private 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);
//得到指定的FeatureDataset
IFeatureDataset ifd= ifw.openFeatureDataset("DatasetTest1214");
//geometry列属性定义
//assign the spatial reference
/*ISpatialReference isr= new UnknownCoordinateSystem();
isr.setDomain(0, 21474.83645, 0, 21474.83645);
isr.setFalseOriginAndUnits(0, 0, 100000);*/
ISpatialReferenceFactory3 irf3 = new SpatialReferenceEnvironment();
ISpatialReference3 isr = (ISpatialReference3) irf3
.createGeographicCoordinateSystem(com.esri.arcgis.geometry.esriSRGeoCSType.esriSRGeoCS_Beijing1954);
//设为Line Feature
IGeometryDefEdit igde=new GeometryDef();
igde.setGeometryType(com.esri.arcgis.geometry.esriGeometryType.esriGeometryPolyline);
igde.setSpatialReferenceByRef(isr);
/*
//栅格设置
igde.setGridCount(1);
igde.setGridSize(0, 10);
igde.setAvgNumPoints(2);
igde.setHasM(false);//M值存放管道,线路数据
igde.setHasZ(false);//Z值存放3D数据
*/
//设置列集合
IFieldsEdit pFieldsEdit = new Fields();
//设置列
IFieldEdit pFieldEdit = new Field();
IFieldEdit shp = new Field();
//列名
pFieldEdit.setName("ObjectID");
//类型
pFieldEdit.setType(com.esri.arcgis.geodatabase.esriFieldType.esriFieldTypeOID);
shp.setName("SHP");
shp.setType(com.esri.arcgis.geodatabase.esriFieldType.esriFieldTypeGeometry);
//Geometry类型的列需要定义Geometry的类型.点/线/面 等等
shp.setGeometryDefByRef(igde);
//将列加入到列集合
pFieldsEdit.addField(pFieldEdit);
pFieldsEdit.addField(shp);
FeatureClassDescription fcd=new FeatureClassDescription();
/**
* 设置FeatureClass的cLSID
*
* value与
* createFeatureClass(String name,IFields fields,IUID cLSID,IUID eXTCLSID,
* int featureType,String shapeFieldName,String configKeyword)
* 的 featureType 参数对应关系
*
* esriFTSimple -- esriGeoDatabase.Feature
* esriFTSimpleJunction -- esriGeoDatabase.SimpleJunctionFeature
* esriFTComplexJunction -- esriGeoDatabase.ComplexJunctionFeature
* esriFTSimpleEdge -- esriGeoDatabase.SimpleEdgeFeature
* esriFTComplexEdge -- esriGeoDatabase.ComplexEdgeFeature
* esriFTAnnotation -- 无,注记层不用setValue
*
* */
UID id=new UID();
id.setValue("esriGeoDatabase.Feature");
//id.setValue("");
//下面循环取出Geometry列的列名,如果已知列名可以不做这个循环
String fieldName="";
for(int i=0;i<pFieldsEdit.getFieldCount();i++){
if(pFieldsEdit.getField(i).getType()==com.esri.arcgis.geodatabase.esriFieldType.esriFieldTypeGeometry){
fieldName=pFieldsEdit.getField(i).getName();
}
}
/**
* createFeatureClass(..)方法中的shapeFieldName参数
* 必须与IFieldsEdit中设置的Geometry类型列的列名相同
* */
IFeatureClass ifc=ifd.createFeatureClass("testDatasetTest1214", pFieldsEdit, fcd.getInstanceCLSID(), fcd.getClassExtensionCLSID(),
com.esri.arcgis.geodatabase.esriFeatureType.esriFTSimple, fieldName, "");
/* IFeatureClass ifc=ifd.createFeatureClass("testAnnotation", pFieldsEdit, id, null,
com.esri.arcgis.geodatabase.esriFeatureType.esriFTSimple, fieldName, "");
*/
}
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 + -