Beispiel #1
0
        /// <summary>
        /// rebuild gpxFile from Map Layers
        /// </summary>
        /// <param name="oLayerGPXPolylines"></param>
        /// <param name="oLayerGPXSymbols"></param>
        /// <returns></returns>
        public static GPXFile makeGPXfromMapLayers(LayerVectors oLayerGPXPolylines, LayerVectors oLayerGPXSymbols)
        {
            GPXFile gpxFile = new GPXFile();

            GPXTrk trk = new GPXTrk();
            gpxFile.trks.Add(trk);

            for (int i = 0; i < oLayerGPXPolylines.FeaturesCount; i++)
            {
                GPXTrkSeg seg = new GPXTrkSeg();

                Feature f = oLayerGPXPolylines.FeatureGet(i);
                if (f is PolylineFeature)
                {
                    PolylineFeature oPolyline = (PolylineFeature)f;

                    for (int ipart = 0; ipart < oPolyline.m_oParts.Count; ipart++)
                    {
                        Part part = oPolyline.m_oParts[ipart];
                        for (int ipoint = 0; ipoint < part.Points.Count; ipoint++)
                        {
                            DPoint layerPoint = part.Points[ipoint];
                            SymbolFeature symbol = (SymbolFeature)layerPoint.Tag;

                            double lon = layerPoint.X;
                            double lat = layerPoint.Y;
                            double ele = (double)symbol.getField("ele");
                            DateTime time = (DateTime)symbol.getField("time");

                            GpxWpt wpt = new GpxWpt(lon, lat, ele, time, -99);
                            wpt.selected = layerPoint.Selected;

                            seg.wpts.Add(wpt);
                        }
                    }
                }
                if (seg.wpts.Count > 0)
                {
                    trk.trkSeg.Add(seg);
                }
            }
            return gpxFile;
        }
Beispiel #2
0
        /// <summary>
        /// create features on layer based on gpxFile object
        /// </summary>
        /// <param name="gpxFile"></param>
        /// <param name="oLayerGPXPolylines"></param>
        /// <param name="oLayerGPXSymbols"></param>
        public static void makeMapLayersFromGPX(GPXFile gpxFile, LayerVectors oLayerGPXPolylines, LayerVectors oLayerGPXSymbols)
        {
            oLayerGPXSymbols.FeaturesClear();
            oLayerGPXPolylines.FeaturesClear();

            // fill layers with data
            if (gpxFile != null)
            {
                for (int iTrk = 0; iTrk < gpxFile.trks.Count; iTrk++)
                {
                    GPXTrk trk = gpxFile.trks[iTrk];

                    for (int iSeg = 0; iSeg < trk.trkSeg.Count; iSeg++)
                    {
                        GPXTrkSeg seg = trk.trkSeg[iSeg];
                        List<DPoint> oPoints1 = new List<DPoint>();

                        for (int iWpt = 0; iWpt < seg.wpts.Count; iWpt++)
                        {
                            GpxWpt wpt = seg.wpts[iWpt];

                            DPoint oPoint = new DPoint(wpt.lon, wpt.lat);
                            oPoint.Selected = wpt.selected;

                            oPoints1.Add(oPoint);

                            // add gpx point
                            Feature oSymbol = FeatureFactory.CreateSymbol(wpt.lon, wpt.lat, (uint)0xFF00FF00);
                            oSymbol.Tag = oPoint;
                            oLayerGPXSymbols.FeaturesAdd(oSymbol);

                            // link point to symbol and symbol to point
                            oPoint.Tag = oSymbol;

                            // fill data
                            oSymbol.setField("lat", wpt.lat);
                            oSymbol.setField("lon", wpt.lon);
                            oSymbol.setField("ele", wpt.ele);
                            oSymbol.setField("time", wpt.time);
                        }
                        if (oPoints1.Count > 0)
                        {
                            PolylineFeature oPolyline1 = FeatureFactory.CreatePolyline(oPoints1, new Style(Color.Green));
                            oLayerGPXPolylines.FeaturesAdd(oPolyline1);
                        }
                    }
                }
            }
        }