近日碰到在执行feature.shape=geo的操作时会报geometry没有z值(the geometry has no z values)以及geometry的z值为空(the geometry has no null values)的错误,这通常是因为使用的数据源是用其它软件导出的,默认是有z值的,但是arcgis默认是没有z值的,以致产生了矛盾。然而网上找的许多解决方案并不完善,因此优化后解决方案如下:
确保创建的字段是有z值的
///获取参考几何信息
public static IGeometryDef GetGeometryDef(IFeatureClass featureClass)
{
var fieldName = featureClass.ShapeFieldName;
var index = featureClass.FindField(fieldName);
return featureClass.Fields.Field[index].GeometryDef;
}
///创建字段
public IFields CreateFields(esriGeometryType type,IGeometryDef geometryDef)
{
IFields fields = new FieldsClass();
var fieldsEdit = fields as IFieldsEdit;
#region objectid