====== 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();
}
}