示例#1
0
        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);
        }
示例#2
0
        async public Task <IDataset2> EmptyCopy()
        {
            var dataset = new CosmoDbDataset();
            await dataset.SetConnectionString(ConnectionString);

            await dataset.Open();

            return(dataset);
        }