private IFeatureClass createFeatureClass(IServerContext sc,IFeatureWorkspace fws, ISpatialReference spatialReference) throws Exception{
IFeatureClass fClass ;
IFields fields =(Fields)sc.createObject(Fields.getClsid());
IFieldsEdit fieldsEdit = (IFieldsEdit)fields;
fieldsEdit.setFieldCount(3);
//创建对象id字段
IField field = (Field)sc.createObject(Field.getClsid());
IFieldEdit fieldEdit = (IFieldEdit)field;
fieldEdit.setName("OBJECTID");
fieldEdit.setAliasName("OBJECTID");
fieldEdit.setType(esriFieldType.esriFieldTypeOID);
fieldsEdit.setFieldByRef(0, field);
//创建几何形状字段
IField field1 = (Field)sc.createObject(Field.getClsid());
fieldEdit = (IFieldEdit)field1;
//为形状字段建立几何定义
IGeometryDef geometryDef =(GeometryDef)sc.createObject(GeometryDef.getClsid());
IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
geometryDefEdit.setGeometryType(esriGeometryType.esriGeometryPoint);
geometryDefEdit.setGridCount(1);
geometryDefEdit.setGridSize(0, 0); //gridesize基于初次装载或者插入的features
geometryDefEdit.setHasM(false);
geometryDefEdit.setHasZ(false);
//配置空间参考,从feature dataset中继承
if (spatialReference != null) {
geometryDefEdit.setSpatialReferenceByRef(spatialReference);
}
//设置标准字段属性
fieldEdit.setName("SHAPE");
fieldEdit.setType(esriFieldType.esriFieldTypeGeometry) ;
fieldEdit.setGeometryDefByRef(geometryDef);
fieldEdit.setIsNullable(true);
fieldEdit.setRequired(true);
fieldsEdit.setFieldByRef(1, field1);
IField field2 = (Field)sc.createObject(Field.getClsid());
fieldEdit = (IFieldEdit)field2;
fieldEdit.setName("USERID");
fieldEdit.setAliasName("USERID");
fieldEdit.setEditable(true);
//fieldEdit.setIsNullable(false);
fieldEdit.setType(esriFieldType.esriFieldTypeString);
fieldsEdit.setFieldByRef(2, field2);
//通过指定的CLSID和EXTCLSID来创建一个feature class的描述对象
IFeatureClassDescription fcDesc = (FeatureClassDescription)sc.createObject(FeatureClassDescription.getClsid());
IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc;
fClass = fws.createFeatureClass("FeatureClass_temp", fields,
ocDesc.getInstanceCLSID(), ocDesc.getClassExtensionCLSID(),
esriFeatureType.esriFTSimple, "SHAPE", "");
return fClass;
}
分享到:
相关推荐
4. **执行查询**:使用FeatureLayer或FeatureClass的SelectByShape或SelectByAttribute方法,根据设置的查询参数选取符合条件的对象。 ```csharp featureLayer.SelectByShape(spatialFilter.Geometry, true, null);...
featureLayer.FeatureClass = featureClass; map.AddLayer(featureLayer); ``` 除了基本的地图操作,ArcObjects还提供了丰富的空间分析功能。例如,我们可以使用`IQueryFilter`进行查询,`IRelationshipClass`处理...
1. **地图对象模型**:ArcObject提供了一个层次化的地图对象模型,包括Map、Layer、FeatureClass、Feature等。这些对象代表了GIS中的核心概念,如地图、图层、矢量要素类和要素。通过操作这些对象,开发者可以实现...
ArcObject包含了一系列的对象模型,如Map、Layer、FeatureClass等,它们分别代表了地图、图层和要素类等GIS元素。通过编程语言调用这些对象的方法和属性,可以实现对GIS数据的读取、写入和操作。 在实践课程中,"AO...
然后,利用`IGeoFeature::putref_FeatureClass`关联特征类,通过`IGeoFeature::SetGeometryDirectly`设置几何,`IFeatureClass::Insert`插入新特征。 描述中提到的“简单的操作”可能包括编辑几何,更新属性,或者...
3. **ArcObjects SDK**:ArcObjects SDK包含了丰富的类库,这些类库对应了GIS中的各种对象,如Map、FeatureClass、FeatureLayer等。开发者需要熟悉这些类库,理解它们的功能和用法。 4. **地图对象模型**:ArcGIS的...
理解FeatureClass、FeatureLayer、Feature对象,以及如何执行SQL查询和空间查询。 **5. 地图渲染与符号化** 学习如何控制地图的视觉效果,包括设置比例尺、添加图层、调整符号系统、使用渲染器。理解不同类型的渲染...
接着,可以使用`FeatureClass`的`Query`方法进行数据查询,或者创建`FeatureCursor`来遍历和修改特征。 为了更深入地利用ArcObjects.jar,开发者需要熟悉Esri的GIS概念和术语,例如图层(Layer)、要素(Feature)...
这里我们使用了InMemoryWorkspaceFactory对象来创建一个内存工作空间,然后创建一个FeatureClass对象,并将其添加到工作空间中。 本文中,我们使用了ArcGIS Engine来开发生成剖面线的代码,但同样的方法也可以应用...