예제 #1
0
 private void SetDriver(string path)
 {
     using (var driver = gdalDataset.GetDriver())
     {
         if (!GdalHelper.IsCreateSupported(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))
         {
             //TODO: fix this criteria
             if (GetDatasetSize() < 1000000)
             {
                 log.Debug("Using in-memory driver to facilitate writing to datasource");
                 //log.WarnFormat("Using in memory-driver with large dataset can yield unexpected results.");
                 using (var gdalDriver = Gdal.GetDriverByName("MEM"))
                 {
                     var oldGdalDataSet = gdalDataset;
                     gdalDataset = gdalDriver.CreateCopy(path, gdalDataset, 0, new string[] { }, null, null);
                     oldGdalDataSet.Dispose();
                 }
             }
         }
     }
 }
예제 #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.IsCreateSupported(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();
         }
     }
 }