コード例 #1
0
        async public static Task <GeoJsonServiceFeatureClass> CreateInstance(GeoJsonServiceDataset dataset, geometryType geometryType)
        {
            var instance = new GeoJsonServiceFeatureClass(dataset);

            instance.SpatialReference = await dataset.GetSpatialReference();

            instance.GeometryType = geometryType;
            instance.Name         = $"{ dataset.DatasetName }-{ geometryType.ToString().ToLower() }";

            #region Loop all features for Fields

            var fields = new Fields();
            if (dataset.Source != null)
            {
                bool idIsInterger = false;
                var  features     = await dataset.Source.GetFeatures(geometryType);

                // mayby later...
                //if (features != null && features.Count() > 0)
                //{
                //    idIsInterger = features.Where(f => f != null && int.TryParse(f["id"]?.ToString(), out int intId))
                //                           .Count() == features.Count();
                //}

                foreach (var feature in features)
                {
                    foreach (var fieldValue in feature.Fields)
                    {
                        if (fields.FindField(fieldValue.Name) == null)
                        {
                            var val = fieldValue.Value;
                            if (fieldValue.Name == "id" && idIsInterger)
                            {
                                fields.Add(new Field(fieldValue.Name, FieldType.ID));
                            }
                            else if (val?.GetType() == typeof(int))
                            {
                                fields.Add(new Field(fieldValue.Name, FieldType.integer));
                            }
                            else if (val?.GetType() == typeof(double))
                            {
                                fields.Add(new Field(fieldValue.Name, FieldType.Double));
                            }
                            else
                            {
                                // ToDo: Check for Date?
                                fields.Add(new Field(fieldValue.Name, FieldType.String));
                            }
                        }
                    }
                }
            }
            instance.Fields = fields;

            #endregion

            return(instance);
        }
コード例 #2
0
        async public Task <IDataset2> EmptyCopy()
        {
            var dataset = new GeoJsonServiceDataset();
            await dataset.SetConnectionString(ConnectionString);

            await dataset.Open();

            return(dataset);
        }
コード例 #3
0
 private GeoJsonServiceFeatureClass(GeoJsonServiceDataset dataset)
 {
     _dataset = dataset;
 }