async static public Task <IFeatureClass> Create(SdeDataset dataset, string name, string multiVersionedViewName) { var featureClass = new SdeFeatureClass(); if (dataset.RepoProvider == null) { throw new Exception("FeatureClass: Repository not initialized"); } featureClass._name = name; featureClass._geomType = await dataset.RepoProvider.FeatureClassGeometryType(featureClass); featureClass._fields = await dataset.RepoProvider.FeatureClassFields(featureClass); featureClass._idfield = featureClass._fields.ToEnumerable() .Where(f => f.type == FieldType.ID) .FirstOrDefault()?.name; featureClass._shapefield = featureClass._fields.ToEnumerable() .Where(f => f.type == FieldType.Shape) .FirstOrDefault()?.name; if (!String.IsNullOrEmpty(featureClass._shapefield)) { switch (featureClass._geomType) { case geometryType.Polygon: featureClass._fields.Add(new Field($"{ featureClass._shapefield }.STArea()", FieldType.Double)); featureClass._fields.Add(new Field($"{ featureClass._shapefield }.STLength()", FieldType.Double)); break; case geometryType.Polyline: featureClass._fields.Add(new Field($"{ featureClass._shapefield }.STLength()", FieldType.Double)); break; } } featureClass._dataset = dataset; if (featureClass._sRef == null && await dataset.RepoProvider.FeatureClassSpatialReference(featureClass) > 0) { featureClass._sRef = gView.Framework.Geometry.SpatialReference.FromID("epsg:" + await dataset.RepoProvider.FeatureClassSpatialReference(featureClass)); } featureClass.MultiVersionedViewName = multiVersionedViewName; return(featureClass); }
public SdeFeatureClass(SdeDataset dataset, string name) { if (dataset.RepoProvider == null) { throw new Exception("FeatureClass: Repository not initialized"); } _name = name; _geomType = dataset.RepoProvider.FeatureClassGeometryType(this); _fields = dataset.RepoProvider.FeatureClassFields(this); _idfield = _fields.ToEnumerable().Where(f => f.type == FieldType.ID).FirstOrDefault()?.name; _shapefield = _fields.ToEnumerable().Where(f => f.type == FieldType.Shape).FirstOrDefault()?.name; _dataset = dataset; if (_sRef == null && dataset.RepoProvider.FeatureClassSpatialReference(this) > 0) { _sRef = gView.Framework.Geometry.SpatialReference.FromID("epsg:" + dataset.RepoProvider.FeatureClassSpatialReference(this)); } }