Represents the Document object
Inheritance: geContainer
        public static geKML ToKML(IEnumerable<Location> locations)
        {
            geDocument doc = new geDocument();
            doc.Name = "Locations exported";
            foreach (var loc in locations)
            {
                gePlacemark pm = new gePlacemark();

                //Create some coordinates for the point at which
                //this placemark will sit. (Lat / Lon)
                geCoordinates coords = new geCoordinates(new geAngle90(loc.Latitude), new geAngle180(loc.Longitude));

                //Create a point with these new coordinates
                gePoint point = new gePoint(coords);

                //Assign the point to the Geometry property of the
                //placemark.
                pm.Geometry = point;

                //Now lets add some other properties to our placemark
                pm.Name = loc.Name;
                pm.Description = "Visit at: " + loc.Time.ToString();
                //Finally, add the placemark to the document
                doc.Features.Add(pm);
            }
            //Now that we have our document, lets create our KML
            geKML kml = new geKML(doc);
            return kml;
        }
Ejemplo n.º 2
0
        public static geKML RunExample(string FileName)
        {
            // Use a Document as the root of the KML
            geDocument doc = new geDocument();
            doc.Name = "My Root Document";

            // Create a new style to be added the doc
            geStyle myStyle = new geStyle("myStyle");

            //add a new IconStyle to the style
            myStyle.IconStyle = new geIconStyle();
            myStyle.IconStyle.Icon = new geIcon("Example2.png");
            myStyle.IconStyle.Scale = 2F; //or (float)2

            //Add the style
            doc.StyleSelectors.Add(myStyle);

            //Create a Placemark to put in the document
            //This placemark is going to be a point
            //but it could be anything in the Geometry class
            gePlacemark pm = new gePlacemark();

            //Create some coordinates for the point at which
            //this placemark will sit. (Lat / Lon)
            geCoordinates coords = new geCoordinates(
                new geAngle90(37.422067),
            new geAngle180(-122.084437));

            //Create a point with these new coordinates
            gePoint point = new gePoint(coords);

            //Assign the point to the Geometry property of the
            //placemark.
            pm.Geometry = point;

            //Set the placemark's style to the style we created above
            pm.StyleUrl = "#myStyle";

            //Now lets add some other properties to our placemark
            pm.Name = "My Placemark";
            pm.Snippet = "This is where I put my Placemark";
            pm.Description =
                "I wonder where this is...GOOGLE!";

            //Finally, add the placemark to the document
            doc.Features.Add(pm);

            //Now that we have our document, lets create our KML
            geKML kml = new geKML(doc);

            //Add supporting files to the KMZ (assuming it's going to be rendered as KMZ
            byte[] myFile = File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + "\\images\\Example2.png");
            kml.Files.Add("Example2.png", myFile);

            return kml;
        }
Ejemplo n.º 3
0
        public FileResult GE()
        {
            var doc = new geDocument();
            doc.Visibility = true;
            doc.Features.Add(
                new geNetworkLink(
                    new geLink("http://krimikort.ekstrabladet.dk/kmz")
                    )
                );

            var kml = new geKML(doc);
            return new FileContentResult(kml.ToKMZ(), "application/vnd.google-earth.kmz");
        }
Ejemplo n.º 4
0
        public geDocument SqlGeogCommandToKmlDoc(string docname, string connstr, string cmdstr)
        {
            // Use a Document as the root of the KML
            geDocument doc = new geDocument();
            doc.Name = docname;

            //Finally, add the placemark to the document
            gePlacemark pm = null;
            pm = SqlGeogCommandToKmlPlacemark(connstr, cmdstr);
            if (pm != null)
                doc.Features.Add(pm);

            return doc;
        }
