Table of Contents

Source Code ServicesEditionSample GeoRasterProjection CS 120720.zip

Program.cs

 using System;  
 using System;  
 using System.Windows.Forms;  
 
 namespace SourceGeoRasterProjectionTest  
 {  
     static class Program  
     {  
         /// <summary>  
         /// The main entry point for the application.  
         /// </summary>  
         [STAThread]  
         static void Main()  
         {  
             Application.EnableVisualStyles();  
             Application.SetCompatibleTextRenderingDefault(false);  
             Application.Run(new Sample());  
         }  
     }  
 }  
 

Sample.cs

 using System;  
 using System.Drawing;  
 using System.Windows.Forms;  
 using ThinkGeo.MapSuite.Core;  
 
 public partial class Sample : Form  
 {  
     private MapEngine mapEngine;  
     private GeographyUnit currentMapUnit;  
     private RectangleShape originalExtent;  
 
     public Sample()  
     {  
         InitializeComponent();  
     }  
 
     private void GeoRasterProjectionTest_Load(object sender, EventArgs e)  
     {  
         currentMapUnit = GeographyUnit.DecimalDegree;  
         mapEngine = new MapEngine();  
 
         ShapeFileFeatureLayer shapeFileLayer = new ShapeFileFeatureLayer(@"../../Data/Countries02.shp");  
         shapeFileLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;  
         shapeFileLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;  
         shapeFileLayer.Open();  
         originalExtent = shapeFileLayer.GetBoundingBox();  
 
         GeoTiffRasterLayer tiffRasterLayer = new GeoTiffRasterLayer(@"../../data/World.tif");  
         shapeFileLayer.Open();  
         mapEngine.CurrentExtent = ExtentHelper.SnapToZoomLevel(shapeFileLayer.GetBoundingBox(), currentMapUnit, map.Width, map.Height, new ZoomLevelSet());  
         mapEngine.StaticLayers.Add("tiffRasterLayer", tiffRasterLayer);  
         mapEngine.StaticLayers.Add("shapeFileLayer", shapeFileLayer);  
         listBox1.SelectedIndex = 0;  
 
         DrawImage();  
     }  
 
     private void DrawImage()  
     {  
         Bitmap bitmap = new Bitmap(map.Width, map.Height);  
         mapEngine.OpenAllLayers();  
         mapEngine.DrawStaticLayers(bitmap, currentMapUnit);  
         mapEngine.CloseAllLayers();  
 
         map.Image = bitmap;  
     }  
 
     private void ToolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e)  
     {  
         switch (e.Button.Tag.ToString())  
         {  
             case "Zoom In":  
                 mapEngine.CurrentExtent.ScaleDown(50);  
                 break;  
             case "Zoom Out":  
                 mapEngine.CurrentExtent.ScaleUp(50);  
                 break;  
             case "Full Extent":  
                 ShapeFileFeatureLayer worldLayer = (ShapeFileFeatureLayer)mapEngine.StaticLayers["shapeFileLayer"];  
                 worldLayer.Open();  
                 mapEngine.CurrentExtent = ExtentHelper.SnapToZoomLevel(worldLayer.GetBoundingBox(), currentMapUnit, map.Width, map.Height, new ZoomLevelSet());  
                 break;  
             case "Pan Left":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Left, 20);  
                 break;  
             case "Pan Right":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Right, 20);  
                 break;  
             case "Pan Up":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Up, 20);  
                 break;  
             case "Pan Down":  
                 mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Down, 20);  
                 break;  
             default:  
                 break;  
         }  
         DrawImage();  
     }  
 
     private void listBox1_SelectedIndexChanged(object sender, EventArgs e)  
     {  
         GeoTiffRasterLayer tiffRasterLayer = (GeoTiffRasterLayer)mapEngine.StaticLayers["tiffRasterLayer"];  
         ShapeFileFeatureLayer shapeFileLayer = (ShapeFileFeatureLayer)mapEngine.StaticLayers["shapeFileLayer"];  
 
         switch (listBox1.SelectedIndex)  
         {  
             case 0:  
                 currentMapUnit = GeographyUnit.DecimalDegree;  
                 tiffRasterLayer.ImageSource.Projection = null;  
                 shapeFileLayer.FeatureSource.Projection = null;  
                 mapEngine.CurrentExtent = ExtentHelper.SnapToZoomLevel(originalExtent, currentMapUnit, map.Width, map.Height, new ZoomLevelSet());  
                 break;  
             case 1:  
                 currentMapUnit = GeographyUnit.Meter;  
                 Proj4Projection projection = new Proj4Projection();  
                 projection.InternalProjectionParametersString = ManagedProj4Projection.GetDecimalDegreesParametersString();  
                 projection.ExternalProjectionParametersString = ManagedProj4Projection.GetSphericalMercatorParametersString();  
                 tiffRasterLayer.ImageSource.Projection = projection;  
                 shapeFileLayer.FeatureSource.Projection = projection;  
                 projection.Open();  
                 mapEngine.CurrentExtent = ExtentHelper.SnapToZoomLevel(projection.ConvertToExternalProjection(originalExtent), currentMapUnit, map.Width, map.Height, new ZoomLevelSet());  
                 break;  
             default:  
                 break;  
         }  
 
         DrawImage();  
     }  
 }