public async Task <IActionResult> Edit(int id, [Bind("Id,MODISProductId,Name,Index")] MODISDataSet mODISDataSet) { if (id != mODISDataSet.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(mODISDataSet); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!MODISDataSetExists(mODISDataSet.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["MODISProductId"] = new SelectList(_context.MODISProduct.OrderBy(m => m.Name), "Id", "Name", mODISDataSet.MODISProductId); return(View(mODISDataSet)); }
public async Task <IActionResult> Extract( int MODISDataSetId, string Folder) { string CMDPath = Startup.Configuration["CMDPath"].ToString(), DownloadDir = Startup.Configuration["ModisDownloadDirectory"].ToString(), folder = Path.Combine(DownloadDir, Folder), ClipShape = Path.Combine(DownloadDir, Startup.Configuration["ClipShape"].ToString()); MODISDataSet mODISDataSet = _context.MODISDataSet .Include(m => m.MODISProduct) .Include(m => m.MODISProduct.MODISSource) .FirstOrDefault(m => m.Id == MODISDataSetId); Thread ModisExtractThread = new Thread(() => ModisExtract( folder, mODISDataSet, CMDPath, ClipShape)); ModisExtractThread.Start(); ViewData["MODISDataSetId"] = new SelectList(_context.MODISDataSet.OrderBy(m => m.Name), "Id", "Name"); ViewData["Folder"] = new SelectList(Directory.EnumerateDirectories(Startup.Configuration["ModisDownloadDirectory"].ToString())); ViewBag.ExtractStarted = _localizer["ExtractStarted"]; return(View()); }
public async Task <IActionResult> Create([Bind("Id,MODISProductId,Name,Index")] MODISDataSet mODISDataSet) { if (ModelState.IsValid) { _context.Add(mODISDataSet); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["MODISProductId"] = new SelectList(_context.MODISProduct.OrderBy(m => m.Name), "Id", "Name", mODISDataSet.MODISProductId); return(View(mODISDataSet)); }
public void ModisExtract( string Folder, MODISDataSet MODISDataSet, string CMDPath, // ClipShape - full path string ClipShape) { // mosaic string modisListFile = Directory.EnumerateFiles(Folder, "*listfile*", SearchOption.TopDirectoryOnly).FirstOrDefault(), index = MODISDataSet.Index.ToString().PadLeft(2, '0'); string arguments = $"-o {MODISDataSet.MODISProduct.MODISSource.Name}_" + $"{MODISDataSet.MODISProduct.Name.Replace(".", "")}_" + $"B{index}_" + $"{MODISDataSet.Name}.tif" + $" -s \"{MODISDataSet.Index.ToString()}\"" + $" \"{modisListFile}\""; GDALExecute( CMDPath, "modis_mosaic.py", Folder, arguments); // convert foreach (string tif in Directory.EnumerateFiles(Folder, "*tif", SearchOption.TopDirectoryOnly)) { string xml = tif + ".xml", tifReprojected = $"{Path.GetFileNameWithoutExtension(tif)}_3857"; arguments = $"-v -s \"( 1 )\" -o {tifReprojected} -e 3857 \"{tif}\""; GDALExecute( CMDPath, "modis_convert.py", Folder, arguments); System.IO.File.Delete(tif); System.IO.File.Delete(xml); } // clip foreach (string tif in Directory.EnumerateFiles(Folder, "*tif", SearchOption.TopDirectoryOnly)) { string tifToClip = Path.GetFileName(tif), tifClipped = $"{Path.GetFileNameWithoutExtension(tif)}_KZ.tif"; // 0 (MODIS) with crop and compress arguments = $"-overwrite -dstnodata -3000 -co COMPRESS=LZW -cutline \"{ClipShape}\" -crop_to_cutline {tifToClip} {tifClipped}"; GDALExecute( CMDPath, "gdalwarp", Folder, arguments); System.IO.File.Delete(tif); } }
public async Task <IActionResult> Download( DateTime DateTimeStart, DateTime DateTimeFinish, int MODISDataSetId, string User, string Password) { // folder template: createdate_MOLT_MOD13Q1.006_B01_NDVI_20000218_20001213 // delete old (> 7 days) folder string DownloadDir = Startup.Configuration["ModisDownloadDirectory"].ToString(); foreach (string folderOld in Directory.EnumerateDirectories(DownloadDir, "!*")) { string dateS = folderOld.Substring(0, 6); int year = Convert.ToInt32(dateS.Substring(0, 4)), month = Convert.ToInt32(dateS.Substring(4, 2)), day = Convert.ToInt32(dateS.Substring(6, 2)); DateTime dateTimeFolder = new DateTime(year, month, day); if (dateTimeFolder > DateTime.Today.AddDays(-7)) { try { Directory.Delete(folderOld, true); } catch { } } } // create subfolder MODISDataSet mODISDataSet = _context.MODISDataSet .Include(m => m.MODISProduct) .Include(m => m.MODISProduct.MODISSource) .FirstOrDefault(m => m.Id == MODISDataSetId); string index = mODISDataSet.Index.ToString().PadLeft(2, '0'), folder = $"{DateTime.Today.ToString("yyyyMMdd")}_" + $"{mODISDataSet.MODISProduct.MODISSource.Name}_" + $"{mODISDataSet.MODISProduct.Name}_" + $"B{index}_" + $"{mODISDataSet.Name}_" + $"{DateTimeStart.ToString("yyyyMMdd")}_" + $"{DateTimeFinish.ToString("yyyyMMdd")}"; folder = Path.Combine(DownloadDir, folder); if (Directory.Exists(folder)) { try { Directory.Delete(folder, true); } catch { } } Directory.CreateDirectory(folder); string CMDPath = Startup.Configuration["CMDPath"].ToString(); Thread ModisDownloadThread = new Thread(() => ModisDownload( DateTimeStart, DateTimeFinish, folder, User, Password, mODISDataSet.MODISProduct.Name, CMDPath)); ModisDownloadThread.Start(); ViewData["MODISDataSetId"] = new SelectList(_context.MODISDataSet.OrderBy(m => m.Name), "Id", "Name"); ViewBag.DownloadStarted = _localizer["DownloadStarted"]; ViewBag.FilesWillBeDownloadedToTheFolder = string.Format(_localizer["FilesWillBeDownloadedToTheFolder"], folder); return(View()); }