Ejemplo n.º 5
0
    /// <summary>
    /// Gets the initial kml that contains a NetworkLink.  The network link defined says to go and get another URL
    /// every x number of seconds.  This other URL will contain the data that has the dynamic data we want to see.
    /// </summary>
    /// <param name="linkURL">The other URL that we will get every x number of seconds</param>
    /// <returns></returns>
    public static geKML GetInit(string linkURL)
    {
        geDocument doc = new geDocument();
        doc.Name = "WebExample1Init";

        geLink link = new geLink(linkURL);
        link.RefreshMode = geRefreshModeEnum.onInterval;
        link.RefreshInterval = 10;

        geNetworkLink networkLink = new geNetworkLink(link);
        networkLink.Name = "WebExample1Data";
        networkLink.Snippet = "Refreshes every " + networkLink.Link.RefreshInterval.ToString() + " seconds.";

        doc.Features.Add(networkLink);

        return new geKML(doc);
    }
Ejemplo n.º 6
0
    /// <summary>
    /// This kml will contain the data that will be refreshed according to what is defined in GetINIT()
    /// </summary>
    /// <returns></returns>
    public static geKML GetWebExample1Data()
    {
        geDocument doc = new geDocument();

        //you probably won't see this since the document is a child of a network link
        doc.Name = "WebExample1Data";
        doc.Snippet = "This data should auto refresh based on the RefreshInterval of our parent NetworkLink";

        gePlacemark pm = new gePlacemark();
        geCoordinates coord = new geCoordinates(new geAngle90(37.422067), new geAngle180(-122.084437));
        gePoint point = new gePoint(coord);

        //Just show the server dateTime so that we know it's updating as advertised.
        pm.Name = DateTime.Now.ToString();
        pm.Description = "This data will be automatically refreshed based on the parent NetworkLink";
        pm.Geometry = point;

        doc.Features.Add(pm);

        return new geKML(doc);
    }
Ejemplo n.º 7
0
        public static geKML RunExample(string FileName)
        {
            // Use a Document as the root of the KML
            geDocument doc = new geDocument();
            doc.Name = "My Root Document";

            //Create a Placemark to put in the document
            //This placemark is going to be a point
            //but it could be anything in the Geometry class
            gePlacemark pm = new gePlacemark();

            //Create some coordinates for the point at which
            //this placemark will sit. (Lat / Lon)
            geCoordinates coords = new geCoordinates(
                new geAngle90(37.422067),
            new geAngle180(-122.084437));

            //Create a point with these new coordinates
            gePoint point = new gePoint(coords);

            //Assign the point to the Geometry property of the
            //placemark.
            pm.Geometry = point;

            //Now lets add some other properties to our placemark
            pm.Name = "My Placemark";
            pm.Snippet = "This is where I put my Placemark";
            pm.Description =
                "I wonder where this is...";

            //Finally, add the placemark to the document
            doc.Features.Add(pm);

            //Now that we have our document, lets create our KML
            geKML kml = new geKML(doc);

            return kml;
        }
Ejemplo n.º 8
0
        public static geKML RunExample(string FileName)
        {
            // Use a Document as the root of the KML
            geDocument doc = new geDocument();
            doc.Name = "My Root Document";

            /*

            //Create a Placemark to put in the document
            //This placemark is going to be a point
            //but it could be anything in the Geometry class
            gePlacemark pm = new gePlacemark();

            //Create some coordinates for the point at which
            //this placemark will sit. (Lat / Lon)
            geCoordinates coords = new geCoordinates(
                new geAngle90(37.422067),
            new geAngle180(-122.084437));

            //Create a point with these new coordinates
            gePoint point = new gePoint(coords);

            //Assign the point to the Geometry property of the
            //placemark.
            pm.Geometry = point;

            //Now lets add some other properties to our placemark
            pm.Name = "My Placemark";
            pm.Snippet = "This is where I put my Placemark";
            pm.Description =
                "I wonder where this is...";
            */

            Utilities util = new Utilities();

            // Point
            /*
            gePlacemark pm = util.SqlGeogCommandToKmlPlacemark(
                "server=.;database=geonames;integrated security=sspi",
                "select top(1) geog, name from geonames");

            // LineString
            gePlacemark pm = util.SqlGeogCommandToKmlPlacemark(
                "server=.;database=Sample_USA;integrated security=sspi",
                "select geog, signt + ' ' + signn from Highways where id = 1132");
            */

            // Polygon
            /*
            gePlacemark pm = util.SqlGeogCommandToKmlPlacemark(
                "server=.;database=Sample_USA;integrated security=sspi",
                "select geog, name_2 from counties where id = 847");
             */

            // Multi-ring polygon
            /*
            gePlacemark pm = util.SqlGeogCommandToKmlPlacemark(
                "server=.;database=SpatialSamples;integrated security=sspi",
                "select geog, cntry_name from cntry00 where fips_cntry = 'WE'");
             */

            // MultiLineString
            gePlacemark pm = util.SqlGeogCommandToKmlPlacemark(
                "server=.;database=Sample_USA;integrated security=sspi",
                "select geog, signt + ' ' + signn from Highways where id = 6315");

            //Finally, add the placemark to the document
            doc.Features.Add(pm);

            //Now that we have our document, lets create our KML
            geKML kml = new geKML(doc);

            return kml;
        }
