Beispiel #1
0
        public void Find_Features_That_Are_Not_Implemented()
        {
            //arrange.
            _featureFileRepository.Setup(r => r.GetFeatureFilePaths())
            .Returns(new List <string> {
                "path1", "path2"
            })
            .Verifiable();

            _featureClassInfoRepository.Setup(r => r.GetFeatureClassesInfo())
            .Returns(new List <FeatureClassInfo> {
                FeatureClassInfo.FromFeatureClassType(typeof(MyFeature))
            })
            .Verifiable();

            var expectedFeature = new GherkinFeatureBuilder().Build();

            _featureFileRepository.Setup(r => r.GetByFilePath("path2"))
            .Returns(new FeatureFile(new Gherkin.Ast.GherkinDocument(expectedFeature, null)))
            .Verifiable();

            //act.
            var features = _sut.Discover();

            //assert.
            _featureFileRepository.Verify();
            _featureClassInfoRepository.Verify();
            _featureFileRepository.Verify(r => r.GetByFilePath("path1"), Times.Never);

            Assert.NotNull(features);
            Assert.Single(features);
            Assert.Same(expectedFeature, features[0]);
        }
Beispiel #2
0
        private int GetImageIndex(StandardItem sItem)
        {
            switch (sItem.Type)
            {
            case enumItemType.Standard:
                return(1);

            case enumItemType.FeatureDataset:
                return(2);

            case enumItemType.FeatureClass:
                FeatureClassInfo fcInfo = sItem.Details as FeatureClassInfo;
                if (fcInfo == null)
                {
                    return(8);
                }
                switch (fcInfo.ShapeType)
                {
                case esriGeometryType.esriGeometryPoint:
                    return(4);

                case esriGeometryType.esriGeometryPolyline:
                    return(5);

                case esriGeometryType.esriGeometryPolygon:
                    return(6);
                }
                break;

            case enumItemType.Table:
                return(13);
            }
            return(8);
        }
Beispiel #3
0
        public static StandardItem Import(IFeatureClass fClass)
        {
            if (fClass == null)
            {
                return(null);
            }

            StandardItem sItem = new StandardItem();

            sItem.Type = enumItemType.FeatureClass;
            sItem.ID   = Guid.NewGuid().ToString("N");

            FeatureClassInfo fcInfo = new FeatureClassInfo();

            fcInfo.ID               = Guid.NewGuid().ToString("N");
            fcInfo.Name             = (fClass as IDataset).Name;
            fcInfo.AliasName        = fClass.AliasName;
            fcInfo.SpatialReference = (fClass as IGeoDataset).SpatialReference;
            fcInfo.FeatureType      = esriFeatureType.esriFTSimple;
            fcInfo.ShapeFieldName   = fClass.ShapeFieldName;
            fcInfo.ShapeType        = fClass.ShapeType;

            IList <FieldInfo> fList = new List <FieldInfo>();

            for (int i = 0; i < fClass.Fields.FieldCount; i++)
            {
                IField field = fClass.Fields.get_Field(i);
                if (field.Type == esriFieldType.esriFieldTypeOID)
                {
                    continue;
                }

                if (field.Type == esriFieldType.esriFieldTypeGeometry)
                {
                    IGeometryDef geoDef = field.GeometryDef;
                    fcInfo.AvgNumPoints = geoDef.AvgNumPoints;
                    fcInfo.GridCount    = geoDef.GridCount;
                    fcInfo.HasM         = geoDef.HasM;
                    fcInfo.HasZ         = geoDef.HasZ;
                    continue;
                }
                FieldInfo fInfo = FromEsriField(field);
                fInfo.Layer = fcInfo.ID;
                fList.Add(fInfo);
            }
            fcInfo.FieldsInfo = fList;

            sItem.Name      = fcInfo.Name;
            sItem.AliasName = fcInfo.AliasName;
            sItem.SpatialReferenceString = fcInfo.SpatialReferenceString;
            sItem.Details = fcInfo;

            return(sItem);
        }
