From c972d4c0a48890f27b23e35bfe898b38c5fc4b54 Mon Sep 17 00:00:00 2001 From: Guillaume COURS Date: Thu, 27 Jul 2017 13:40:12 +0200 Subject: [PATCH 1/3] Change URL source --- FSActiveFires/MODISHotspots.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/FSActiveFires/MODISHotspots.cs b/FSActiveFires/MODISHotspots.cs index b677768..006ee7d 100644 --- a/FSActiveFires/MODISHotspots.cs +++ b/FSActiveFires/MODISHotspots.cs @@ -1,4 +1,4 @@ -using Catfood.Shapefile; +using Catfood.Shapefile; using System; using System.Collections.Generic; using System.Globalization; @@ -62,7 +62,7 @@ public void LoadData(string datasetFormatString) { } private string DownloadShapefileData(string datasetFormatString) { - string webUrl = string.Format(datasetFormatString, "shapes/zips", "zip"); + string webUrl = string.Format(datasetFormatString, "c6/shapes/zips", "zip"); string zipFileName = webUrl.Substring(webUrl.LastIndexOf('/') + 1, webUrl.Length - webUrl.LastIndexOf('/') - 1); string zipFilePath = Path.Combine(tempDirectory, zipFileName); string shapefilePath = zipFilePath.Substring(0, zipFilePath.Length - 3) + "shp"; @@ -95,7 +95,7 @@ private string DownloadShapefileData(string datasetFormatString) { } private string DownloadCsvData(string datasetFormatString) { - string webUrl = string.Format(datasetFormatString, "text", "csv"); + string webUrl = string.Format(datasetFormatString, "c6/text", "csv"); string fileName = webUrl.Substring(webUrl.LastIndexOf('/') + 1, webUrl.Length - webUrl.LastIndexOf('/') - 1); string filePath = Path.Combine(tempDirectory, fileName); From e68ba5dc98231acd4fe44ff7109281c9fa8cc7af Mon Sep 17 00:00:00 2001 From: Guillaume COURS Date: Fri, 28 Jul 2017 16:10:10 +0200 Subject: [PATCH 2/3] URL change --- FSActiveFires/MODISHotspots.cs | 123 +++++++++++++++++++++------------ 1 file changed, 77 insertions(+), 46 deletions(-) diff --git a/FSActiveFires/MODISHotspots.cs b/FSActiveFires/MODISHotspots.cs index 006ee7d..00990e4 100644 --- a/FSActiveFires/MODISHotspots.cs +++ b/FSActiveFires/MODISHotspots.cs @@ -6,78 +6,91 @@ using System.IO.Compression; using System.Net; -namespace FSActiveFires { - class MODISHotspots { +namespace FSActiveFires +{ + class MODISHotspots + { public Dictionary datasets { get; private set; } public HashSet hotspots { get; private set; } private string tempDirectory; private Log log; - public MODISHotspots() { + public MODISHotspots() + { hotspots = new HashSet(); datasets = new Dictionary(); log = Log.Instance; - datasets.Add("World", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Global_24h.{1}"); - datasets.Add("Alaska", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Alaska_24h.{1}"); - datasets.Add("Australia and New Zealand", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Australia_and_New_Zealand_24h.{1}"); - datasets.Add("Canada", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Canada_24h.{1}"); - datasets.Add("Central America", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Central_America_24h.{1}"); - datasets.Add("Europe", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Europe_24h.{1}"); - datasets.Add("Northern and Central Africa", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Northern_and_Central_Africa_24h.{1}"); - datasets.Add("Russia and Asia", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Russia_and_Asia_24h.{1}"); - datasets.Add("South America", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/South_America_24h.{1}"); - datasets.Add("South Asia", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/South_Asia_24h.{1}"); - datasets.Add("South East Asia", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/SouthEast_Asia_24h.{1}"); - datasets.Add("Southern Africa", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/Southern_Africa_24h.{1}"); - datasets.Add("U.S.A. (Conterminous) and Hawaii", "https://firms.modaps.eosdis.nasa.gov/active_fire/{0}/USA_contiguous_and_Hawaii_24h.{1}"); + datasets.Add("World", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Global_24h.{1}"); + datasets.Add("Alaska", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Alaska_24h.{1}"); + datasets.Add("Australia and New Zealand", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Australia_and_New_Zealand_24h.{1}"); + datasets.Add("Canada", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Canada_24h.{1}"); + datasets.Add("Central America", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Central_America_24h.{1}"); + datasets.Add("Europe", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Europe_24h.{1}"); + datasets.Add("Northern and Central Africa", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Northern_and_Central_Africa_24h.{1}"); + datasets.Add("Russia and Asia", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Russia_and_Asia_24h.{1}"); + datasets.Add("South America", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_South_America_24h.{1}"); + datasets.Add("South Asia", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_South_Asia_24h.{1}"); + datasets.Add("South East Asia", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_SouthEast_Asia_24h.{1}"); + datasets.Add("Southern Africa", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_Southern_Africa_24h.{1}"); + datasets.Add("U.S.A. (Conterminous) and Hawaii", "https://firms.modaps.eosdis.nasa.gov/active_fire/c6/{0}/MODIS_C6_USA_contiguous_and_Hawaii_24h.{1}"); tempDirectory = CreateTemporaryDirectory(); } - private string CreateTemporaryDirectory() { + private string CreateTemporaryDirectory() + { string tempDirectory = Path.Combine(Path.GetTempPath(), "FSActiveFires", Path.GetRandomFileName()); log.Info(string.Format("Create temporary directory: {0}", tempDirectory)); Directory.CreateDirectory(tempDirectory); return tempDirectory; } - public void RemoveTemporaryDirectory() { + public void RemoveTemporaryDirectory() + { string tempDirectoryRoot = Path.Combine(Path.GetTempPath(), "FSActiveFires"); - if (Directory.Exists(tempDirectoryRoot)) { + if (Directory.Exists(tempDirectoryRoot)) + { log.Info(string.Format("Delete temporary directory: {0}", tempDirectoryRoot)); Directory.Delete(tempDirectoryRoot, true); } } - public void LoadData(string datasetFormatString) { - try { + public void LoadData(string datasetFormatString) + { + try + { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; LoadShapefileHotspots(DownloadShapefileData(datasetFormatString)); } - catch (System.Data.OleDb.OleDbException ex) { + catch (System.Data.OleDb.OleDbException ex) + { log.Warning(string.Format("Unable to parse shapefile; attempting to use CSV.\r\n{0}", ex.ToString())); LoadCsvHotspots(DownloadCsvData(datasetFormatString)); } } - private string DownloadShapefileData(string datasetFormatString) { - string webUrl = string.Format(datasetFormatString, "c6/shapes/zips", "zip"); + private string DownloadShapefileData(string datasetFormatString) + { + string webUrl = string.Format(datasetFormatString, "shapes/zips", "zip"); string zipFileName = webUrl.Substring(webUrl.LastIndexOf('/') + 1, webUrl.Length - webUrl.LastIndexOf('/') - 1); string zipFilePath = Path.Combine(tempDirectory, zipFileName); string shapefilePath = zipFilePath.Substring(0, zipFilePath.Length - 3) + "shp"; - if (File.Exists(shapefilePath)) { + if (File.Exists(shapefilePath)) + { log.Info(string.Format("SHP already exists: {0}", shapefilePath)); return shapefilePath; } - using (WebClient webClient = new WebClient()) { + using (WebClient webClient = new WebClient()) + { log.Info(string.Format("Download ZIP: {0} -> {1}", webUrl, zipFilePath)); webClient.DownloadFile(webUrl, zipFilePath); } - if (!File.Exists(zipFilePath)) { + if (!File.Exists(zipFilePath)) + { throw new FileNotFoundException("ZIP file was not downloaded."); } @@ -86,44 +99,56 @@ private string DownloadShapefileData(string datasetFormatString) { log.Info(string.Format("Delete ZIP: {0}", zipFilePath)); File.Delete(zipFilePath); - if (File.Exists(shapefilePath)) { + if (File.Exists(shapefilePath)) + { return shapefilePath; } - else { + else + { throw new FileNotFoundException("Shapefile was not downloaded or extracted."); } } - private string DownloadCsvData(string datasetFormatString) { - string webUrl = string.Format(datasetFormatString, "c6/text", "csv"); + private string DownloadCsvData(string datasetFormatString) + { + string webUrl = string.Format(datasetFormatString, "text", "csv"); string fileName = webUrl.Substring(webUrl.LastIndexOf('/') + 1, webUrl.Length - webUrl.LastIndexOf('/') - 1); string filePath = Path.Combine(tempDirectory, fileName); - if (File.Exists(filePath)) { + if (File.Exists(filePath)) + { log.Info(string.Format("CSV already exists: {0}", filePath)); return filePath; } - using (WebClient webClient = new WebClient()) { + using (WebClient webClient = new WebClient()) + { log.Info(string.Format("Download CSV: {0} -> {1}", webUrl, filePath)); webClient.DownloadFile(webUrl, filePath); } - if (File.Exists(filePath)) { + if (File.Exists(filePath)) + { return filePath; } - else { + else + { throw new FileNotFoundException("CSV file was not downloaded."); } } - private void LoadShapefileHotspots(string shapefilePath) { + private void LoadShapefileHotspots(string shapefilePath) + { log.Info(string.Format("Parsing shapefile: {0}", shapefilePath)); - using (Shapefile shp = new Shapefile(shapefilePath)) { - foreach (Shape shape in shp) { - if (shape.Type == ShapeType.Point) { + using (Shapefile shp = new Shapefile(shapefilePath)) + { + foreach (Shape shape in shp) + { + if (shape.Type == ShapeType.Point) + { int confidence; - if (int.TryParse(shape.GetMetadata("confidence"), out confidence)) { + if (int.TryParse(shape.GetMetadata("confidence"), out confidence)) + { ShapePoint shapePoint = shape as ShapePoint; hotspots.Add(new Hotspot(shapePoint.Point.Y, shapePoint.Point.X, confidence)); } @@ -133,25 +158,31 @@ private void LoadShapefileHotspots(string shapefilePath) { log.Info(string.Format("Cumulative hotspots parsed: {0}", hotspots.Count)); } - private void LoadCsvHotspots(string csvPath) { + private void LoadCsvHotspots(string csvPath) + { log.Info(string.Format("Parsing CSV: {0}", csvPath)); - using (StreamReader sr = new StreamReader(csvPath)) { + using (StreamReader sr = new StreamReader(csvPath)) + { string line = sr.ReadLine(); var fields = line.Split(','); - if (fields[0].Equals("latitude") && fields[1].Equals("longitude") && fields[8].Equals("confidence")) { - while ((line = sr.ReadLine()) != null) { + if (fields[0].Equals("latitude") && fields[1].Equals("longitude") && fields[8].Equals("confidence")) + { + while ((line = sr.ReadLine()) != null) + { fields = line.Split(','); double lat; double lon; int confidence; if (double.TryParse(fields[0], NumberStyles.Number, CultureInfo.InvariantCulture, out lat) && double.TryParse(fields[1], NumberStyles.Number, CultureInfo.InvariantCulture, out lon) && - int.TryParse(fields[8], NumberStyles.Number, CultureInfo.InvariantCulture, out confidence)) { + int.TryParse(fields[8], NumberStyles.Number, CultureInfo.InvariantCulture, out confidence)) + { hotspots.Add(new Hotspot(lat, lon, confidence)); } } } - else { + else + { throw new FileFormatException("Unexpected data format."); } } From 2c63511902eb7cb9036964d46f04591998a5dde4 Mon Sep 17 00:00:00 2001 From: Guillaume COURS Date: Mon, 31 Jul 2017 10:01:45 +0200 Subject: [PATCH 3/3] DLL --- BeatlesBlog.SimConnect.dll | Bin 0 -> 75776 bytes Catfood.Shapefile.dll | Bin 0 -> 17920 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 BeatlesBlog.SimConnect.dll create mode 100644 Catfood.Shapefile.dll diff --git a/BeatlesBlog.SimConnect.dll b/BeatlesBlog.SimConnect.dll new file mode 100644 index 0000000000000000000000000000000000000000..5c51eb6ba943c8cb91722ed89f58c184176a5a5a GIT binary patch literal 75776 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 literal 0 HcmV?d00001 diff --git a/Catfood.Shapefile.dll b/Catfood.Shapefile.dll new file mode 100644 index 0000000000000000000000000000000000000000..4a382a62335918c6b447fa1bed5764339df0f916 GIT binary patch literal 17920 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 a`@gUM4=u1y|34!>&VRJ<-`9UR3;Zi9_PzlC literal 0 HcmV?d00001