示例#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();
             }
         }
     }
 }
示例#2
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();
                 }
             }
         }
     }
 }
示例#3
0
        private static void WriteGdalDatasetToFile(string path, Dataset gdalDataset)
        {
            log.Debug("Recreating file and copying data from in-memory datasource.");

            Driver targetDatasetDriver = GetTargetDatasetDriver(path);

            using (targetDatasetDriver)
            {
                if (GdalHelper.IsCreateCopySupported(targetDatasetDriver))
                {
                    targetDatasetDriver.CreateCopy(path, gdalDataset, 0, new string[] { }, null, null)
                    .Dispose();
                }
            }
            GC.Collect();
        }