Beispiel #4
0
        public static IFeatureClass CreateFeatureClass(IFeatureDataset fds,FeatureClassInfo fcInfo)
        {
            if (fds == null || fcInfo == null)
                return null;

            if ((fds.Workspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureClass, fcInfo.Name))
            {
                ((fds.Workspace as IFeatureWorkspace).OpenFeatureClass(fcInfo.Name) as IDataset).Delete();
            }
            return fds.CreateFeatureClass(fcInfo.Name, CreateFields(fcInfo), null, null, fcInfo.FeatureType, fcInfo.ShapeFieldName, null);
        }
Beispiel #5
0
        public static IFeatureClass CreateFeatureClass(IFeatureDataset fds, FeatureClassInfo fcInfo)
        {
            if (fds == null || fcInfo == null)
            {
                return(null);
            }

            if ((fds.Workspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureClass, fcInfo.Name))
            {
                ((fds.Workspace as IFeatureWorkspace).OpenFeatureClass(fcInfo.Name) as IDataset).Delete();
            }
            return(fds.CreateFeatureClass(fcInfo.Name, CreateFields(fcInfo), null, null, fcInfo.FeatureType, fcInfo.ShapeFieldName, null));
        }
Beispiel #6
0
        public static IFields CreateFields(FeatureClassInfo fcInfo)
        {
            if (fcInfo == null )
                return null;

            IFieldsEdit fields = CreateFields(fcInfo as TableInfo) as IFieldsEdit;
            if (fields == null)
                fields = new FieldsClass();

            fields.AddField(CreateShapeField(fcInfo));

            return fields;
        }
Beispiel #7
0
        public static IField CreateShapeField(FeatureClassInfo fcInfo)
        {
            IFieldEdit shpField = new FieldClass();
            shpField.Name_2=string.IsNullOrWhiteSpace(fcInfo.ShapeFieldName)?"Shape":fcInfo.ShapeFieldName;
            shpField.Type_2 = esriFieldType.esriFieldTypeGeometry;
            IGeometryDefEdit geoDef=new GeometryDefClass();
            geoDef.AvgNumPoints_2 = fcInfo.AvgNumPoints;
            geoDef.GeometryType_2=fcInfo.ShapeType;
            geoDef.GridCount_2=fcInfo.GridCount;
            geoDef.HasM_2 = fcInfo.HasM;
            geoDef.HasZ_2 = fcInfo.HasZ;
            geoDef.SpatialReference_2 = fcInfo.SpatialReference;

            shpField.GeometryDef_2=geoDef;

            return shpField;
        }
Beispiel #8
0
        public static IFields CreateFields(FeatureClassInfo fcInfo)
        {
            if (fcInfo == null)
            {
                return(null);
            }

            IFieldsEdit fields = CreateFields(fcInfo as TableInfo) as IFieldsEdit;

            if (fields == null)
            {
                fields = new FieldsClass();
            }

            fields.AddField(CreateShapeField(fcInfo));

            return(fields);
        }
Beispiel #9
0
        public override void OnClick()
        {
            if (m_FrmAdd == null || m_FrmAdd.IsDisposed)
            {
                m_FrmAdd          = new FrmFeatureClassInfo();
                m_FrmAdd.EditAble = true;
                m_FrmAdd.Text     = "新建矢量图层";
            }
            FeatureClassInfo fcInfo = new FeatureClassInfo();

            fcInfo.Name               = "NewFeatureLayer";
            fcInfo.ShapeFieldName     = "Shape";
            m_FrmAdd.FeatureClassInfo = fcInfo;
            if (m_FrmAdd.ShowDialog() == DialogResult.OK)
            {
                fcInfo = m_FrmAdd.FeatureClassInfo;

                StandardItem sItem = new StandardItem();
                sItem.Name      = fcInfo.Name;
                sItem.AliasName = fcInfo.AliasName;
                sItem.SpatialReferenceString = fcInfo.SpatialReferenceString;
                sItem.Type    = enumItemType.FeatureClass;
                sItem.Parent  = m_Manager.SelectedItem;
                sItem.Details = fcInfo;
                Environment.NhibernateHelper.SaveObject(sItem);

                fcInfo.Parent = sItem.ID;
                Environment.NhibernateHelper.SaveObject(fcInfo);

                foreach (FieldInfo fInfo in fcInfo.FieldsInfo)
                {
                    fInfo.Layer = fcInfo.ID;
                    Environment.NhibernateHelper.SaveObject(fInfo);
                }



                Environment.NhibernateHelper.Flush();

                Environment.NhibernateHelper.RefreshObject(m_Manager.SelectedItem, enumLockMode.None);
                this.m_Manager.Refresh();
            }
        }
