public FeatureDataRow <TTarget> ConvertRow(IFeatureDataRecord source) { if (typeof(TSource) == typeof(TTarget) && source is FeatureDataRow) { return(source as FeatureDataRow <TTarget>); } TTarget oid = _conversionDelegate((TSource)source.GetOid()); FeatureDataRow <TTarget> row = _target.NewRow(oid); object[] vals = new object[source.FieldCount]; vals[_oidColumnIndex] = oid; source.GetValues(vals); row.ItemArray = vals; //row.Geometry = source.Geometry.IsValid ? source.Geometry : source.Geometry.Buffer(0.0); row.Geometry = source.Geometry; return(row); }
public int GetValues(object[] values) { return(record.GetValues(values)); }
// FIX_PERF private static void setFeatureRowFromIFeatureDataRecord(IFeatureDataRecord srcFeature, FeatureDataRow targetFeature, ColumnMapper columnMapper, ICoordinateTransformation transform, IGeometryFactory geoFactory) { //for (Int32 i = 0; i < srcFeature.FieldCount; i++) //{ // String colName = srcFeature.GetName(i); // targetFeature[colName] = srcFeature.GetValue(i); //} if (transform != null)//jd: to prevent case when transform is null - probably because a test was done earlier. need to check { if (srcFeature.Geometry.SpatialReference.EqualParams(transform.Target)) { transform = null; } } srcFeature.GetValues(columnMapper.SourceValues); targetFeature.ItemArray = columnMapper.Map(); targetFeature.Geometry = transform == null ? srcFeature.Geometry : transform.Transform(srcFeature.Geometry, geoFactory); targetFeature.IsFullyLoaded = targetFeature.IsFullyLoaded || srcFeature.IsFullyLoaded; }