Beispiel #1
0
 private void SetDriver(string path)
 {
     using (var driver = gdalDataset.GetDriver())
     {
         if (GdalHelper.IsCreateCopyOnlySupported(driver))
         {
             log.WarnFormat("Datasource is readonly: {0}", path);
             return;
         }
         //cannot directly create dataset. check if dataset can be created by copying from another set
         if (GdalHelper.IsCreateCopySupported(driver))
         {
             if (gdalDataset.RasterCount > 1000)
             {
                 log.WarnFormat("Using in memory-driver with large dataset can yield unexpected results.");
             }
             log.WarnFormat("Using in memory-driver with large dataset can yield unexpected results.");
         }
         else
         {
             using (var gdalDriver = Gdal.GetDriverByName("MEM"))
             {
                 var oldGdalDataSet = gdalDataset;
                 gdalDataset = gdalDriver.CreateCopy(path, gdalDataset, 0, new string[] { }, null, null);
                 oldGdalDataSet.Dispose();
             }
         }
     }
 }
Beispiel #2
0
 private void CopyCurrentDatasetFromAddedCoverage(GdalFunctionStore gdalFunctionStore, Driver gdalDriver)
 {
     gdalDataset = gdalDriver.CreateCopy(path, gdalFunctionStore.gdalDataset, 0, new string[] { }, null, "Copy");
     //substitute driver by in-memory driver in case driver is read-only
     if (GdalHelper.IsCreateCopyOnlySupported(gdalDriver))
     {
         using (var inMemoryDriver = Gdal.GetDriverByName("MEM"))
         {
             var oldGdalDataSet = gdalDataset;
             //create in-memory dataset with a copy of the original data.
             gdalDataset = inMemoryDriver.CreateCopy(path, gdalFunctionStore.gdalDataset, 0, new string[] { },
                                                     null, null);
             oldGdalDataSet.Dispose();
         }
     }
 }