Beispiel #10
0
        public static IField CreateShapeField(FeatureClassInfo fcInfo)
        {
            IFieldEdit shpField = new FieldClass();

            shpField.Name_2 = string.IsNullOrWhiteSpace(fcInfo.ShapeFieldName)?"Shape":fcInfo.ShapeFieldName;
            shpField.Type_2 = esriFieldType.esriFieldTypeGeometry;
            IGeometryDefEdit geoDef = new GeometryDefClass();

            geoDef.AvgNumPoints_2     = fcInfo.AvgNumPoints;
            geoDef.GeometryType_2     = fcInfo.ShapeType;
            geoDef.GridCount_2        = fcInfo.GridCount;
            geoDef.HasM_2             = fcInfo.HasM;
            geoDef.HasZ_2             = fcInfo.HasZ;
            geoDef.SpatialReference_2 = fcInfo.SpatialReference;


            shpField.GeometryDef_2 = geoDef;

            return(shpField);
        }
Beispiel #11
0
        public static bool SaveStandard(StandardItem sItem)
        {
            try
            {
                Environment.NhibernateHelper.SaveObject(sItem);
                if (sItem.Details != null)
                {
                    if (sItem.Details is FeatureClassInfo)
                    {
                        FeatureClassInfo fcInfo = sItem.Details as FeatureClassInfo;
                        fcInfo.Parent = sItem.ID;
                        Environment.NhibernateHelper.SaveObject(fcInfo);

                        if (fcInfo.FieldsInfo != null)
                        {
                            foreach (FieldInfo fInfo in fcInfo.FieldsInfo)
                            {
                                fInfo.Layer = fcInfo.ID;
                                Environment.NhibernateHelper.SaveObject(fInfo);
                            }
                        }
                    }
                }

                if (sItem.SubItems != null)
                {
                    foreach (StandardItem subItem in sItem.SubItems)
                    {
                        SaveStandard(subItem);
                    }
                }
                Environment.NhibernateHelper.Flush();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Beispiel #12
0
        public static StandardItem Import(IFeatureClass fClass)
        {
            if (fClass == null)
                return null;

            StandardItem sItem = new StandardItem();
            sItem.Type = enumItemType.FeatureClass;
            sItem.ID = Guid.NewGuid().ToString("N");

            FeatureClassInfo fcInfo = new FeatureClassInfo();
            fcInfo.ID = Guid.NewGuid().ToString("N");
            fcInfo.Name=(fClass as IDataset).Name;
            fcInfo.AliasName=fClass.AliasName;
            fcInfo.SpatialReference=(fClass as IGeoDataset).SpatialReference;
            fcInfo.FeatureType = esriFeatureType.esriFTSimple;
            fcInfo.ShapeFieldName = fClass.ShapeFieldName;
            fcInfo.ShapeType = fClass.ShapeType;

            IList<FieldInfo> fList = new List<FieldInfo>();
            for(int i=0;i<fClass.Fields.FieldCount;i++)
            {
                IField field = fClass.Fields.get_Field(i);
                if (field.Type == esriFieldType.esriFieldTypeOID)
                    continue;

                if (field.Type == esriFieldType.esriFieldTypeGeometry)
                {
                    IGeometryDef geoDef = field.GeometryDef;
                    fcInfo.AvgNumPoints = geoDef.AvgNumPoints;
                    fcInfo.GridCount = geoDef.GridCount;
                    fcInfo.HasM = geoDef.HasM;
                    fcInfo.HasZ = geoDef.HasZ;
                    continue;
                }
                FieldInfo fInfo = FromEsriField(field);
                fInfo.Layer = fcInfo.ID;
                fList.Add(fInfo);
            }
            fcInfo.FieldsInfo = fList;

            sItem.Name = fcInfo.Name;
            sItem.AliasName = fcInfo.AliasName;
            sItem.SpatialReferenceString = fcInfo.SpatialReferenceString;
            sItem.Details = fcInfo;

            return sItem;
        }