コード例 #1
0
ファイル: navGeoWriter.cs プロジェクト: bm98/dump-dbTool
        /// <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);
        }
コード例 #2
0
ファイル: navReader.cs プロジェクト: bm98/dump-dbTool
        /// <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);
        }
コード例 #3
0
ファイル: navReader.cs プロジェクト: bm98/dump-dbTool
        /// <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));
        }