/// <summary> /// Writes a GeoJson from the database /// </summary> /// <param name="db">The database</param> /// <param name="geojFile">the filename to write to</param> /// <returns>True ??!!</returns> public bool WriteGeoJson(navDatabase db, Stream geojOutStream, double rangeLimitNm = -1.0, double Lat = 0, double Lon = 0, NavTypes[] navTypes = null) { /* * { * "type": "FeatureCollection", * "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, * "features": [ * entry, entry * ] * } */ string head = $"{{\n\"type\": \"FeatureCollection\",\n" + $"\"crs\": {{ \"type\": \"name\", \"properties\": {{ \"name\": \"urn:ogc:def:crs:OGC:1.3:CRS84\" }} }}," + $"\"features\": ["; string foot = $"]\n}}"; using (var sw = new StreamWriter(geojOutStream, Encoding.UTF8)) { sw.WriteLine(head); if (rangeLimitNm > 0) { WriteFile(sw, db.GetSubtable(rangeLimitNm, Lat, Lon, navTypes)); } else { WriteFile(sw, db.GetTable( )); } sw.WriteLine(foot); } return(true); }
/// <summary> /// Reads one file to fill the db /// </summary> /// <param name="db">The navDatabase to fill</param> /// <param name="fName">The qualified filename</param> /// <returns>The result string, either empty or error</returns> private static string ReadDbFile(ref navDatabase db, string fName) { var icaoPre = Path.GetFileNameWithoutExtension(fName); string ret = ""; using (var sr = new StreamReader(fName)) { string buffer = sr.ReadLine( ); // header line buffer = sr.ReadLine( ); // header line 2 buffer = sr.ReadLine( ); while (!sr.EndOfStream) { if (buffer.StartsWith("99")) { break; } var rec = FromNative(buffer); if (rec != null && rec.IsValid) { ret += db.Add(rec); // collect adding information } buffer = sr.ReadLine( ); } // } return(ret); }
/// <summary> /// Reads the XPlane 11 earth_nav.dat file and populates the supplied database /// </summary> /// <param name="db">The navDatabase to fill</param> /// <param name="fName">The file to read</param> /// <returns>The result string, either empty or error</returns> public static string ReadDb(ref navDatabase db, string fName) { if (!File.Exists(fName)) { return($"File does not exist\n"); } return(ReadDbFile(ref db, fName)); }