Esempio n. 1
0
    public static SatelliteImage ReadSatelliteImage(string path, int width, int height)
    {
        SatelliteImage satelliteImage = new SatelliteImage();

        satelliteImage.width  = width;
        satelliteImage.height = height;

        byte[] imageData;

        try {
            imageData = StreamUtil.ReadAllBytes(path);
        } catch (Exception e) {
            Debug.Log(e.Message);
            Debug.Log("Satellite image at '" + path + "' not found!");

            satelliteImage.texture = null;
            return(satelliteImage);
        }

        Texture2D texture = new Texture2D(width, height, TextureFormat.ARGB32, false);

        texture.filterMode = FilterMode.Point;
        texture.LoadImage(imageData);

        satelliteImage.texture = texture;

        return(satelliteImage);
    }
Esempio n. 2
0
        void imageRequests_ImageRequestReceived(object sender, System.EventArgs e)
        {
            satelliteImages = sender as List <SatelliteImage>;
            forestLaw       = satelliteImages.Where(x => x.IsForestLaw == true).FirstOrDefault();
            satelliteImages = satelliteImages.Where(x => x.IsForestLaw == false).ToList();

            if (satelliteImages != null && satelliteImages.Count != 0)
            {
                includedSatelliteImages = satelliteImages.Where(x => x.Name.IndexOf("base") > -1).ToList(); //Muestro solo 3 mas las base, el resto las mando al combo
                //MessageBox.Show("Imagen base: " + satelliteImages.Where(x => x.Name.IndexOf("base") > -1).FirstOrDefault().Name);
                includedSatelliteImages.AddRange(satelliteImages.Where(x => x.Name.IndexOf("base") == -1).OrderByDescending(x => x.Published).Take(3).ToList());
                Current.Instance.LastImageDate = includedSatelliteImages.First().Published.Value.ToString("MMMM yyyy");
                CreateTimeLine();

                if (!Current.Instance.TutorialStarted)
                {
                    var text = this.DatesGrid.Children[this.DatesGrid.ColumnDefinitions.Count - 1] as TextBlock; //Me traigo la ultima fecha del timeline
                    if (text != null)
                    {
                        ChangingOpacity(this, new ChangingOpacityEventArgs {
                            Title = text.Text, IsCloudy = includedSatelliteImages.First().IsCloudy, IsInitial = true
                        });
                    }
                }
            }
        }
Esempio n. 3
0
    public void SatelliteImageCorrectlySlicedAndFlippedToForBottomRightSlice()
    {
        MapDisplayData dispData = new MapDisplayData();

        data.SetX(5);
        data.SetY(5);
        dispData.SetMapData(data);

        SatelliteImage image = new SatelliteImage();

        Color[]   textureMap = new Color[20 * 20];
        Texture2D texture    = new Texture2D(20, 20);

        texture.SetPixels(textureMap);
        image.texture = texture;
        image.width   = 10;
        image.height  = 10;

        texture.SetPixel(10, 9, Color.red);
        texture.SetPixel(19, 0, Color.blue);

        SatelliteImageService.satelliteImage    = image;
        SatelliteImageService.useSatelliteImage = true;

        //Color[] colorMap = dispData.GenerateTexture();
        Texture2D textureSlice = dispData.GenerateTexture(0);

        Assert.True(textureSlice.GetPixel(0, 0) == Color.red);
        Assert.True(textureSlice.GetPixel(9, 9) == Color.blue);

        //Assert.True (colorMap [0] == Color.red);
        //Assert.True (colorMap [99] == Color.blue);
    }
Esempio n. 4
0
    public static ColorMap ColorMapForSatelliteImage(MapData mapData)
    {
        SatelliteImage satelliteImage = SatelliteImageService.getSatelliteImage();
        double         scale          = satelliteImage.getScale();

        int textureWidth  = (int)(mapData.GetWidth() * scale);
        int textureHeight = (int)(mapData.GetHeight() * scale);

        Color[] colorArray = new Color[textureWidth * textureHeight];
        if (!satelliteImage.hasSatelliteImage())
        {
            return(new ColorMap(colorArray, textureWidth, textureHeight));
        }

        MapDataSlice slice = mapData.AsSlice();

        for (int y = 0; y < textureHeight; y++)
        {
            int sliceY   = (int)(slice.GetY() * scale);
            int flippedY = satelliteImage.texture.height - (int)(sliceY + y) - 1;
            Array.ConstrainedCopy(satelliteImage.texture.GetPixels((int)(slice.GetX() * scale), flippedY, textureWidth, 1), 0, colorArray, (y * textureWidth), textureWidth);
        }

        return(new ColorMap(colorArray, textureWidth, textureHeight));
    }