Ejemplo n.º 9
0
        private static geKML GetKML()
        {
            geDocument doc = new geDocument();

            doc.Name = "Ekstra Bladets Krimikort";
            doc.AuthorName = "Ekstra Bladet";
            doc.Link = "http://krimikort.ekstrabladet.dk/";

            var categories = (new CategoryRepository()).GetCategories();
            doc.StyleSelectors.AddRange(
                categories.Select(c =>
                    new geStyle(c.DisplayName)
                    {
                        IconStyle = new geIconStyle
                        {
                            Icon = new geIcon(
                                string.Format("http://krimikort.ekstrabladet.dk/Content/icons/{0}.png",
                                    ViewUtil.GetIconName(c.CategoryId))),
                        },
                    }
                ));

            var erep = new EventRepository();
            var events = (from e in erep.GetGeocodedEvents()
                select new { e.Category, e.Title, e.BodyText, e.EventId, e.Lng, e.Lat }).
                ToList();

            doc.Features.AddRange(
                events.Select(e => new gePlacemark()
                {
                    Name = e.Title,
                    ID = e.EventId.ToString(),
                    Description = e.BodyText ?? "",
                    StyleUrl = "#" + (e.Category == null ? "Andet" : e.Category.DisplayName),
                    Link = EventExtensions.AbsUrl(e.Title, e.EventId),
                    Geometry = new gePoint(
                        new geCoordinates(
                            new geAngle90(e.Lat.Value), new geAngle180(e.Lng.Value)
                            )
                        )
                })
                );

            return new geKML(doc);
        }
Ejemplo n.º 10
0
        public geDocument SqlGeogInstanceToKmlDoc(SqlGeography geog, string docname, string pname, string description)
        {
            // Use a Document as the root of the KML
            geDocument doc = new geDocument();
            doc.Name = docname;

            //Finally, add the placemark to the document
            if (!IsNullOrEmpty(geog))
                doc.Features.Add(SqlGeogToKmlPlacemark(geog, pname, description));

            return doc;
        }
