示例#1
0
 /// <summary>
 /// 實例化對象
 /// </summary>
 /// <param name="p_Parent"></param>
 public FlyDialog(FlyDialog p_Parent = null)
 {
     try
     {
         this.m_Text    = "";
         this.m_Content = "";
         this.m_Cinfo   = new CreateInfo
         {
             width        = 600,
             height       = 400,
             min_width    = 200,
             min_height   = 100,
             hicon        = IntPtr.Zero,
             border_style = CefBorderStyle.bsSizeable
         };
         this.m_MouseDragRects = new List <MouseDragRect>();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
示例#2
0
        /// <summary>
        /// Create new drawing context.
        /// </summary>
        /// <param name="createInfo">Create info.</param>
        /// <param name="disposables">Array of elements to dispose after drawing has finished.</param>
        public DrawingContextImpl(CreateInfo createInfo, params IDisposable[] disposables)
        {
            _dpi = createInfo.Dpi;
            _visualBrushRenderer    = createInfo.VisualBrushRenderer;
            _disposables            = disposables;
            _canTextUseLcdRendering = !createInfo.DisableTextLcdRendering;

            Canvas = createInfo.Canvas;

            if (Canvas == null)
            {
                throw new ArgumentException("Invalid create info - no Canvas provided", nameof(createInfo));
            }

            if (!_dpi.NearlyEquals(SkiaPlatform.DefaultDpi))
            {
                _postTransform =
                    Matrix.CreateScale(_dpi.X / SkiaPlatform.DefaultDpi.X, _dpi.Y / SkiaPlatform.DefaultDpi.Y);
            }

            Transform = Matrix.Identity;
        }
        /// <summary>
        /// Create new surface render target.
        /// </summary>
        /// <param name="createInfo">Create info.</param>
        public SurfaceRenderTarget(CreateInfo createInfo)
        {
            PixelSize = new PixelSize(createInfo.Width, createInfo.Height);
            Dpi       = createInfo.Dpi;

            _disableLcdRendering = createInfo.DisableTextLcdRendering;
            _grContext           = createInfo.GrContext;
            _gpu = createInfo.Gpu;

            _surface = _gpu?.TryCreateSurface(PixelSize);
            if (_surface == null)
            {
                _surface = new SkiaSurfaceWrapper(CreateSurface(createInfo.GrContext, PixelSize.Width, PixelSize.Height,
                                                                createInfo.Format));
            }

            _canvas = _surface?.Surface.Canvas;

            if (_surface == null || _canvas == null)
            {
                throw new InvalidOperationException("Failed to create Skia render target surface");
            }
        }
示例#4
0
    public Dictionary <int, CreateInfo> loadCreateInfo()
    {
        if (m_bCreateInfoLoadState == false)                               // 생성정보를 로드한 이력이 없으면 불러온다.
        {
            Debug.Log("CSV 파일 캐릭터 생성 정보 불러오기");
            TextAsset text    = Resources.Load <TextAsset>("Data/CreateInfo"); // 리소스 로드를 통해 테이블을 로드한다.
            string    content = text.text;                                     // content안에는 1줄로 데이터가 쭉 나열되어 있다.
            string[]  line    = content.Split('\n');                           // string을 '\n' 기준으로 분리해서 line배열에 넣는다.
            for (int i = 2; i < line.Length - 1; i++)                          // 0 ~ 1번 라인은 테이블 타입 구분 용도로 사용한다. 2번째 라인부터 라인 갯수만큼 테이블 생성 (마지막NULL 한칸 제외해서 -1라인)
            {
                string[]   column = line[i].Split(',');                        // 열의 정보값을 ','로 구분해 column배열에 넣는다. SCV파일은 ,로 구분되어 있으므로
                CreateInfo table  = new CreateInfo();                          // SCV순서와 구조체 데이터 형식이 일치하여야 함
                int        key    = 0;                                         // key값이 될 슬롯 번호
                int        index  = 0;                                         // 0번째 열부터 시작

                key = int.Parse(column[index++]);
                table.m_strUserName    = column[index++].Replace("\r", "");
                table.m_eCharacterType = (CHARACTER_TYPE)(int.Parse(column[index++]));
                m_dicCreateInfo.Add(key, table);
            }
            m_bCreateInfoLoadState = true;                                 // 로드 이력을 true로 변환
        }
        return(m_dicCreateInfo);                                           // 딕셔너리 반환
    }
        public override bool process(string url, string filename, string source)
        {
            bool ret = true;

            LibSys.StatusBar.Trace("IP: FileStreetsTripsCsv:process() filename=" + filename);

            int wpCount = 0;
            int lineno  = 0;

            try
            {
                string     line;
                int        state      = 0;
                double     zoneShift  = 0.0d;
                CreateInfo createInfo = new CreateInfo();                       // we will recycle it in place, filling every time.

                StreamReader stream = new StreamReader(filename);

                while ((line = stream.ReadLine()) != null)
                {
                    lineno++;
                    try
                    {
                        switch (state)
                        {
                        case 0:                                   // look for "Name,Latitude,Longitude,Name 2,URL,Type"
                            // Name,Latitude,Longitude,Name 2,URL,Type
                            if (line.StartsWith("Name,Latitude,Longitude"))
                            {
                                state = 1;
                                //LibSys.StatusBar.Trace("IP: FileStreetsTripsCsv:process() state 1 filename=" + filename);
                            }
                            break;

                        case 1:                                   // read WPT numpoints lines like:
                            // Active Pass Lighthouse,48.873472,-123.290139,"","",""
                            char[] sep = new Char[1] {
                                ','
                            };
                            string[] split = line.Split(sep);

                            if (split.Length < 3)
                            {
                                // possible empty line or something. Reset to searcing for header again.
                                state = 0;
                                break;
                            }

                            string name     = stripQuotes(split[0]);
                            double lat      = ParseCoord(split[1]);
                            double lng      = ParseCoord(split[2]);
                            string name2    = split.Length > 3 ? stripQuotes(split[3]) : null;
                            string wurl     = split.Length > 4 ? stripQuotes(split[4]) : null;
                            string type     = split.Length > 5 ? stripQuotes(split[5]) : null;
                            double elev     = split.Length > 6 ? ParseCoord(split[6]) : 0.0d;
                            string desc     = split.Length > 7 ? stripQuotes(split[7]) : null;
                            string stime    = split.Length > 8 ? stripQuotes(split[8]) : null;
                            string track    = split.Length > 9 ? stripQuotes(split[9]) : null;
                            string speed    = split.Length > 10 ? stripQuotes(split[10]) : null;
                            string odometer = split.Length > 11 ? stripQuotes(split[11]) : null;
                            bool   found    = split.Length > 12 ? ("true".Equals(stripQuotes(split[12]).ToLower()) || "yes".Equals(stripQuotes(split[12]).ToLower())) : false;

                            string strLiveObjectType = "wpt";
                            switch (type)
                            {
                            case "geocache":
                                strLiveObjectType = type;
                                break;

                            case "trkpt":
                            case "rtept":
                                if (desc == null && track != null)
                                {
                                    desc = track;
                                }
                                if (name == null && name2 == null && stime != null)
                                {
                                    name2 = stime;
                                }
                                strLiveObjectType = type;
                                break;
                            }

                            createInfo.init(strLiveObjectType);
                            createInfo.lat  = lat;
                            createInfo.lng  = lng;
                            createInfo.elev = elev;
                            if (name2 != null)
                            {
                                createInfo.urlName = name2;
                            }
                            if (desc != null)
                            {
                                createInfo.desc = desc;
                            }
                            if (wurl != null)
                            {
                                createInfo.url = wurl;
                            }
                            if (name != null)
                            {
                                createInfo.name = name;
                            }
                            if (type != null)
                            {
                                createInfo.typeExtra = type;
                            }
                            if (stime != null && stime.Length >= 4)
                            {
                                try
                                {
                                    createInfo.dateTime = Convert.ToDateTime(stime);
                                }
                                catch {}
                            }

                            createInfo.source = source;

                            m_insertWaypoint(createInfo);
                            wpCount++;
                            break;
                        }
                    }
                    catch (Exception ee)
                    {
                        LibSys.StatusBar.Error("FileStreetsTripsCsv:process():  file=" + filename + " line=" + lineno + " " + ee.Message);
                    }
                }
            }
            catch (Exception eee)
            {
                LibSys.StatusBar.Error("FileStreetsTripsCsv:process(): " + eee.Message);
                ret = false;
            }
            //LibSys.StatusBar.Trace("OK: FileStreetsTripsCsv:process() filename=" + filename + " lines=" + lineno + " waypoints=" + wpCount);
            return(ret);
        }
示例#6
0
        public override bool process(string url, string filename, string source)
        {
            bool ret = true;

            LibSys.StatusBar.Trace("IP: FilePlainWpt:process() filename=" + filename);

            int wpCount = 0;
            int lineno  = 0;

            try
            {
                string     line;
                int        state      = 0;
                int        numpoints  = 0;
                CreateInfo createInfo = new CreateInfo();                       // we will recycle it in place, filling every time.

                StreamReader stream = new StreamReader(filename);

                while ((line = stream.ReadLine()) != null)
                {
                    lineno++;
                    try
                    {
                        switch (state)
                        {
                        case 0:                                   // look for [WAYPOINTS]
                            if (line.StartsWith("[WAYPOINTS]"))
                            {
                                state = 2;
                                //LibSys.StatusBar.Trace("IP: FilePlainWpt:process() state 2 filename=" + filename);
                            }
                            if (line.StartsWith("[ROUTES]"))
                            {
                                state = 3;
                                //LibSys.StatusBar.Trace("IP: FilePlainWpt:process() state 3 filename=" + filename);
                                break;
                            }
                            break;

                        case 2:                                   // look for "NUMPOINTS=" for wpts
                        case 3:                                   // look for "NUMPOINTS=" for routes
                            if (line.StartsWith("NUMPOINTS="))
                            {
                                state *= 2;
                                string sNumpoints = line.Substring("NUMPOINTS=".Length);
                                numpoints = Convert.ToInt32(sNumpoints);
                                if (numpoints <= 0)
                                {
                                    state = 0;
                                }
                                //LibSys.StatusBar.Trace("IP: FilePlainWpt:process() state " + state + " numpoints=" + numpoints + " filename=" + filename);
                            }
                            break;

                        case 4:                                   // read WPT numpoints lines like:
                            // WPT1=1,5052.677,N,00002.217,E,0000164,M,ME164-,Cliffe Hill ,a
                            if (line.StartsWith("WPT"))
                            {
                                char[] sep = new Char[1] {
                                    ','
                                };
                                string[] split = line.Split(sep);

                                double lat = Convert.ToDouble(split[1]) / 100.0d;
                                double lng = Convert.ToDouble(split[3]) / 100.0d;

                                createInfo.init("wpt");
                                createInfo.setLat("" + lat + split[2].ToLower());
                                createInfo.setLng("" + lng + split[4].ToLower());
                                createInfo.setElev(split[5]);
                                createInfo.typeExtra = "waypoint";
                                createInfo.source    = source;
                                createInfo.name      = split[8];

                                m_insertWaypoint(createInfo);
                                wpCount++;
                                numpoints--;
                                if (numpoints == 0)
                                {
                                    state = 0;                                                  // look for command again
                                }
                            }
                            break;

                        case 6:                                   // read ROUTE numpoints lines like:
                            numpoints--;
                            if (numpoints == 0)
                            {
                                state = 0;                                              // look for command again
                            }
                            break;
                        }
                    }
                    catch (Exception ee)
                    {
                        LibSys.StatusBar.Error("FilePlainWpt:process():  file=" + filename + " line=" + lineno + " " + ee.Message);
                    }
                }
            }
            catch (Exception eee)
            {
                LibSys.StatusBar.Error("FilePlainWpt:process(): " + eee.Message);
                ret = false;
            }
            //LibSys.StatusBar.Trace("OK: FilePlainWpt:process() filename=" + filename + " lines=" + lineno + " waypoints=" + wpCount);
            return(ret);
        }
示例#7
0
        public static void processApiCall(string strArgs)
        {
            ArrayList files  = new ArrayList();                 // of string
            bool      doMove = false;

            char[]   splitter = { '|' };
            string[] args     = strArgs.Split(splitter);
            GeoCoord pos      = PictureManager.This.CameraManager.Location.Clone();

            switch (args[0])
            {
            case "api":                                 // something like "api|cmd|data...."
                switch (args[1])
                {
                case "refresh":
                    PictureManager.This.CameraManager.ProcessCameraMove();
                    break;

                case "resetzoom":
                    WaypointsCache.resetBoundaries();
                    break;

                case "dozoom":
                    PictureManager.This.CameraManager.zoomToCorners();
                    break;

                case "newwpt":
                {
                    double   lat       = Convert.ToDouble(args[2]);
                    double   lng       = Convert.ToDouble(args[3]);
                    double   elev      = Convert.ToDouble(args[4]);
                    DateTime dateTime  = Convert.ToDateTime(args[5]);
                    string   name      = args[6];                                       // like "GC12345"
                    string   urlName   = args[7];                                       // like "Mike's cache"
                    string   type      = args[8];                                       // like "geocache"
                    string   typeExtra = args[9];                                       // like "Geocache Found"
                    string   sym       = args[10];                                      // like "Geocache"
                    long     trackid   = Convert.ToInt64(args[11]);                     // -1 is none, -2 - last track created
                    if (trackid == -2)
                    {
                        trackid = Project.trackId;
                    }
                    string url        = args[12];                                       // can be empty
                    string descr      = args[13];                                       // can be empty
                    string source     = args[14];                                       // can be empty
                    bool   keepInView = "true".Equals(args[15].ToLower());

                    CreateInfo ci = new CreateInfo();

                    ci.init(type);

                    ci.comment  = "";
                    ci.dateTime = dateTime;
                    ci.desc     = descr;
                    ci.elev     = elev;
                    ci.id       = trackid;
                    ci.lat      = lat;
                    ci.lng      = lng;
                    //ci.magn = 0.0d;
                    ci.name      = name;
                    ci.source    = source;
                    ci.sym       = sym;
                    ci.typeExtra = typeExtra;
                    ci.url       = url;
                    ci.urlName   = urlName;

                    WaypointsCache.insertWaypoint(ci);
                    if (keepInView)
                    {
                        GeoCoord loc = new GeoCoord(lng, lat);
                        PictureManager.This.CameraManager.keepInView(loc);
                    }
                }
                break;

                case "delwpt":
                {
                    string name    = args[2];                                           // like "GC12345"
                    string urlName = args[3];                                           // like "Mike's cache"
                    string source  = args[4];

                    if (name.Length > 0)
                    {
                        WaypointsCache.RemoveWaypointByName(name);
                    }
                    else if (urlName.Length > 0)
                    {
                        WaypointsCache.RemoveWaypointByUrlname(urlName);
                    }
                    else if (source.Length > 0)
                    {
                        WaypointsCache.RemoveWaypointsBySource(source);
                    }

                    //PictureManager.This.CameraManager.ProcessCameraMove();
                }
                break;

                case "newtrk":
                {
                    string trackName = args[2];                                                 // like "trip home"
                    string type      = args[3];                                                 // like "trk" or "rte"
                    string source    = args[4];                                                 // can be empty

                    CreateInfo ci = new CreateInfo();

                    Project.trackId++;

                    ci.init(type);
                    ci.name   = trackName;
                    ci.id     = Project.trackId;
                    ci.source = source;

                    WaypointsCache.insertWaypoint(ci);
                }
                break;

                case "deltrk":                                  // or route
                {
                    string name   = args[2];                    // like "track45"			- if empty, use source
                    string source = args[3];                    // can delete by source		- if empty, delete the last one

                    if (name.Length > 0)
                    {
                        WaypointsCache.RemoveTracksByName(name);
                    }
                    else if (source.Length > 0)
                    {
                        WaypointsCache.RemoveTracksBySource(source);
                    }
                    else
                    {
                        // move ID pointer to the highest yet existing track/route:
                        while (Project.trackId > 0 && WaypointsCache.getTrackById(Project.trackId) == null)
                        {
                            Project.trackId--;
                        }

                        if (Project.trackId >= 0)
                        {
                            WaypointsCache.RemoveTrackById(Project.trackId);

                            // move ID pointer to the highest yet existing track/route:
                            while (Project.trackId > 0 && WaypointsCache.getTrackById(Project.trackId) == null)
                            {
                                Project.trackId--;
                            }
                        }
                    }

                    PictureManager.This.CameraManager.ProcessCameraMove();
                }
                break;

                case "newvehicle":
                {
                    double   lat        = Convert.ToDouble(args[2]);
                    double   lng        = Convert.ToDouble(args[3]);
                    double   elev       = Convert.ToDouble(args[4]);
                    DateTime dateTime   = args[5].Length > 0 ? Convert.ToDateTime(args[5]) : Project.localToZulu(DateTime.Now);
                    string   name       = args[6];                                                              // like "My Chevy"
                    string   sym        = args[7];                                                              // like "1" "2"...  or empty
                    string   url        = args[8];                                                              // can be empty
                    string   source     = args[9];                                                              // can be empty
                    string   desc       = args[10];                                                             // can be empty
                    bool     keepInView = "true".Equals(args[11].ToLower());
                    bool     doTrackLog = "true".Equals(args[12].ToLower());

                    GeoCoord loc = new GeoCoord(lng, lat, elev);

                    GpsRealTimeData rtData = new GpsRealTimeData();
                    rtData.location = loc;
                    rtData.fix      = 2;
                    rtData.time     = dateTime;

                    VehicleGps vehicle = new VehicleGps(rtData, name, sym, source, url, desc, doTrackLog);                              // also adds to VehicleCache
                    vehicle.KeepInView = keepInView;
                    VehiclesCache.addVehicle(vehicle);
                }
                break;

                case "movevehicle":
                {
                    double   lat        = Convert.ToDouble(args[2]);
                    double   lng        = Convert.ToDouble(args[3]);
                    double   elev       = Convert.ToDouble(args[4]);
                    DateTime dateTime   = args[5].Length > 0 ? Convert.ToDateTime(args[5]) : Project.localToZulu(DateTime.Now);
                    string   name       = args[6];                                                              // like "My Chevy"
                    string   sym        = args[7];                                                              // like "1" "2"...  or empty
                    string   url        = args[8];                                                              // can be empty
                    string   source     = args[9];                                                              // can be empty
                    string   desc       = args[10];                                                             // can be empty
                    bool     keepInView = "true".Equals(args[11].ToLower());
                    bool     doTrackLog = "true".Equals(args[12].ToLower());

                    GeoCoord loc = new GeoCoord(lng, lat, elev);

                    GpsRealTimeData rtData = new GpsRealTimeData();
                    rtData.location = loc;
                    rtData.fix      = 2;
                    rtData.time     = dateTime;

                    VehicleGps vehicle = (VehicleGps)VehiclesCache.getVehicleByName(name);
                    if (vehicle != null)
                    {
                        if (url.Length > 0)
                        {
                            vehicle.Url = url;
                        }
                        if (sym.Length > 0)
                        {
                            vehicle.Sym = sym;
                            vehicle.setImage(sym);
                        }
                        if (desc.Length > 0)
                        {
                            vehicle.Desc = desc;
                        }
                        vehicle.KeepInView = keepInView;
                        vehicle.doTrackLog = doTrackLog;
                        vehicle.ProcessMove(rtData);
                    }
                }
                break;

                case "delvehicle":
                {
                    string name   = args[2];                                                                    // like "My Chevy" or empty
                    string source = args[3];                                                                    // can be empty

                    VehicleGps vehicle = (VehicleGps)VehiclesCache.getVehicleByName(name);
                    if (vehicle != null)
                    {
                        bool wasTracking = vehicle.doTrackLog;
                        VehiclesCache.deleteVehicle(vehicle);                                   // takes care of removing it from LayerVehicle
                        if (wasTracking)
                        {
                            PictureManager.This.CameraManager.ProcessCameraMove();                                      // refresh to have track endpoints
                        }
                    }
                }
                break;

                case "exporttofile":
                {
                    string fileName = args[2];

                    int waypointCount = 0;
                    int trkpointCount = 0;
                    int tracksCount   = 0;

                    FileAndZipIO.saveGpx(fileName, WaypointsCache.TracksAll, true,
                                         WaypointsCache.WaypointsAll, true, out waypointCount, out trkpointCount, out tracksCount);

                    if (waypointCount > 0 || trkpointCount > 0)
                    {
                        LibSys.StatusBar.Trace("OK: " + waypointCount + " waypoints and " + trkpointCount + " legs saved to file " + fileName);
                    }
                    else
                    {
                        LibSys.StatusBar.Error("failed to save to file (0 waypoints, 0 legs): " + fileName);
                    }
                }
                break;
                }
                break;

            default:                            // regular command-line style messages - lon, lat, elev, map, file

                foreach (string arg in args)
                {
                    if (arg.StartsWith("/"))
                    {
#if DEBUG
                        LibSys.StatusBar.Trace("option: '" + arg + "'");
#endif
                        try
                        {
                            if (arg.ToLower().StartsWith("/lat="))
                            {
                                double lat = Convert.ToDouble(arg.Substring(5));
                                if (lat < 90.0d && lat > -90.0d)
                                {
                                    pos.Lat = lat;
                                    doMove  = true;
                                }
                            }
                            else if (arg.ToLower().StartsWith("/lon="))
                            {
                                double lon = Convert.ToDouble(arg.Substring(5));
                                if (lon < 180.0d && lon > -180.0d)
                                {
                                    pos.Lng = lon;
                                    doMove  = true;
                                }
                            }
                            else if (arg.ToLower().StartsWith("/elev="))
                            {
                                double elev = Convert.ToDouble(arg.Substring(6));
                                if (elev < Project.CAMERA_HEIGHT_MAX * 1000.0d && elev > Project.CAMERA_HEIGHT_MIN_DEFAULT * 1000.0d)
                                {
                                    pos.Elev = elev;
                                    doMove   = true;
                                }
                            }
                            else if (arg.ToLower().StartsWith("/map="))
                            {
                                string mode = arg.Substring(5);
                                Project.mainCommand.setMapMode(mode);
                                doMove = true;
                            }
                        }
                        catch (Exception ee)
                        {
                            string message = "argument '" + arg + "' - wrong format (" + ee.Message + ")";
                            LibSys.StatusBar.Error(message);
                            Project.ErrorBox(null, message);
                        }
                    }
                    else
                    {
#if DEBUG
                        LibSys.StatusBar.Trace("file: '" + arg + "'");
#endif
                        files.Add(arg);
                    }
                }

                if (files.Count > 0)
                {
                    // similar to drag&drop:
                    Cursor.Current = Cursors.WaitCursor;
                    Project.mainForm.Focus();
                    Project.mainForm.BringToFront();

                    try
                    {
                        string[] fileNames = new string[files.Count];

                        int ii = 0;
                        foreach (string fileName in files)
                        {
                            fileNames[ii] = fileName;
                            ii++;
                        }

                        bool anySuccess = FileAndZipIO.readFiles(fileNames);

                        if (anySuccess)                                 // we need to zoom into whole set of dropped files, or refresh in case of JPG
                        {
                            Project.mainCommand.wptEnabled(true);
                            if (!PictureManager.This.CameraManager.zoomToCorners())
                            {
                                PictureManager.This.CameraManager.ProcessCameraMove();                                          // nowhere to zoom in - just refresh
                            }
                        }
                    }
                    catch
                    {
                        LibSys.StatusBar.Trace("* API: cannot accept arguments '" + strArgs + "'");
                    }
                    Cursor.Current = Cursors.Default;
                }
                break;
            }                   // end switch

            if (doMove)
            {
                PictureManager.This.CameraManager.Location = pos;                               // calls ProcesCameraMove()
            }
        }
示例#8
0
 private void bufferWaypoint(CreateInfo createInfo)
 {
     wptBuffer.Add(createInfo);
 }
示例#9
0
        // xmlDoc must be Load'ed; can throw exceptions
        protected bool processGpx(string url, XmlDocument xmlDoc, string source)
        {
            bool ret = true;

            XmlNodeList waypointNodes = xmlDoc.DocumentElement.ChildNodes;             //.SelectNodes("/gpx/wpt"); - this don't work

#if DEBUG
            LibSys.StatusBar.Trace("IP: FileGpx:process() first level nodeCount=" + waypointNodes.Count);
#endif


            /*
             *      <gpx
             *      version="1.0"
             *      creator="EasyGPS 1.1.9 - http://www.topografix.com"
             *      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             *      xmlns="http://www.topografix.com/GPX/1/0"
             *      xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/1"
             *      xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.topografix.com/GPX/Private/TopoGrafix/0/1 http://www.topografix.com/GPX/Private/TopoGrafix/0/1/topografix.xsd">
             *      <time>2002-10-04T18:49:55Z</time>
             *      <bounds minlat="25.061783" minlon="-123.003111" maxlat="50.982883" maxlon="121.640267"/>
             *      <wpt lat="33.575106480" lon="-117.735883651">
             *              <ele>159.703613</ele>
             *              <time>2002-10-04T18:47:47Z</time>
             *              <name><![CDATA[001]]></name>
             *              <cmt><![CDATA[29-AUG-02 11:21:24PM]]></cmt>
             *              <desc><![CDATA[001]]></desc>
             *              <sym>Dot</sym>
             *              <type><![CDATA[Dot]]></type>
             *      </wpt>
             *      <rte>
             *              <name><![CDATA[HOME TO CNTRYC]]></name>
             *              <number>1</number>
             *              <topografix:color>ff0000</topografix:color>
             *              <rtept lat="33.574991229" lon="-117.736144077">
             *                      <time>2002-10-11T05:34:36Z</time>
             *                      <name><![CDATA[HOME]]></name>
             *                      <cmt><![CDATA[AURORA]]></cmt>
             *                      <desc><![CDATA[HOME]]></desc>
             *                      <sym>House</sym>
             *                      <type><![CDATA[Residence]]></type>
             *              </rtept>
             *      </rte>
             *      <trk>
             *              <name><![CDATA[ACTIVE LOG]]></name>
             *              <number>1</number>
             *              <topografix:color>ff0000</topografix:color>
             *              <trkseg>
             *                      <trkpt lat="33.570749483" lon="-117.723665938">
             *                              <ele>106.363037</ele>
             *                              <time>2002-10-11T04:32:08Z</time>
             *                              <sym>Waypoint</sym>
             *                      </trkpt>
             *                      <trkpt lat="33.571032289" lon="-117.722491633">
             *                              <ele>99.153076</ele>
             *                              <time>2002-10-11T04:32:18Z</time>
             *                              <sym>Waypoint</sym>
             *                      </trkpt>
             *              </trkseg>
             *      </trk>
             *      </gpx>
             */

            CreateInfo createInfo = new CreateInfo();                   // we will recycle it in place, filling every time.

            // we want to traverse XmlDocument fast, as tile load operations can be numerous
            // and come in pack. So we avoid using XPath and rely mostly on "foreach child":
            foreach (XmlNode nnode in waypointNodes)
            {
                try
                {
                    switch (nnode.Name)
                    {
                    case "author":
                        //LibSys.StatusBar.Trace("FileGpx:process() node=" + nnode.Name);
                        break;

                    case "desc":
                        //LibSys.StatusBar.Trace("FileGpx:process() node=" + nnode.Name);
                        break;

                    case "bounds":
                        //LibSys.StatusBar.Trace("FileGpx:process() node=" + nnode.Name);
                        break;

                    case "wpt":
                        //LibSys.StatusBar.Trace("FileGpx:process() node=" + nnode.Name);
                        createInfo.init("wpt");
                        createInfo.setLat(nnode.Attributes["lat"].InnerText);
                        createInfo.setLng(nnode.Attributes["lon"].InnerText);
                        createInfo.typeExtra = "unknown";                                       // type: ppl, school, park, locale, airport, reservoir, dam,
                        //       civil, cemetery, valley, building
                        createInfo.source = source;
                        foreach (XmlNode node in nnode.ChildNodes)
                        {
                            //LibSys.StatusBar.Trace("    child node=" + node.Name);
                            switch (node.Name)
                            {
                            case "time":
                                createInfo.setDateTime(node.InnerText);
                                break;

                            case "ele":
                                createInfo.setElev(node.InnerText);
                                break;

                            case "name":
                                createInfo.name = node.InnerText.Trim();                                                        // number like 001 for route-related wpts or GCSDFX for geocaches
                                break;

                            case "desc":
                                createInfo.desc = node.InnerText.Trim();
                                break;

                            case "groundspeak:cache":
                                createInfo.node1 = node;                                                                // will be parsed in Waypoint() constructor
                                break;

                            case "urlname":                                                     // may overwrite name in Pocket Queries
                                createInfo.urlName = node.InnerText.Trim();
                                break;

                            case "url":
                                createInfo.url = node.InnerText.Trim();
                                break;

                            case "cmt":
                                createInfo.comment = node.InnerText.Trim();
                                // may contain time, so try to extract it if possible:
                                try
                                {
                                    createInfo.setDateTime(node.InnerText);
                                }
                                catch {}
                                break;

                            case "sym":
                                createInfo.sym = node.InnerText.Trim();
                                break;

                            case "type":                                                // like "user waypoint" or "geocache"
                                createInfo.typeExtra = node.InnerText.Trim();
                                break;
                            }
                        }
                        m_insertWaypoint(createInfo);
                        break;

                    case "rte":
                    {
                        string routeName    = "";
                        string routeColor   = "";
                        bool   routeCreated = false;
                        foreach (XmlNode nnnode in nnode.ChildNodes)
                        {
                            switch (nnnode.Name)
                            {
                            case "name":                                                // route name
                                routeName = nnnode.InnerText.Trim();
                                break;

                            case "number":                                              // route number
                                break;

                            case "topografix:color":                                                    // like 00ffee
                                routeColor = nnnode.InnerText.Trim();
                                break;

                            case "rtept":
                                /*
                                 *      <rtept lat="38.518697986" lon="-122.978969274">
                                 *              <ele>4.211426</ele>
                                 *              <time>2002-10-04T18:48:23Z</time>
                                 *              <name><![CDATA[006]]></name>
                                 *              <cmt><![CDATA[28-SEP-02 1:56:26PM]]></cmt>
                                 *              <desc><![CDATA[006]]></desc>
                                 *              <sym>Dot</sym>
                                 *              <type><![CDATA[Dot]]></type>
                                 *      </rtept>
                                 */
                                //LibSys.StatusBar.Trace("FileGpx:process() node=" + nnode.Name);

                                if (!routeCreated)
                                {
                                    Project.trackId++;

                                    createInfo.init("rte");
                                    createInfo.name   = routeName;
                                    createInfo.id     = Project.trackId;
                                    createInfo.par1   = nnnode.InnerText.Trim();                                                        // number for route
                                    createInfo.source = source;
                                    createInfo.par1   = routeColor;

                                    m_insertWaypoint(createInfo);                                                       // actually inserts a route

                                    routeCreated = true;
                                }
                                createInfo.init("rtept");
                                createInfo.setLat(nnnode.Attributes["lat"].InnerText);
                                createInfo.setLng(nnnode.Attributes["lon"].InnerText);
                                createInfo.id     = Project.trackId;                                                    // relate waypoint to track
                                createInfo.source = source;

                                foreach (XmlNode node in nnnode.ChildNodes)
                                {
                                    //LibSys.StatusBar.Trace("    child node=" + node.Name);
                                    switch (node.Name)
                                    {
                                    case "time":
                                        createInfo.setDateTime(node.InnerText);
                                        break;

                                    case "ele":
                                        createInfo.setElev(node.InnerText);
                                        break;

                                    case "name":
                                        createInfo.name = node.InnerText.Trim();                                                                        // number like 001 for route-related wpts or GCSDFX for geocaches
                                        break;

                                    case "desc":
                                        createInfo.desc = node.InnerText.Trim();
                                        break;

                                    case "urlname":
                                        createInfo.urlName = node.InnerText.Trim();
                                        break;

                                    case "url":
                                        createInfo.url = node.InnerText.Trim();
                                        break;

                                    case "cmt":
                                        createInfo.comment = node.InnerText.Trim();
                                        break;

                                    case "sym":
                                        createInfo.sym = node.InnerText.Trim();
                                        if ("Waypoint".Equals(createInfo.sym))
                                        {
                                            createInfo.sym = null;
                                        }
                                        break;

                                    case "type":                                                                // like "user waypoint" or "geocache"
                                        createInfo.typeExtra = node.InnerText.Trim();
                                        break;
                                    }
                                }

                                m_insertWaypoint(createInfo);
                                break;
                            }
                        }
                    }
                    break;

                    case "trk":
                    {
                        string trackName   = "";
                        string trackNumber = "";
                        string trackColor  = "";
                        foreach (XmlNode nnnode in nnode.ChildNodes)
                        {
                            switch (nnnode.Name)
                            {
                            case "name":                                                // track name
                                trackName = nnnode.InnerText.Trim();
                                break;

                            case "number":                                              // track number
                                trackNumber = nnnode.InnerText.Trim();
                                break;

                            case "topografix:color":                                                    // like 00ffee
                                trackColor = nnnode.InnerText.Trim();
                                break;

                            case "trkseg":
                                Project.trackId++;

                                createInfo.init("trk");
                                createInfo.name   = trackName;
                                createInfo.id     = Project.trackId;
                                createInfo.source = source;
                                createInfo.par1   = trackColor;

                                m_insertWaypoint(createInfo);                                                   // actually inserts a track

                                foreach (XmlNode nnnnode in nnnode.ChildNodes)
                                {
                                    switch (nnnnode.Name)
                                    {
                                    case "trkpt":                                                               // track point
                                        /*
                                         *      <trkpt lat="33.570749483" lon="-117.723665938">
                                         *              <ele>106.363037</ele>
                                         *              <time>2002-10-11T04:32:08Z</time>
                                         *              <sym>Waypoint</sym>
                                         *      </trkpt>
                                         */
                                        //LibSys.StatusBar.Trace("FileGpx:process() node=" + nnode.Name);

                                        createInfo.init("trkpt");
                                        createInfo.setLat(nnnnode.Attributes["lat"].InnerText);
                                        createInfo.setLng(nnnnode.Attributes["lon"].InnerText);
                                        createInfo.id     = Project.trackId;                                                                    // relate waypoint to track
                                        createInfo.source = source;

                                        foreach (XmlNode node in nnnnode.ChildNodes)
                                        {
                                            //LibSys.StatusBar.Trace("    child node=" + node.Name);
                                            switch (node.Name)
                                            {
                                            case "time":
                                                createInfo.setDateTime(node.InnerText);
                                                break;

                                            case "ele":
                                                createInfo.setElev(node.InnerText);
                                                break;

                                            case "name":
                                                createInfo.name = node.InnerText.Trim();
                                                break;

                                            case "desc":
                                                createInfo.desc = node.InnerText.Trim();
                                                break;

                                            case "urlname":
                                                createInfo.urlName = node.InnerText.Trim();
                                                break;

                                            case "url":
                                                createInfo.url = node.InnerText.Trim();
                                                break;

                                            case "cmt":
                                                createInfo.comment = node.InnerText.Trim();
                                                break;

                                            case "sym":
                                                createInfo.sym = node.InnerText.Trim();
                                                if ("Waypoint".Equals(createInfo.sym))
                                                {
                                                    createInfo.sym = null;
                                                }
                                                break;

                                            case "type":                                                                                // like "user waypoint" or "geocache"
                                                createInfo.typeExtra = node.InnerText.Trim();
                                                break;
                                            }
                                        }

                                        m_insertWaypoint(createInfo);
                                        break;
                                    }
                                }
                                break;
                            }
                        }
                    }
                    break;
                    }
                }
                catch (Exception ee)
                {
                    // bad node - not a big deal...
                    LibSys.StatusBar.Error("FileGpx process node=" + nnode.Name + " " + ee);                     //.Message);
                    //LibSys.StatusBar.WriteLine("Culture: " + Thread.CurrentThread.CurrentCulture + " (" + Thread.CurrentThread.CurrentCulture.DisplayName + ")  UseUserOverride=" + Thread.CurrentThread.CurrentCulture.UseUserOverride);
                }
            }
            return(ret);
        }
 public MySQLDatabase(CreateInfo Info)
 {
     FillConnectionString(Info);
 }
		public void CreateHostApplication()
		{
			lock(m_lock)
			{
				using (new WsActivationContext())
				{
					RememberIfHostApplicationIsRunning(ApplicationProgId);
					CreateInfo info = new CreateInfo();
					info.progId = ApplicationProgId;
					CreateComObject(info);
					HostApplication = info.theObject;
				}
			}
		}
示例#12
0
 private static extern IntPtr CreateChromium(string p_Title, int p_Parent, string p_Content, ref CreateInfo p_CreateInfo, RecvMessage p_RecvMsg);
示例#13
0
        public override bool process(string url, string filename, string source)
        {
            bool ret = true;

            OleDbConnection con = null;

            LibSys.StatusBar.Trace("IP: processing MDB file: " + filename);

            try
            {
                con = new OleDbConnection(@"Provider=Microsoft.JET.OLEDB.4.0;data source=" + filename + "");
                con.Open(); //connection must be opened

                DataTable dt = con.GetSchema("Tables");

                DataRow row = dt.Select("TABLE_TYPE='TABLE'")[0];

                string tableName = row["TABLE_NAME"].ToString();

                OleDbCommand    cmd    = new OleDbCommand("SELECT * from [" + tableName + "]", con); // creating query command
                OleDbDataReader reader = cmd.ExecuteReader();                                        // executes query

                int i      = 0;
                int errCnt = 0;
                while (reader.Read()) // if can read row from database
                {
                    try
                    {
                        SectionRow sr = new SectionRow()
                        {
                            RECRD      = (int)reader.GetValue(0),
                            VESSLTERMS = reader.GetValue(1).ToString(),
                            CHART      = reader.GetValue(2).ToString(),
                            AREA       = reader.GetValue(3).ToString(),
                            CARTOCODE  = reader.GetValue(4).ToString(),
                            SNDINGCODE = reader.GetValue(5).ToString(),
                            DEPTH      = reader.GetValue(6).ToString(),
                            NATIVLAT   = reader.GetValue(7).ToString(),
                            NATIVLON   = reader.GetValue(8).ToString(),
                            LAT83      = reader.GetValue(9).ToString(),
                            LONG83     = reader.GetValue(10).ToString(),
                            LATDEC     = (double)reader.GetValue(11),
                            LONDEC     = -(double)reader.GetValue(12),
                            NATIVDATUM = reader.GetValue(13).ToString(),
                            CONVERT83  = reader.GetValue(14).ToString(),
                            GPACCURACY = reader.GetValue(15).ToString(),
                            GPQUALITY  = reader.GetValue(16).ToString(),
                            GPSOURCE   = reader.GetValue(17).ToString(),
                            QUADRANT   = reader.GetValue(18).ToString(),
                            History    = reader.GetValue(19).ToString(),
                            REFERENCE  = reader.GetValue(20).ToString(),
                            YEARSUNK   = reader.GetValue(21).ToString()
                        };

                        CreateInfo createInfo = new CreateInfo();       // we will recycle it in place, filling every time.

                        createInfo.init("wpt");
                        createInfo.name      = (sr.VESSLTERMS + " " + sr.DEPTH).Trim();
                        createInfo.desc      = sr.YEARSUNK;
                        createInfo.lat       = sr.LATDEC;
                        createInfo.lng       = sr.LONDEC;
                        createInfo.typeExtra = "unknown";       // type: ppl, school, park, locale, airport, reservoir, dam, civil, cemetery, valley, building
                        createInfo.source    = source;
                        createInfo.comment   = sr.History.Replace(". ", ".\r\n") + ";\r\n" + sr.REFERENCE;

                        m_insertWaypoint(createInfo);
                    }
                    catch (Exception excr)
                    {
                        errCnt++;
                    }

                    i++;
                }
                LibSys.StatusBar.Trace("OK: MDB file: '" + filename + "' processed; found table[" + tableName + "] records/waypoints count=" + i + "  errors count=" + errCnt);
            }
            catch (Exception e)
            {
                LibSys.StatusBar.Error("FileAwoisMdb process() " + e.Message);
                ret = false;
            }
            finally
            {
                if (con != null)
                {
                    con.Close();
                }
            }

            return(ret);
        }
示例#14
0
        }                                                                                                                                       // time zulu

        private void addToRoute(GeoCoord location, Waypoint wpt, Earthquake eq)
        {
            rteptNumber++;
            string wptName = "" + rteptNumber;

            if (m_routeTrack == null)
            {
                // first route-making click on the map, create track to hold the new route
                string newTrackSource = "route - user created " + DateTime.Now;

                Project.trackId++;
                rteptNumber = 1;
                m_lastWpt   = null;

                string newTrackName = "Route-" + Project.trackId;

                CreateInfo createInfo = new CreateInfo();

                createInfo.init("rte");
                createInfo.id     = Project.trackId;
                createInfo.name   = newTrackName;
                createInfo.source = newTrackSource;
                createInfo.par1   = "" + rteNumber;
                rteNumber++;
                if (rteNumber > 20)
                {
                    rteNumber = 1;
                }

                m_routeTrack         = new Track(createInfo);
                m_routeTrack.isRoute = true;
                WaypointsCache.TracksAll.Add(m_routeTrack);
                wptName = "Start route";
            }

            m_speed = null;

            if (m_lastWpt != null && m_lastWpt.HasSpeed)
            {
                m_speed = new Speed(m_lastWpt.Speed);
            }
            else
            {
                m_speed = new Speed(Project.routeSpeed);
            }

            TimeSpan dur = new TimeSpan(100000);

            Waypoint routeWpt = null;
            bool     wasNew   = false;

            if (wpt != null)
            {
                routeWpt = new Waypoint(wpt);
                routeWpt.LiveObjectType = LiveObjectTypes.LiveObjectTypeRoutepoint;
                routeWpt.DateTime       = m_dateTimeRte;
            }
            else if (eq != null)
            {
                //wptName = eq.ToString();
                wptName  = string.Format("{0:F1} - ", eq.Magn) + eq.sDateTime + " - " + eq.Comment;
                routeWpt = new Waypoint(eq.Location, m_dateTimeRte, LiveObjectTypes.LiveObjectTypeRoutepoint, Project.trackId, wptName, eq.Source, eq.Url);
            }
            else
            {
                // location must not be null then:
                routeWpt = new Waypoint(location, m_dateTimeRte, LiveObjectTypes.LiveObjectTypeRoutepoint, Project.trackId, "", "user created", "");                            // no URL
                routeWpt.NameDisplayed = wptName;
                wasNew = true;
            }

            if (m_speed != null)
            {
                routeWpt.Speed = (float)m_speed.Meters;
            }

            if (m_lastWpt != null && m_lastWpt.TrackId == Project.trackId)
            {
                Distance dist       = routeWpt.distanceFrom(m_lastWpt.Location);
                double   durSeconds = m_speed.Meters <= 0.0d ? 0.000001d : (dist.Meters / m_speed.Meters * 3600.0d);
                dur = new TimeSpan((long)(durSeconds * 10000000.0d));

                m_dateTimeRte += dur;
            }

            routeWpt.DateTime = m_dateTimeRte;

            m_lastWpt = routeWpt;

            // we need to make sure that the point added is different from the last point in track.
            // Magellan will not accept routes with zero-length legs.
            Waypoint lastWpt = null;

            if (m_routeTrack.Trackpoints.Count > 0)
            {
                lastWpt = (Waypoint)m_routeTrack.Trackpoints.GetByIndex(m_routeTrack.Trackpoints.Count - 1);
            }

            if (lastWpt == null || lastWpt.Location.distanceFrom(routeWpt.Location).Meters > 2.0d)
            {
                if (wasNew && lastWpt != null)
                {
                    routeWpt.Location.Elev = lastWpt.Location.Elev;
                }
                m_routeTrack.Trackpoints.Add(routeWpt.DateTime, routeWpt);
                m_routeTrack.PutOnMap(this, null, this);

                if (wptName.Length > 2)
                {
                    //m_cameraManager.MarkLocation(mouseGeoLocation, 0);
                    m_cameraManager.ProcessCameraMove();                                // make sure label is positionsed on the map
                }
                else
                {
                    // invalidate picture region around just created leg:
                    Waypoint  prevWpt = (Waypoint)m_routeTrack.Trackpoints.GetByIndex(m_routeTrack.Trackpoints.Count - 2);
                    Point     p1      = m_cameraManager.toPixelLocation(routeWpt.Location, null);
                    Point     p2      = m_cameraManager.toPixelLocation(prevWpt.Location, null);
                    int       x       = Math.Min(p1.X, p2.X);
                    int       y       = Math.Min(p1.Y, p2.Y);
                    int       w       = Math.Abs(p1.X - p2.X);
                    int       h       = Math.Abs(p1.Y - p2.Y);
                    Rectangle toInv   = new Rectangle(x, y, w, h);
                    toInv.Offset(-5, -5);
                    toInv.Inflate(10, 10);
                    m_pictureManager.Invalidate(toInv);
                }
            }
        }
示例#15
0
        // return array of track IDs or null (if track can't be ungrouped)
        public static ArrayList ungroupTrack(Track trk, double breakTimeMinutes)
        {
            double   maxJumpMeters = 5000.0d;                   // for sanity filter. make sure it is big enough, as GPSV makes big gaps.
            DateTime lastTime      = DateTime.MinValue;
            GeoCoord lastLoc       = null;
            int      trip          = 0;
            int      i;

            // first count how many trips we can break the track into:
            for (i = 0; i < trk.Trackpoints.Count; i++)
            {
                Waypoint wpt     = (Waypoint)trk.Trackpoints.GetByIndex(i);
                DateTime wptTime = wpt.DateTime;
                if (wptTime.CompareTo(lastTime.AddMinutes(breakTimeMinutes)) > 0 || (lastLoc != null && wpt.Location.distanceFrom(lastLoc).Meters > maxJumpMeters))
                {
                    trip++;
                }
                if (trip > 0)
                {
                    lastTime = wptTime;
                }
                lastLoc = wpt.Location;
            }

            if (trip < 2)
            {
                return(null);
            }

            // more than one trip, go ahead break it:
            string[] infos          = new string[8];
            string   newTrackSource = trk.Source;

            lastTime = DateTime.MinValue;
            lastLoc  = null;
            trip     = 0;

            ArrayList ret = new ArrayList();

            for (i = 0; i < trk.Trackpoints.Count; i++)
            {
                Waypoint wpt     = (Waypoint)trk.Trackpoints.GetByIndex(i);
                DateTime wptTime = wpt.DateTime;
                if (wptTime.CompareTo(lastTime.AddMinutes(breakTimeMinutes)) > 0 || (lastLoc != null && wpt.Location.distanceFrom(lastLoc).Meters > maxJumpMeters))
                {
                    Project.trackId++;
                    trip++;

                    string newTrackName = trk.Name + "-trip-" + trip;

                    CreateInfo createInfo = new CreateInfo();

                    createInfo.init(trk.Type);
                    createInfo.id     = Project.trackId;
                    createInfo.name   = newTrackName;
                    createInfo.source = newTrackSource;
                    createInfo.url    = trk.Url;

                    currentTrack = new Track(createInfo);

                    m_tracksAll.Add(currentTrack);
                    ret.Add(Project.trackId);
                }
                if (trip > 0)
                {
                    Waypoint cloneWpt = new Waypoint(wpt);
                    cloneWpt.TrackId = Project.trackId;
                    currentTrack.insertWaypoint(cloneWpt);
                    lastTime = wptTime;
                }
                lastLoc = wpt.Location;
            }

            // make sure the speed and odometer values are computed:
            foreach (long trackId in ret)
            {
                Track ttrk = getTrackById(trackId);
                ttrk.rebuildTrackBoundaries();
            }

            // now apply Sanity Filter:
            if (Project.sanityFilter)
            {
                ArrayList ret1 = new ArrayList();
                foreach (long trackId in ret)
                {
                    Track ttrk = getTrackById(trackId);
                    if (ttrk.Trackpoints.Count >= 5 && ttrk.Odometer > 10.0f)                                   // odometer in meters, eliminates standing points
                    {
                        ret1.Add(trackId);
                    }
                    else
                    {
                        RemoveTrackById(trackId);
                    }
                }
                if (ret1.Count < 2)
                {
                    //return null;
                }
                ret = ret1;
            }

            if (ret != null)
            {
                isDirty = true;
            }
            return(ret);
        }
示例#16
0
        public override bool process(string url, string filename, string source)
        {
            bool ret = true;

            LibSys.StatusBar.Trace("IP: FileNmeaLog:process() filename=" + filename);

            int wpCount      = 0;
            int lineno       = 0;
            int packetsCount = 0;

            Cursor.Current = Cursors.WaitCursor;

            try
            {
                string line;
                double zoneShift = 0.0d;

                NmeaPacketReceived packetIn   = null;
                CreateInfo         createInfo = new CreateInfo(); // we will recycle it in place, filling every time.

                double lat = 0.0d;
                double lng = 0.0d;
                // we allow elev and dateTime to stay in the cycle and be promoted/inherited to points that do not have this data in NMEA sentence.
                double   elev     = 0.0d;                   // alt above mean sea level
                DateTime dateTime = DateTime.Now;

                StreamReader stream = new StreamReader(filename);

                while ((line = stream.ReadLine()) != null)
                {
                    lineno++;

                    // we are in a VERY long cycle here, need to make sure Windows events and memory are managed
                    Application.DoEvents();

                    if (lineno % 1000 == 0)
                    {
                        GC.Collect();
                    }

                    line = line.Trim();

                    if (string.IsNullOrEmpty(line))
                    {
                        continue;
                    }

                    try
                    {
                        // first see if that was a proprietary, non-NMEA packet:
                        if (line.IndexOf("*") < 0)
                        {
                            LibSys.StatusBar.Trace("proprietary packet: " + line);
                            if (packetIn != null && packetIn.isGood)
                            {
                                LibSys.StatusBar.Trace("last good NMEA packet: " + packetIn);
                            }

                            if (line.StartsWith("$ADVER,"))
                            {
                                Project.trackId++;
                                createInfo.init("trk");
                                createInfo.id     = Project.trackId;
                                createInfo.source = source;
                                createInfo.name   = "GPS NMEA Log";

                                insertWaypoint(createInfo);
                            }
                        }
                        else
                        {
                            packetIn          = new NmeaPacketReceived();
                            packetIn.isGood   = false;
                            packetIn.m_string = line;

                            if (!NmeaPacket.checksumVerify(packetIn.m_string))
                            {
                                packetIn.isGood = false;
                                LibSys.StatusBar.Error("bad checksum, line " + lineno + " bad packet: " + line);
                            }
                            else
                            {
                                packetIn.isGood = packetIn.basicParse(packetIn.m_string);
                                // packet is good and parsed, so the fields array is filled
                                //LibSys.StatusBar.Trace("NMEA packet: " + packetIn);



                                if (packetIn.header.EndsWith("GGA"))    // NMEA GGA expected for location
                                {
                                    //LibSys.StatusBar.Trace("process: " + packetIn.header + " packet, count=" + packetsCount + "   content=" + packetIn);
                                    try
                                    {
                                        NmeaPacket pvt = packetIn.fromString();

                                        /*
                                         *  $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
                                         *
                                         *  Where:
                                         *      GGA          Global Positioning System Fix Data
                                         *  0	123519       Fix taken at 12:35:19 UTC
                                         *  1	4807.038,N   Latitude 48 deg 07.038' N
                                         *  3	01131.000,E  Longitude 11 deg 31.000' E
                                         *  5	1            Fix quality: 0 = invalid
                                         *                              1 = GPS fix
                                         *                              2 = DGPS fix
                                         *                              6 = estimated (2.3 feature)
                                         *  6	08           Number of satellites being tracked
                                         *  7	0.9          Horizontal dilution of position
                                         *  8	545.4,M      Altitude, Meters, above mean sea level
                                         *  10	46.9,M       Height of geoid (mean sea level) above WGS84
                                         *                      ellipsoid
                                         *  12	(empty field) time in seconds since last DGPS update
                                         *  13	(empty field) DGPS station ID number
                                         * 47          the checksum data, always begins with *
                                         */

                                        lat  = pvt.parseLat(1);
                                        lng  = pvt.parseLng(1);
                                        elev = pvt.parseElev(8);                // alt above mean sea level

                                        // time component (don't know the date):
                                        dateTime = pvt.parseNmeaTime(0, dateTime);      // UTC
                                        dateTime = dateTime.AddHours(-zoneShift);

                                        // errors and velocity:
                                        double posError  = 0;
                                        double posErrorH = 0;
                                        double posErrorV = 0;
                                        double fix       = 0;           // failed integrity check
                                        switch ((string)pvt.fields[5])
                                        {
                                        case "0":               // invalid
                                            fix = 1;            // invalid
                                            break;

                                        case "1":               // GPS fix
                                            fix = 2;            // two dimensional
                                            break;

                                        case "2":               // DGPS fix
                                            fix = 4;            // two dimensional differential
                                            break;

                                        case "6":               // estimated
                                            fix = 6;            // estimated
                                            break;
                                        }

                                        string comment = "received " + packetIn.header;
                                        //realtimeCallback(pvtData);

                                        createInfo.init("trkpt");
                                        createInfo.id       = Project.trackId;                                  // relate waypoint to track
                                        createInfo.dateTime = dateTime;
                                        createInfo.lat      = lat;
                                        createInfo.lng      = lng;
                                        createInfo.elev     = elev;
                                        createInfo.source   = source;

                                        insertWaypoint(createInfo);
                                        wpCount++;

                                        packetsCount++;
                                    }
                                    catch (Exception ee)
                                    {
                                        LibSys.StatusBar.Error("StartRealTime: " + ee.Message);
                                    }
                                }
                                else if (packetIn.header.EndsWith("RMC"))       // NMEA RMC may come
                                {
                                    //LibSys.StatusBar.Trace("process: " + packetIn.header + " packet, count=" + packetsCount + "   content=" + packetIn);
                                    try
                                    {
                                        NmeaPacket pvt = packetIn.fromString();

                                        // $GPRMC,052458.73,V,3334.6441,N,11739.6622,W,00.0,000.0,290103,13,E*4F

                                        /*
                                         * see http://www.gpsinformation.org/dale/nmea.htm for NMEA reference
                                         *
                                         * RMC - NMEA has its own version of essential gps pvt (position, velocity, time) data.
                                         * It is called RMC, The Recommended Minimum, which might look like:
                                         *
                                         * $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
                                         * $GPRMC,050821.000,A,3334.5551,N,11739.7705,W,0.00,,251006,,,A*67
                                         *
                                         * Where:
                                         *  RMC          Recommended Minimum sentence C
                                         * 0	123519       Fix taken at 12:35:19 UTC
                                         * 1	A            Status A=active or V=Void.
                                         * 2	4807.038,N   Latitude 48 deg 07.038' N
                                         * 4	01131.000,E  Longitude 11 deg 31.000' E
                                         * 6	022.4        Speed over the ground in knots
                                         * 7	084.4        Track angle in degrees True
                                         * 8	230394       Date - 23rd of March 1994
                                         * 9	003.1,W      Magnetic Variation
                                         * 6A          The checksum data, always begins with *
                                         *
                                         * Note that, as of the 2.3 release of NMEA, there is a new field in the RMC sentence
                                         * at the end just prior to the checksum. The value of the entry is
                                         * A=autonomous, D=differential, E=estimated, N=Data not valid.
                                         */
                                        bool status = "A".Equals(pvt.fields[1]);
                                        if (status)
                                        {
                                            lat = pvt.parseLat(2);
                                            lng = pvt.parseLng(2);
                                            //double elev = 0.0d;   // inherit elevation from a GGA
                                            //LibSys.StatusBar.Trace("coord=" + pvtData.location);

                                            // time component (only time part):
                                            dateTime = pvt.parseNmeaDateTime(0, 8);     // UTC
                                            dateTime = dateTime.AddHours(-zoneShift);

                                            //if (!"".Equals(pvt.fields[6]))
                                            //{
                                            //    double knots = Convert.ToDouble(pvt.fields[6]);

                                            //    pvtData.velocity = knots * Distance.METERS_PER_NAUTICAL_MILE / 3600.0d;
                                            //    // calculate velocity vector based on track angle:
                                            //    if (!"".Equals(pvt.fields[7]))
                                            //    {
                                            //        double trackAngleRad = Convert.ToDouble(pvt.fields[7]) * Math.PI / 180.0d;
                                            //        pvtData.velocityNorth = pvtData.velocity * Math.Cos(trackAngleRad);
                                            //        pvtData.velocityEast = pvtData.velocity * Math.Sin(trackAngleRad);
                                            //    }
                                            //}

                                            //pvtData.fix = 2;			// assume two-dimensional
                                            //pvtData.comment = "received " + received.header;
                                            createInfo.init("trkpt");
                                            createInfo.id       = Project.trackId; // relate waypoint to track
                                            createInfo.dateTime = dateTime;
                                            createInfo.lat      = lat;
                                            createInfo.lng      = lng;
                                            createInfo.elev     = elev;
                                            createInfo.source   = source;

                                            insertWaypoint(createInfo);
                                            wpCount++;
                                        }

                                        packetsCount++;
                                    }
                                    catch (Exception ee)
                                    {
                                        LibSys.StatusBar.Error("StartRealTime: " + ee.Message);
                                    }
                                }
                                else if (packetIn.header.EndsWith("WPL"))       // NMEA WPL may come as a result of manually marking a location
                                {
                                    //LibSys.StatusBar.Trace("process: " + packetIn.header + " packet, count=" + packetsCount + "   content=" + packetIn);
                                    try
                                    {
                                        NmeaPacket pvt = packetIn.fromString();

                                        // $GPWPL,3334.7038,N,11739.7796,W,00001*61

                                        /*
                                         * see http://www.gpsinformation.org/dale/nmea.htm for NMEA reference
                                         *
                                         * WPL - Waypoint Location data provides essential waypoint data. It is output when navigating to indicate data about the destination
                                         * and is sometimes supported on input to redefine a waypoint location. Note that waypoint data as defined in the standard
                                         * does not define altitude, comments, or icon data. When a route is active, this sentence is sent once for each waypoint in
                                         * the route, in sequence. When all waypoints have been reported, the RTE sentence is sent in the next data set.
                                         * In any group of sentences, only one WPL sentence, or an RTE sentence, will be sent.
                                         *
                                         *  $GPWPL,4807.038,N,01131.000,E,WPTNME*5C
                                         *
                                         *  With an interpretation of:
                                         *
                                         *        WPL         Waypoint Location
                                         *    0   4807.038,N  Latitude
                                         *    1   01131.000,E Longitude
                                         *    2   WPTNME      Waypoint Name
                                         * 5C         The checksum data, always begins with *
                                         *
                                         */
                                        lat = pvt.parseLat(0);
                                        lng = pvt.parseLng(0);
                                        //elev = 0.0d;      // inherit elevation
                                        //LibSys.StatusBar.Trace("coord=" + pvtData.location);

                                        createInfo.init("wpt");
                                        createInfo.lat      = lat;
                                        createInfo.lng      = lng;
                                        createInfo.elev     = elev;
                                        createInfo.dateTime = dateTime;
                                        createInfo.name     = "" + pvt.fields[4];
                                        createInfo.source   = source;

                                        insertWaypoint(createInfo);
                                        wpCount++;

                                        packetsCount++;
                                    }
                                    catch (Exception ee)
                                    {
                                        LibSys.StatusBar.Error("StartRealTime: " + ee.Message);
                                    }
                                }
                                //else if (packetIn.header.EndsWith("GLL"))	// NMEA GLL may come
                                //{
                                //    LibSys.StatusBar.Trace("process: " + packetIn.header + " packet, count=" + packetsCount + "   content=" + packetIn);
                                //    try
                                //    {
                                //        NmeaPacket pvt = packetIn.fromString();
                                //        // $GPGLL,3334.6464,N,11739.6583,W,052707.129,A*29
                                //        /*
                                //         * see http://www.gpsinformation.org/dale/nmea.htm for NMEA reference
                                //         *
                                //        GLL - Geographic Latitude and Longitude is a holdover from Loran data and some old units
                                //             may not send the time and data valid information if they are emulating Loran data.
                                //             If a gps is emulating Loran data they may use the LC Loran prefix instead of GP.

                                //        $GPGLL,4916.45,N,12311.12,W,225444,A,*31

                                //        Where:
                                //            GLL          Geographic position, Latitude and Longitude
                                //        0	4916.46,N    Latitude 49 deg. 16.45 min. North
                                //        2	12311.12,W   Longitude 123 deg. 11.12 min. West
                                //        4	225444       Fix taken at 22:54:44 UTC
                                //        5	A            Data valid or V (void)
                                //            *31          checksum data

                                //        */
                                //        bool status = "A".Equals(pvt.fields[5]);
                                //        if (status)
                                //        {
                                //            double lat = pvt.parseLat(0);
                                //            double lng = pvt.parseLng(0);
                                //            double elev = 0.0d;

                                //            // time component (only time part):
                                //            //pvtData.time = pvt.parseNmeaTime(4);	// UTC

                                //            //pvtData.fix = 2;			// assume two-dimensional
                                //            //pvtData.comment = "received " + received.header;

                                //            createInfo.init("trkpt");
                                //            createInfo.id = Project.trackId;	// relate waypoint to track
                                //            //createInfo.dateTime = dateTime;
                                //            createInfo.lat = lat;
                                //            createInfo.lng = lng;
                                //            createInfo.elev = elev;
                                //            createInfo.source = source;

                                //            insertWaypoint(createInfo);
                                //            wpCount++;
                                //        }
                                //        packetsCount++;
                                //    }
                                //    catch (Exception ee)
                                //    {
                                //        LibSys.StatusBar.Error("StartRealTime: " + ee.Message);
                                //    }
                                //}
                                else if (packetIn.header.EndsWith("GSV"))       // NMEA GSV may come for satellite reception status
                                {
                                    //LibSys.StatusBar.Trace("process: " + packetIn.header + " packet, count=" + packetsCount + "   content=" + packetIn);
                                    //    /*
                                    //     * see http://www.gpsinformation.org/dale/nmea.htm for NMEA reference
                                    //     *
                                    //    $GPGSV,3,1,08,14,69,204,,15,57,105,36,18,45,047,36,03,42,263,36*71
                                    //    $GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75

                                    //    Where:
                                    //        GSV          Satellites in view
                                    //    0	2            Number of sentences for full data
                                    //    1	1            sentence 1 of 2
                                    //    2	08           Number of satellites in view
                                    //    for up to 4 satellites per sentence {
                                    //            3	01           Satellite PRN number
                                    //            4	40           Elevation, degrees
                                    //            5	083          Azimuth, degrees
                                    //            6	46           Signal strength - higher is better
                                    //    }
                                    //        *75          the checksum data, always begins with *
                                    //     */

                                    //    //MPacket pvt  = received.fromString();
                                    //    //pvtData.comment = "received";
                                    //    //realtimeCallback(pvtData);

                                    packetsCount++;
                                }
                                else if (packetIn.header.EndsWith("VTG"))       // NMEA GSA may come
                                {
                                    //LibSys.StatusBar.Trace("process: " + packetIn.header + " packet, count=" + packetsCount + "   content=" + packetIn);
                                    // $GPVTG,309.62,T,,M,0.13,N,0.2,K*6E

                                    /*
                                     *  VTG - Course Over Ground and Ground Speed
                                     *
                                     *  Name		Example		Units	Description
                                     *  Message ID	$GPVTG				VTG protocol header
                                     *  Course		309.62		degrees Measured heading
                                     *  Reference	T					True
                                     *  Course					degrees	Measured heading
                                     *  Reference	M					Magnetic
                                     *  Speed		0.13		knots	Measured horizontal speed
                                     *  Units		N			Knots
                                     *  Speed		0.2			Km/hr	Measured horizontal speed
                                     *  Units		K					Kilometers per hour
                                     */
                                    packetsCount++;
                                }
                                else if (packetIn.header.EndsWith("GSA"))       // NMEA GSA may come
                                {
                                    //LibSys.StatusBar.Trace("process: " + packetIn.header + " packet, count=" + packetsCount + "   content=" + packetIn);
                                    // $GPGSA,A,2,15,18,14,31,,,,,,,,,05.6,05.6,*17

                                    /*
                                     * see http://www.gpsinformation.org/dale/nmea.htm for NMEA reference
                                     *
                                     * GSA - GPS DOP and active satellites. This sentence provides details on the nature of the
                                     * fix. It includes the numbers of the satellites being used in the current solution and
                                     * the DOP. DOP (dilution of precision) is an indication of the effect of satellite geometry
                                     * on the accuracy of the fix. It is a unitless number where smaller is better. For 3D fixes
                                     * using 4 satellites a 1.0 would be considered to be a perfect number. For overdetermined
                                     * solutions it is possible to see numbers below 1.0. There are differences in the way the
                                     * PRN's are presented which can effect the ability of some programs to display this data.
                                     * For example, in the example shown below there are 5 satellites in the solution and
                                     * the null fields are scattered indicating that the almanac would show satellites in
                                     * the null positions that are not being used as part of this solution. Other receivers
                                     * might output all of the satellites used at the beginning of the sentence with the
                                     * null field all stacked up at the end. This difference accounts for some satellite
                                     * display programs not always being able to display the satellites being tracked.
                                     *
                                     * $GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39
                                     *
                                     * Where:
                                     *  GSA      Satellite status
                                     *  A        Auto selection of 2D or 3D fix (M = manual)
                                     *  3        3D fix - other values include: 1 = no fix
                                     *                                          2 = 2D fix
                                     *  04,05... PRNs of satellites used for fix (space for 12)
                                     *  2.5      PDOP (dilution of precision)
                                     *  1.3      Horizontal dilution of precision (HDOP)
                                     *  2.1      Vertical dilution of precision (VDOP)
                                     * 39      the checksum data, always begins with *
                                     *
                                     */
                                    packetsCount++;
                                }
                                else
                                {
                                    LibSys.StatusBar.Trace("StartRealTime: good other (unrecognized) packet received, count=" + packetsCount + "   content=" + packetIn);
                                }
                            }
                        }
                    }
                    catch (Exception ee)
                    {
                        LibSys.StatusBar.Error("FileNmeaLog:process():  file=" + filename + " line=" + lineno + " " + ee.Message);
                    }
                }
            }
            catch (Exception eee)
            {
                LibSys.StatusBar.Error("FileNmeaLog:process(): " + eee.Message);
                ret = false;
            }
            finally
            {
                Cursor.Current = Cursors.Default;
                Application.DoEvents();
            }

            LibSys.StatusBar.Trace("OK: FileNmeaLog:process() filename=" + filename + " lines=" + lineno + ", packets=" + packetsCount + " waypoints=" + wpCount);
            return(ret);
        }
示例#17
0
 public Entity Create(CreateInfo createInfo)
 {
     return(Create(CreateEntity(), createInfo));
 }
示例#18
0
        private void doWork()
        {
            try
            {
                // first make sure we are at a good altitude:
                string strCmd = "/map=aerial";
                qmApiLib.CommandMappingEngine(strCmd);

                qmApiLib.resetZoom();                           // prepare for a zoom into whole set of waypoints created below

                DataRowCollection dra = m_dataSet.Tables["events"].Rows;

                int count = 0;
                foreach (DataRow row in dra)
                {
                    string sLat = "" + row["latitude"];
                    double lat  = toDegree(sLat);
                    string sLon = "" + row["longitude"];
                    double lon  = toDegree(sLon);

                    if (lon < lngMin || lon > lngMax)
                    {
                        continue;
                    }

                    string   eventId = "" + row["ev_id"];
                    DateTime date    = DateTime.MinValue;
                    string   sDT0    = "";
                    try
                    {
                        DateTime dateLoc  = (DateTime)row["ev_date"];
                        string   sTimeLoc = "" + row["ev_time"];
                        if (sTimeLoc.Length < 4)
                        {
                            sTimeLoc = "0" + sTimeLoc;
                        }
                        sTimeLoc = sTimeLoc.Substring(0, 2) + ":" + sTimeLoc.Substring(2, 2) + ":00";
                        string timeZone = "" + row["ev_tmzn"];

                        sDT0 = dateLoc.ToShortDateString() + " " + sTimeLoc + " " + timeZone;

                        string timeShift = "+0";
                        switch (timeZone)
                        {
                        case "GMT":
                        case "UTC":
                            break;

                        case "ADT":
                            timeShift = "-9";
                            break;

                        case "AST":
                            timeShift = "-10";
                            break;

                        case "BDT":                                                             // British
                            timeShift = "+0";
                            break;

                        case "BST":
                            timeShift = "+1";
                            break;

                        case "CDT":
                            timeShift = "-5";
                            break;

                        case "CST":
                            timeShift = "-6";
                            break;

                        case "EDT":
                            timeShift = "-4";
                            break;

                        case "EST":
                            timeShift = "-5";
                            break;

                        case "HDT":
                            timeShift = "-10";
                            break;

                        case "HST":
                            timeShift = "-11";
                            break;

                        case "MDT":
                            timeShift = "-6";
                            break;

                        case "MST":
                            timeShift = "-7";
                            break;

                        case "PDT":
                            timeShift = "-7";
                            break;

                        case "PST":
                            timeShift = "-8";
                            break;

                        case "YDT":                                                                     // Yukon
                            timeShift = "-9";
                            break;

                        case "YST":
                            timeShift = "-10";
                            break;
                        }
                        string sDT = dateLoc.ToShortDateString() + " " + sTimeLoc + timeShift;

                        string format = "M/d/yyyy H:mm:ssz";

                        CultureInfo en = new CultureInfo("en-US");
                        Thread.CurrentThread.CurrentCulture = en;

                        DateTime timeLoc = DateTime.ParseExact(sDT, format, en.DateTimeFormat);

                        TimeZone tz = TimeZone.CurrentTimeZone;

                        date = tz.ToUniversalTime(timeLoc);
                    }
                    catch {}
                    string type       = "" + row["ev_type"];
                    string injLevel   = "" + row["ev_highest_injury"];
                    int    fatalities = 0;
                    string desc       = "" + injLevel;

                    try
                    {
                        fatalities = Convert.ToInt32("" + row["inj_tot_f"]);
                    }
                    catch {}

                    if (fatalities > 0)
                    {
                        type += "-" + injLevel + "-" + fatalities;
                        desc += " - " + fatalities + " fatalities";
                    }

                    desc += " " + sDT0;

                    this.Invoke(new UpdateTextHandler(UpdateMessageText), new object[1] {
                        eventId + " " + sLat + "=" + lat + " " + sLon + "=" + lon
                    });

                    string url = "http://www.ntsb.gov/ntsb/brief.asp?ev_id=" + eventId;

                    CreateInfo ci = new CreateInfo();

                    ci.lng       = lon;
                    ci.lat       = lat;
                    ci.name      = eventId;
                    ci.urlName   = type + (date.Equals(DateTime.MinValue) ? "" : "-" + date.ToShortDateString());
                    ci.type      = "waypoint";
                    ci.typeExtra = "NTSB Crash";
                    ci.url       = url;
                    ci.dateTime  = date;
                    ci.desc      = desc;
                    ci.source    = "NTSB Database - " + m_source;

                    bool keepInView = false;

                    this.Invoke(new UpdateTextHandler(UpdateMessageText), new object[1] {
                        "Creating Waypoint" + eventId
                    });

                    qmApiLib.createWaypoint(ci, keepInView);

                    count++;

                    Thread.Sleep(10);
                }
                this.Invoke(new UpdateTextHandler(UpdateMessageText), new object[1] {
                    "Created " + count + " waypoints"
                });

                // perform zoom into the whole set of points:
                qmApiLib.doZoom();
            }
            catch (Exception exc)
            {
                this.Invoke(new UpdateTextHandler(UpdateMessageText), new object[1] {
                    exc.Message
                });
            }
        }
示例#19
0
    private OpRes createAPI(GMUser user, ResultAPIItem item, ParamApiApprove resultParam)
    {
        bool res = user.sqlDb.keyStrExists(TableName.GM_ACCOUNT, "acc", item.m_apiAcc,
                                           user.getMySqlServerID(), MySqlDbName.DB_XIANXIA);

        if (res)
        {
            return(OpRes.op_res_account_has_exists); // 账号重复
        }
        CreateInfo info = new CreateInfo();

        res = getCreatorInfo(user, item.m_apiCreator, info);
        if (!res)
        {
            return(OpRes.op_res_failed);
        }

        SqlInsertGenerator gen = new SqlInsertGenerator();

        gen.addField("acc", item.m_apiAcc, FieldType.TypeString);
        gen.addField("pwd", item.m_apiPwd, FieldType.TypeString);
        gen.addField("accType", AccType.ACC_API, FieldType.TypeNumber);
        gen.addField("createTime", DateTime.Now.ToString(ConstDef.DATE_TIME24), FieldType.TypeString);
        gen.addField("owner", item.m_apiCreator, FieldType.TypeString);

        gen.addField("generalAgency", info.m_generalAgency, FieldType.TypeString);

        gen.addField("postfix", item.m_apiPrefix, FieldType.TypeString);
        gen.addField("money", 0, FieldType.TypeNumber);
        gen.addField("moneyType", 0, FieldType.TypeNumber);

        string key = Guid.NewGuid().ToString().Replace("-", "");

        gen.addField("devSecretKey", key, FieldType.TypeString);

        gen.addField("gmRight", "", FieldType.TypeString);

        gen.addField("depth", info.m_depth + 1, FieldType.TypeNumber);

        string ccode = ItemHelp.genCreateCode(info.m_childCount, info.m_createCode);

        gen.addField("createCode", ccode, FieldType.TypeString);
        gen.addField("aliasName", item.m_apiAliasName, FieldType.TypeString);

        ValidatedCodeGenerator vg = new ValidatedCodeGenerator();

        vg.CodeSerial = DefCC.CODE_SERIAL;
        string validatedCode = vg.CreateVerifyCode(4);

        gen.addField("validatedCode", validatedCode, FieldType.TypeString);

        gen.addField("agentRatio", item.m_apiAgentRatio, FieldType.TypeNumber);
        gen.addField("washRatio", item.m_apiWashRatio, FieldType.TypeNumber);

        res = updateChildNodeNumber(user, info);
        if (res)
        {
            string sqlCmd = gen.getResultSql(TableName.GM_ACCOUNT);
            int    count  = user.sqlDb.executeOp(sqlCmd, user.getMySqlServerID(), MySqlDbName.DB_XIANXIA);
            if (count > 0)
            {
                resultParam.m_resultAcc     = item.m_apiAcc;
                resultParam.m_validatedCode = validatedCode;

                OpLogMgr.getInstance().addLog(LogType.LOG_TYPE_API_APPROVE,
                                              new LogApiApprove(item.m_apiAcc, item.m_apiAliasName), user);

                return(OpRes.opres_success);
            }
        }

        return(OpRes.op_res_db_failed);
    }
示例#20
0
        public bool processXml(string url, XmlDocument xmlDoc, string source)
        {
            bool ret = true;

            LibSys.StatusBar.Trace("IP: FileGeocachingLoc:processXml()");
            try
            {
                XmlNodeList waypointNodes = xmlDoc.SelectNodes("/loc/waypoint");

                /*
                 *      <waypoint>
                 *              <name id="GC37EB"><![CDATA[Gotta Play by Cyn]]></name>
                 *              <coord lat="33.6033" lon="-117.651433333333"/>
                 *              <type>Geocache</type>
                 *              <link text="Cache Details">http://www.geocaching.com/seek/cache_details.aspx?wp=GC37EB</link>
                 *      </waypoint>
                 */

                CreateInfo createInfo = new CreateInfo();                       // we will recycle it in place, filling every time.

                // we want to traverse XmlDocument fast, as tile load operations can be numerous
                // and come in pack. So we avoid using XPath and rely mostly on "foreach child":
                foreach (XmlNode nnode in waypointNodes)
                {
                    try
                    {
                        //LibSys.StatusBar.Trace("FileGeocachingLoc:process() node=" + nnode.Name);
                        createInfo.init("wpt");
                        createInfo.typeExtra = "unknown";                               // type: geocache
                        createInfo.source    = source;

                        foreach (XmlNode node in nnode.ChildNodes)
                        {
                            //LibSys.StatusBar.Trace("    child node=" + node.Name);
                            switch (node.Name)
                            {
                            case "name":
                                createInfo.name    = node.Attributes["id"].InnerText.Trim();
                                createInfo.urlName = node.InnerText.Trim();
                                break;

                            case "coord":
                                createInfo.setLat(node.Attributes["lat"].InnerText);
                                createInfo.setLng(node.Attributes["lon"].InnerText);
                                break;

                            case "ele":                                                 // just in case
                                createInfo.setElev(node.InnerText);
                                break;

                            case "elev":                                        // just in case
                                createInfo.setElev(node.InnerText);
                                break;

                            case "type":
                                createInfo.typeExtra = node.InnerText.Trim();
                                if (createInfo.typeExtra.ToLower().IndexOf("geocache") >= 0)
                                {
                                    createInfo.sym = "Geocache";
                                }
                                break;

                            case "link":
                                createInfo.url = node.InnerText.Trim();
                                //LibSys.StatusBar.Trace("    link='" + createInfo.url + "'");
                                break;
                            }
                        }

                        m_insertWaypoint(createInfo);
                    }
                    catch (Exception ee)
                    {
                        // bad node - not a big deal...
                        LibSys.StatusBar.Error("FileGeocachingLoc:processXml() node=" + nnode.Name + " " + ee.Message);
                    }
                }
            }
            catch (Exception e)
            {
                LibSys.StatusBar.Error("FileGeocachingLoc:processXml() " + e.Message);
                ret = false;
            }
            return(ret);
        }
示例#21
0
 public Entity Create(int entityId, CreateInfo createInfo)
 {
     return(Create(CreateEntity(entityId), createInfo));
 }
示例#22
0
        private static bool processGcPage(string url, byte[] dataDownloaded)
        {
            bool ret = false;

            int    lineno = 0;
            string line;
            int    state        = 0;
            string lineToSearch = "<span id=\"CacheName\">";
            int    pos;
            string cacheName = "";

            ASCIIEncoding enc      = new ASCIIEncoding();
            string        pageText = new String(enc.GetChars(dataDownloaded));

            CreateInfo createInfo = new CreateInfo();                   // we will recycle it in place, filling every time.

            StringReader stream = new StringReader(pageText);

            try
            {
                while ((line = stream.ReadLine()) != null && state < 99)
                {
                    lineno++;
                    switch (state)
                    {
                    case 0:
                        if ((pos = line.IndexOf(lineToSearch)) != -1)
                        {
                            pos += lineToSearch.Length;
                            int pos1 = line.IndexOf("</span>", pos);
                            if (pos1 > pos)
                            {
                                cacheName = line.Substring(pos, pos1 - pos).Trim();
                                LibSys.StatusBar.Trace("OK: cacheName='" + cacheName + "'");

                                state        = 1;
                                lineToSearch = "<span id=\"LatLon\"";
                            }
                        }
                        break;

                    case 1:
                        if ((pos = line.IndexOf(lineToSearch)) != -1)
                        {
                            pos += lineToSearch.Length;
                            int pos1 = line.IndexOf("</span>", pos);
                            if (pos1 > pos)
                            {
                                string sCacheCoords = line.Substring(pos, pos1 - pos).Trim();
                                LibSys.StatusBar.Trace("OK: cacheCoords='" + sCacheCoords + "'");
                                GeoCoord loc = getCleanLocation(sCacheCoords);
                                //LibSys.StatusBar.Trace("OK: loc='" + loc + "'");

                                createInfo.init("wpt");
                                createInfo.lat       = loc.Lat;
                                createInfo.lng       = loc.Lng;
                                createInfo.typeExtra = "geocache";
                                createInfo.source    = url;
                                createInfo.name      = cacheName;
                                createInfo.url       = url;

                                WaypointsCache.insertWaypoint(createInfo);

                                WaypointsCache.isDirty = true;

                                ret          = true;                                    // report successfully parsed page
                                state        = 99;
                                lineToSearch = "";
                            }
                        }
                        break;
                    }
                }
            }
            catch {}

            return(ret);
        }
示例#23
0
        public override bool process(string url, string filename, string source)
        {
            bool ret = true;

            LibSys.StatusBar.Trace("IP: FileDelormeTxt:process() filename=" + filename);

            int wpCount = 0;
            int lineno  = 0;

            try
            {
                string     line;
                int        state      = 0;
                double     zoneShift  = 0.0d;
                CreateInfo createInfo = new CreateInfo();                       // we will recycle it in place, filling every time.

                StreamReader stream = new StreamReader(filename);

                while ((line = stream.ReadLine()) != null)
                {
                    lineno++;
                    try
                    {
                        switch (state)
                        {
                        case 0:                                   // look for "Date, Time"
                            // Date, Time ((GMT-05:00) Eastern Time (DST)), Latitude, Longitude, Elevation (ft), Heading, Speed (mi/hr), GPS Status, Log Type
                            if (line.StartsWith("Date, Time"))
                            {
                                state = 1;
                                //LibSys.StatusBar.Trace("IP: FileDelormeTxt:process() state 1 filename=" + filename);
                                Project.trackId++;
                                createInfo.init("trk");
                                createInfo.id     = Project.trackId;
                                createInfo.source = source;
                                createInfo.name   = "DeLorme Blue Logger log";

                                m_insertWaypoint(createInfo);

                                int pos = line.IndexOf("((GMT");
                                if (pos >= 0)
                                {
                                    string sZoneShift = line.Substring(pos + 5, 3);
                                    zoneShift = Convert.ToDouble(sZoneShift);
                                }
                            }
                            break;

                        case 1:                                   // read WPT numpoints lines like:
                            // 08/01/2004, 11:04:04, 42:50:54.539, -70:52:16.195, -64.269, 44.08, 32.81, 3, 3
                            char[] sep = new Char[1] {
                                ','
                            };
                            string[] split = line.Split(sep);

                            DateTime dateTime = Convert.ToDateTime(split[0] + " " + split[1]);
                            dateTime = dateTime.AddHours(-zoneShift);

                            double lat  = ParseCoord(split[2]);
                            double lng  = ParseCoord(split[3]);
                            double elev = Convert.ToDouble(split[4]) * METERS_PER_FOOT;

                            createInfo.init("trkpt");
                            createInfo.id       = Project.trackId;                                                                      // relate waypoint to track
                            createInfo.dateTime = dateTime;
                            createInfo.lat      = lat;
                            createInfo.lng      = lng;
                            createInfo.elev     = elev;
                            createInfo.source   = source;

                            m_insertWaypoint(createInfo);
                            wpCount++;
                            break;
                        }
                    }
                    catch (Exception ee)
                    {
                        LibSys.StatusBar.Error("FileDelormeTxt:process():  file=" + filename + " line=" + lineno + " " + ee.Message);
                    }
                }
            }
            catch (Exception eee)
            {
                LibSys.StatusBar.Error("FileDelormeTxt:process(): " + eee.Message);
                ret = false;
            }
            //LibSys.StatusBar.Trace("OK: FileDelormeTxt:process() filename=" + filename + " lines=" + lineno + " waypoints=" + wpCount);
            return(ret);
        }