Esempio n. 5
0
        public SatelliteImage Update(SatelliteImage satelliteImage)
        {
            try
            {
                connection.Open();
                if (satelliteImage.Published == null)
                {
                    satelliteImage.Published = DateTime.UtcNow.Date;
                }
                var cmd = connection.CreateCommand() as SqlCommand;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "SatelliteImage_Update";

                cmd.Parameters.Add(new SqlParameter("@id", satelliteImage.Id));
                cmd.Parameters.Add(new SqlParameter("@extent", satelliteImage.Wkt));
                cmd.Parameters.Add(new SqlParameter("@name", satelliteImage.Name));
                cmd.Parameters.Add(new SqlParameter("@published", satelliteImage.Published));
                cmd.Parameters.Add(new SqlParameter("@minlevel", satelliteImage.MinLevel));
                cmd.Parameters.Add(new SqlParameter("@maxlevel", satelliteImage.MaxLevel));
                cmd.Parameters.Add(new SqlParameter("@iscloudy", satelliteImage.IsCloudy));
                cmd.Parameters.Add(new SqlParameter("@isForestLaw", satelliteImage.IsForestLaw));
                cmd.Parameters.Add(new SqlParameter("@regionId", satelliteImage.RegionId));
                cmd.ExecuteNonQuery();
                connection.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(satelliteImage);
        }
 public void SatelliteImageLoadingWorks()
 {
     satelliteImage = SatelliteImageImporter.ReadSatelliteImage("Assets/Resources/satelliteTest.png", 827, 1024);
     Assert.True(satelliteImage.width == 827, "Wrong width!");
     Assert.True(satelliteImage.height == 1024, "Wrong height!");
     Assert.True(satelliteImage.hasSatelliteImage(), "A satellite image was not loaded!");
     Assert.True(satelliteImage.texture != null, "No texture was loaded!");
     Assert.True(satelliteImage.texture.GetPixels().Length == 827 * 1024, "Wrong number of pixels!");
 }
Esempio n. 7
0
        public SatelliteLayerControl(SatelliteImage satelliteLayer, bool isAdded)
        {
            InitializeComponent();
            this.isAdded        = isAdded;
            this.satelliteLayer = satelliteLayer;

            xhkAdd.IsChecked = this.isAdded;
            initialized      = true;
            UpdateInfo();
        }
Esempio n. 8
0
        private void AddSatelliteImagery(SatelliteImage satelliteImage)
        {
            var isAdded = true;
            var result  = Current.Instance.LayerHelper.LayerCollection.FindLayer(satelliteImage.Name);

            var size = result.Count();

            if (size == 0)
            {
                isAdded = false;
            }

            satelliteLayers.Children.Add(new SatelliteLayerControl(satelliteImage, isAdded));
        }
Esempio n. 9
0
        public HttpResponseMessage <SatelliteImage> Post(SatelliteImage satelliteImage, HttpRequestMessage <SatelliteImage> request)
        {
            if (satelliteImage != null)
            {
                var satelliteImageDb = satelliteImageRepository.Insert(satelliteImage);

                var response = new HttpResponseMessage <SatelliteImage>(satelliteImageDb)
                {
                    StatusCode = HttpStatusCode.Created
                };
                return(response);
            }
            return(new HttpResponseMessage <SatelliteImage>(null)
            {
                StatusCode = HttpStatusCode.NotFound,
            });
        }
Esempio n. 10
0
        public void addForestLawLayer(SatelliteImage image, int positionIndex)
        {
            var topLeft     = SphericalMercator.FromLonLat(image.Extent.MinX, image.Extent.MinY);
            var bottomRight = SphericalMercator.FromLonLat(image.Extent.MaxX, image.Extent.MaxY);
            var newExtend   = new BruTile.Extent(topLeft.x, topLeft.y, bottomRight.x, bottomRight.y);

            var schema = new SphericalMercatorWorldSchema();

            schema.Extent = newExtend;

            var max = image.MaxLevel + 1;

            while (schema.Resolutions.Count > max)
            {
                schema.Resolutions.RemoveAt(max);
            }
            var tms = new TmsTileSource(image.UrlTileCache, schema);

            //EL NOMBRE DEL LAW LEYER SIEMPRE ES EL MISMO: RegionId + Constants.RegionLawLayerName
            Current.Instance.LayerHelper.InsertLayer(new TileLayer(tms)
            {
                LayerName = Current.Instance.Earthwatcher.PlayingRegion + Constants.RegionLawLayerName, Opacity = 0, Tag = image.Published.Value
            }, positionIndex);
        }
Esempio n. 11
0
        public SatelliteImage Insert(SatelliteImage satelliteImage)
        {
            try
            {
                connection.Open();
                if (satelliteImage.Published == null)
                {
                    satelliteImage.Published = DateTime.UtcNow.Date;
                }
                var cmd = connection.CreateCommand() as SqlCommand;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "SatelliteImage_Insert";

                cmd.Parameters.Add(new SqlParameter("@extent", satelliteImage.Wkt));
                cmd.Parameters.Add(new SqlParameter("@name", satelliteImage.Name));
                cmd.Parameters.Add(new SqlParameter("@urltilecache", (object)satelliteImage.UrlTileCache ?? DBNull.Value));
                cmd.Parameters.Add(new SqlParameter("@published", satelliteImage.Published));
                cmd.Parameters.Add(new SqlParameter("@minlevel", satelliteImage.MinLevel));
                cmd.Parameters.Add(new SqlParameter("@maxlevel", satelliteImage.MaxLevel));
                cmd.Parameters.Add(new SqlParameter("@iscloudy", satelliteImage.IsCloudy));
                cmd.Parameters.Add(new SqlParameter("@isForestLaw", satelliteImage.IsForestLaw));
                cmd.Parameters.Add(new SqlParameter("@regionId", satelliteImage.RegionId));
                var idParameter = new SqlParameter("@ID", SqlDbType.Int)
                {
                    Direction = ParameterDirection.Output
                };
                cmd.Parameters.Add(idParameter);
                cmd.ExecuteNonQuery();
                connection.Close();
                return(satelliteImage);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 12
0
 public void LackOfImageFileCreatesEmptySatelliteImageObject()
 {
     satelliteImage = SatelliteImageImporter.ReadSatelliteImage("Assets/Resources/wrongfile.png", 10, 10);
     Assert.True(!satelliteImage.hasSatelliteImage(), "A satellite image was erroneously loaded!");
 }
Esempio n. 13
0
        public static SatelliteImage ReadXmlFileAndParseImage(string imageName) // Name Format:  RegionId_ImageName
        {
            //Paths and loading document
            var path = ConfigurationManager.AppSettings.Get("xml.greenpeaceweb.path") + ConfigurationManager.AppSettings.Get("xml.satelliteimagesregion.path");
            //TODO: Agegar el regionId al path /1/2008 /X/imageName
            var         unifiedPath = path + imageName + "/tilemapresource.xml";
            string      Rstring     = string.Empty;
            WebRequest  myWebRequest;
            WebResponse myWebResponse;

            try
            {
                myWebRequest  = WebRequest.Create(unifiedPath);
                myWebResponse = myWebRequest.GetResponse();                      //Returns a response from an Internet resource
                Stream       streamResponse = myWebResponse.GetResponseStream(); //return the data stream from the internet
                StreamReader sreader        = new StreamReader(streamResponse);  //reads the data stream
                Rstring = sreader.ReadToEnd();                                   //reads it to the end
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Error reading file. unifiedPath: {0}, exception: {1}", unifiedPath, ex));
            }
            XDocument xDoc = XDocument.Parse(Rstring);

            //Variables declarations
            int    minLevel, maxLevel, regionId = 0;
            double xMin, xMax, yMin, yMax = 0;
            string name;
            var    doc = xDoc.Descendants("TileMap").ToList();

            System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
            customCulture.NumberFormat.NumberDecimalSeparator    = ".";
            System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;

            //Xmin Xmax Ymin Ymax
            var xyMinMax = doc.Elements("BoundingBox").First();

            Double.TryParse(xyMinMax.Attribute("minx").Value, NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-US"), out xMin);
            Double.TryParse(xyMinMax.Attribute("maxx").Value, NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-US"), out xMax);
            Double.TryParse(xyMinMax.Attribute("miny").Value, NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-US"), out yMin);
            Double.TryParse(xyMinMax.Attribute("maxy").Value, NumberStyles.Number, CultureInfo.CreateSpecificCulture("en-US"), out yMax);

            logger.Info(string.Format("culture: xmin - xmax - ymin - ymax:  {0} --- {1} --- {2} --- {3}", xMin, xMax, yMin, yMax));

            //Zoom Levels
            var zoomLevels = doc.Elements("TileSets").First();
            var levels     = zoomLevels.Elements().ToList();
            var l1         = levels.First();
            var l2         = levels.Last();

            minLevel = Convert.ToInt32(l1.Attribute("order").Value);
            maxLevel = Convert.ToInt32(l2.Attribute("order").Value);

            //Name Data
            try
            {
                regionId = Convert.ToInt32(imageName.Split('_').FirstOrDefault());
            }
            catch
            {
                regionId = 1;
            }
            name = imageName;//.Substring(imageName.IndexOf("_") + 1);

            SatelliteImage newImage = new SatelliteImage();

            newImage.Published    = DateTime.Now;
            newImage.IsCloudy     = false;
            newImage.IsForestLaw  = false;
            newImage.Name         = name;
            newImage.xmin         = xMin;
            newImage.xmax         = xMax;
            newImage.ymin         = yMin;
            newImage.ymax         = yMax;
            newImage.Wkt          = "POLYGON((" + yMin + " " + xMin + ", " + yMax + " " + xMin + ", " + yMax + " " + xMax + ", " + yMin + " " + xMax + ", " + yMin + " " + xMin + "))";
            newImage.MinLevel     = minLevel;
            newImage.MaxLevel     = maxLevel;
            newImage.RegionId     = regionId;
            newImage.UrlTileCache = path + imageName;

            return(newImage);
        }
Esempio n. 14
0
 private void AddExtent(SatelliteImage satelliteImage)
 {
     satelliteImage.Extent = new Extent(satelliteImage.xmin, satelliteImage.ymin, satelliteImage.xmax, satelliteImage.ymax, 4326);
 }