Ejemplo n.º 11
0
        public static geKML RunExample(string FileName)
        {
            // Use a Document as the root of the KML
            geDocument doc = new geDocument();
            doc.Name = "My Root Document";

            gePlacemark pm = new gePlacemark();

            //Always complete the boundary by adding an end point that matches your beginning point

            List<geCoordinates> outerCoords = new List<geCoordinates>();
            outerCoords.Add(new geCoordinates(new geAngle90(37), new geAngle180(-114)));
            outerCoords.Add(new geCoordinates(new geAngle90(37), new geAngle180(-108)));
            outerCoords.Add(new geCoordinates(new geAngle90(31), new geAngle180(-108)));
            outerCoords.Add(new geCoordinates(new geAngle90(31), new geAngle180(-114)));
            outerCoords.Add(new geCoordinates(new geAngle90(37), new geAngle180(-114)));

            List<geCoordinates> innerCoords1 = new List<geCoordinates>();
            innerCoords1.Add(new geCoordinates(new geAngle90(36), new geAngle180(-113)));
            innerCoords1.Add(new geCoordinates(new geAngle90(36), new geAngle180(-112)));
            innerCoords1.Add(new geCoordinates(new geAngle90(35), new geAngle180(-112)));
            innerCoords1.Add(new geCoordinates(new geAngle90(35), new geAngle180(-113)));
            innerCoords1.Add(new geCoordinates(new geAngle90(36), new geAngle180(-113)));

            List<geCoordinates> innerCoords2 = new List<geCoordinates>();
            innerCoords2.Add(new geCoordinates(new geAngle90(34), new geAngle180(-113)));
            innerCoords2.Add(new geCoordinates(new geAngle90(34), new geAngle180(-112)));
            innerCoords2.Add(new geCoordinates(new geAngle90(33), new geAngle180(-112)));
            innerCoords2.Add(new geCoordinates(new geAngle90(33), new geAngle180(-113)));
            innerCoords2.Add(new geCoordinates(new geAngle90(34), new geAngle180(-113)));

            geOuterBoundaryIs outer = new geOuterBoundaryIs(new geLinearRing(outerCoords));

            gePolygon poly = new gePolygon(outer);

            geInnerBoundaryIs inner1 = new geInnerBoundaryIs(new geLinearRing(innerCoords1));
            geInnerBoundaryIs inner2 = new geInnerBoundaryIs(new geLinearRing(innerCoords2));
            poly.InnerBoundaries.Add(inner1);
            poly.InnerBoundaries.Add(inner2);

            pm.Geometry = poly;

            doc.Features.Add(pm);

            //Lets add a Line somewhere too...
            geStyle myLineStyle = new geStyle("myLineStyle");
            myLineStyle.LineStyle = new geLineStyle();
            myLineStyle.LineStyle.Color.SysColor = Color.Yellow;
            myLineStyle.LineStyle.Width = 4;  //This may or may not work, depends on the end user's video card

            doc.StyleSelectors.Add(myLineStyle);

            gePlacemark pmLine = new gePlacemark();
            pmLine.StyleUrl = "#myLineStyle";
            pmLine.Name = "Example Line";
            pmLine.Description = "Some description";

            List<geCoordinates> lineCoords = new List<geCoordinates>();
            lineCoords.Add(new geCoordinates(new geAngle90(35),new geAngle180(-117)));
            lineCoords.Add(new geCoordinates(new geAngle90(35),new geAngle180(-106)));

            geLineString line = new geLineString(lineCoords);

            pmLine.Geometry = line;

            doc.Features.Add(pmLine);

            //Now that we have our document, lets create our KML
            geKML kml = new geKML(doc);

            return kml;
        }
        public geFeature GetExportKML(IList<Graphic> Graphics,
            string featureName,
            string featureId,
            List<Symbol> usedSymbols)
        {
            geDocument dt;
              geStyle st;
              Random random;
              Color color;

              mFeatureName = featureName;
              mFeatureId = featureId;
              mObjects = Graphics;
              mUsedSymbols = usedSymbols;

              dt = new geDocument();

              dt.Name = mFeatureName;

              if(mObjects.Count > 0)
              {
            mStyleName = mFeatureId + "styleid";
            mSchemaName = mFeatureId + "schemaid";

            foreach(Graphic graphic in mObjects)
            {
              dt.Schemas.Add(CreateKMLPlacemarkSchema(graphic));

            }
            dt.Features.AddRange(CreateKMLPlacemarks());
              }

              mUsedSymbols = usedSymbols;

              dt.StyleSelectors = new List<geStyleSelector>();

              dt.StyleSelectors.AddRange(CreateKMLStyles());

              st = new geStyle(mStyleName);

              random = new Random();
              color = Color.FromArgb(255, (byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255));

              st.PolyStyle = new gePolyStyle();

              st.PolyStyle.Color.SysColor = color;
              st.PolyStyle.Fill = true;
              st.LineStyle = new geLineStyle();
              st.LineStyle.Color.SysColor = color;

              dt.StyleSelectors.Add(st);

              return dt;
        }
        // This method is to be called once all the targets
        // are loaded via AddNewTarget. Once KML is created the list
        // will be emptied.
        public void BuildKML()
        {
            string exampleFileName = "";
            string exampleFileExt = "kmz";
            string file_name = "ASTX_TO_KML";

            // Use a Document as the root of the KML
            geDocument doc = new geDocument();
            doc.Name = "Asterix to KML";

            // Create a new style to be added the doc
            geStyle myStyle = new geStyle("myStyle");

            //add a new IconStyle to the style
            myStyle.IconStyle = new geIconStyle();
            myStyle.IconStyle.Icon = new geIcon("ac_image.png");
            myStyle.IconStyle.Scale = 1.0F; //or (float)1

            myStyle.LabelStyle = new geLabelStyle();
            myStyle.LabelStyle.Color.SysColor = Color.White;

            myStyle.LineStyle = new geLineStyle();
            myStyle.LineStyle.Color.SysColor = Color.Black;
            myStyle.LineStyle.Width = 4;

            //Add the style
            doc.StyleSelectors.Add(myStyle);

            foreach (DynamicDisplayBuilder.TargetType Target in TargetList)
            {
                //Create a Placemark to put in the document
                //This placemark is going to be a point
                //but it could be anything in the Geometry class
                gePlacemark pm = new gePlacemark();

                //Create some coordinates for the point at which
                //this placemark will sit. (Lat / Lon)
                geCoordinates coords = new geCoordinates(
                    new geAngle90(Target.Lat),
                new geAngle180(Target.Lon));

                double LevelInMeeters = 0.0;

                // Assign the altitude
                if (Target.ModeC != null)
                {
                    if (Target.ModeC != "---")
                        LevelInMeeters = (double.Parse(Target.ModeC) * 100.00) * SharedData.FeetToMeeters;
                }

                coords.Altitude = (float)LevelInMeeters;

                //Create a point with these new coordinates
                gePoint point = new gePoint(coords);
                point.AltitudeMode = geAltitudeModeEnum.absolute;
                point.Extrude = true;

                //Assign the point to the Geometry property of the
                //placemark.
                pm.Geometry = point;

                //Set the placemark's style to the style we created above
                pm.StyleUrl = "#myStyle";

                if (Properties.Settings.Default.GE_Show_ModeA)
                    pm.Name = Target.ModeA;

                if (Properties.Settings.Default.GE_Show_ModeC)
                {
                    if (Properties.Settings.Default.Show_ModeC_as_FL)
                        pm.Name = pm.Name + "  " + "FL:" + Target.ModeC;
                    else
                        pm.Name = pm.Name + "  " + LevelInMeeters.ToString() + "m";
                }

                if (Properties.Settings.Default.GE_Show_ModeC)
                {
                    pm.Name = pm.Name + " " + Target.ACID_Mode_S;
                }

                pm.Snippet = "Snipet Test";
                pm.Description = "Blaa Bla Blaaaa";

                //Finally, add the placemark to the document
                doc.Features.Add(pm);
            }

            geKML kml = new geKML(doc);

            //Add supporting files to the KMZ (assuming it's going to be rendered as KMZ
            byte[] myFile = File.ReadAllBytes(@"C:\ASTERIX\GE\ac_image.png");
            kml.Files.Add("ac_image.png", myFile);

            exampleFileName = Properties.Settings.Default.GE_Dest_Path + "\\" + file_name + "." + exampleFileExt;
            File.WriteAllBytes(exampleFileName, kml.ToKMZ());

            // Clear the list
            TargetList.Clear();
        }
Ejemplo n.º 14
0
 //Ia lista de Layere impreuna cu proprietatile lor si genereaza un fisier kml din ele.
 public KMLGenerator(List<LayerProperties> layers)
 {
     kmlLayers = layers;
     kmlDocument = new geDocument();
 }