====== Source Code ServicesEditionSample GeoRasterProjection CS 120720.zip ====== ====Program.cs==== using System; using System; using System.Windows.Forms; namespace SourceGeoRasterProjectionTest { static class Program { /// /// The main entry point for the application. /// [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(); } }