async static public Task <CosmoDbFeatureClass> Create(CosmoDbDataset dataset, Json.SpatialCollectionItem spatialCollectoinItem) { var fc = new CosmoDbFeatureClass(); fc.Dataset = dataset; fc.Name = spatialCollectoinItem.Name; if (spatialCollectoinItem.GeometryDef != null) { fc.HasZ = spatialCollectoinItem.GeometryDef.HasZ; fc.HasM = spatialCollectoinItem.GeometryDef.HasM; fc.GeometryType = spatialCollectoinItem.GeometryDef.GeometryType; fc.SpatialReference = dataset._spatialReference; // ToDo } var fields = new Fields(); if (spatialCollectoinItem.Fields != null) { foreach (var field in spatialCollectoinItem.Fields) { fields.Add(new Field() { name = field.Name, type = field.FieldType }); } } fc.Fields = fields; fc.CosmoDocumentClient = dataset._client; fc.CosmoDocumentCollection = dataset.GetFeatureCollection(fc.GeometryType); fc.Envelope = null; using (var cursor = new CosmoDbFeatureCursor(fc, new QueryFilter())) { IFeature feature = null; while ((feature = await cursor.NextFeature()) != null) { if (feature.Shape == null) { continue; } if (fc.Envelope == null) { fc.Envelope = feature.Shape.Envelope; } else { fc.Envelope.Union(feature.Shape.Envelope); } } } return(fc); }
async public Task <IDataset2> EmptyCopy() { var dataset = new CosmoDbDataset(); await dataset.SetConnectionString(ConnectionString); await dataset.Open(); return(dataset); }