示例#1
0
        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);
        }
示例#2
0
        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));
            }
        }