| |
 |
How to: Manually Load Cartesian Data to a Geo Map Using Predefined Coordinate Converters
To load Cartesian data to a Map Control, do the following
Form1.cs |
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraMap;
namespace BuildInCoordinateConverters {
public partial class Form1 : Form {
ShapefileDataAdapter adapter = new ShapefileDataAdapter();
List<MapData> mapData = new List<MapData> {
#region #Albers
new MapData() {
Filepath = "../../Shapefiles/Albers/switzerland.shp",
CoordinateSystem = new CartesianSourceCoordinateSystem() {
CoordinateConverter = new AlbersEqualAreaConticCartesianToGeoConverter() {
StandardParallelN = 60, StandardParallelS = 20,
Ellipsoid = Ellipsoid.GRS80, ProjectionCenter = new GeoPoint(40, -96)
}
}
},
#endregion #Albers
#region #Lambert
new MapData() {
Filepath = "../../Shapefiles/Lambert/Belize.shp",
CoordinateSystem = new CartesianSourceCoordinateSystem() {
CoordinateConverter = new LambertConformalConicCartesianToGeoConverter() {
StandardParallelN = 60, StandardParallelS = 20,
Ellipsoid = Ellipsoid.GRS80, ProjectionCenter = new GeoPoint(40, -96)
}
}
},
#endregion #Lambert
#region #TransverseMercator
new MapData() {
Filepath = "../../Shapefiles/TransverseMercator/israel.shp",
CoordinateSystem = new CartesianSourceCoordinateSystem() {
CoordinateConverter = new TransverseMercatorCartesianToGeoConverter() {
Ellipsoid = Ellipsoid.WGS84, ProjectionCenter = new GeoPoint(0, 33),
ScaleFactor = 0.9996, FalseNorthing = 0, FalseEasting = 500000
}
}
},
#endregion #TransverseMercator
#region #UTM
new MapData() {
Filepath = "../../Shapefiles/TransverseMercator/israel.shp",
CoordinateSystem = new CartesianSourceCoordinateSystem() {
CoordinateConverter = new UTMCartesianToGeoConverter() {
UtmZone = 36, Hemisphere = Hemisphere.Northern
}
}
},
#endregion #UTM
#region #MercatorAuxiliary
new MapData() {
Filepath = "../../Shapefiles/MercatorAux/montenegro.shp",
CoordinateSystem = new CartesianSourceCoordinateSystem() {
CoordinateConverter = new MercatorAuxiliarySphereCartesianToGeoConverter() {
SphereType = 0, ProjectionCenter = new GeoPoint(0,0)
}
}
},
#endregion #MercatorAuxiliary
};
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
cbData.DataSource = mapData;
VectorItemsLayer layer = new VectorItemsLayer() {Data = adapter};
layer.ItemStyle.Fill = Color.FromArgb(40, 255, 128, 0);
layer.DataLoaded +=layer_DataLoaded;
mapControl1.Layers.Add(layer);
}
void layer_DataLoaded(object sender, DataLoadedEventArgs e) {
mapControl1.ZoomToFitLayerItems(0.4);
}
private void cbData_SelectedIndexChanged(object sender, EventArgs e) {
MapData data = cbData.SelectedValue as MapData;
if (data == null) return;
Uri baseUri = new Uri(System.Reflection.Assembly.GetEntryAssembly().Location);
Uri fileUri = new Uri(baseUri, data.Filepath);
adapter.FileUri = fileUri;
adapter.SourceCoordinateSystem = data.CoordinateSystem;
}
}
class MapData {
public string Filepath { get; set; }
public SourceCoordinateSystem CoordinateSystem { get; set; }
public override string ToString() {
return String.Format("{0}; with {1}", Filepath, CoordinateSystem.CoordinateConverter);
}
}
}
|
Form1.vb |
Imports System
Imports System.Collections.Generic
Imports System.Drawing
Imports System.Windows.Forms
Imports DevExpress.XtraMap
Namespace BuildInCoordinateConverters
Partial Public Class Form1
Inherits Form
Private adapter As New ShapefileDataAdapter()
#Region "#Albers"
#End Region ' #Albers
#Region "#Lambert"
#End Region ' #Lambert
#Region "#TransverseMercator"
#End Region ' #TransverseMercator
#Region "#UTM"
#End Region ' #UTM
#Region "#MercatorAuxiliary"
#End Region ' #MercatorAuxiliary
Private mapData As New List(Of MapData)() From { _
New MapData() With { _
.Filepath = "../../Shapefiles/Albers/switzerland.shp", .CoordinateSystem = New CartesianSourceCoordinateSystem() With { _
.CoordinateConverter = New AlbersEqualAreaConticCartesianToGeoConverter() With {.StandardParallelN = 60, .StandardParallelS = 20, .Ellipsoid = Ellipsoid.GRS80, .ProjectionCenter = New GeoPoint(40, -96)} _
} _
}, _
New MapData() With { _
.Filepath = "../../Shapefiles/Lambert/Belize.shp", .CoordinateSystem = New CartesianSourceCoordinateSystem() With { _
.CoordinateConverter = New LambertConformalConicCartesianToGeoConverter() With {.StandardParallelN = 60, .StandardParallelS = 20, .Ellipsoid = Ellipsoid.GRS80, .ProjectionCenter = New GeoPoint(40, -96)} _
} _
}, _
New MapData() With { _
.Filepath = "../../Shapefiles/TransverseMercator/israel.shp", .CoordinateSystem = New CartesianSourceCoordinateSystem() With { _
.CoordinateConverter = New TransverseMercatorCartesianToGeoConverter() With {.Ellipsoid = Ellipsoid.WGS84, .ProjectionCenter = New GeoPoint(0, 33), .ScaleFactor = 0.9996, .FalseNorthing = 0, .FalseEasting = 500000} _
} _
}, _
New MapData() With { _
.Filepath = "../../Shapefiles/TransverseMercator/israel.shp", .CoordinateSystem = New CartesianSourceCoordinateSystem() With { _
.CoordinateConverter = New UTMCartesianToGeoConverter() With {.UtmZone = 36, .Hemisphere = Hemisphere.Northern} _
} _
}, _
New MapData() With { _
.Filepath = "../../Shapefiles/MercatorAux/montenegro.shp", .CoordinateSystem = New CartesianSourceCoordinateSystem() With { _
.CoordinateConverter = New MercatorAuxiliarySphereCartesianToGeoConverter() With {.SphereType = 0, .ProjectionCenter = New GeoPoint(0,0)} _
} _
} _
}
Public Sub New()
InitializeComponent()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
cbData.DataSource = mapData
Dim layer As New VectorItemsLayer() With {.Data = adapter}
layer.ItemStyle.Fill = Color.FromArgb(40, 255, 128, 0)
AddHandler layer.DataLoaded, AddressOf layer_DataLoaded
mapControl1.Layers.Add(layer)
End Sub
Private Sub layer_DataLoaded(ByVal sender As Object, ByVal e As DataLoadedEventArgs)
mapControl1.ZoomToFitLayerItems(0.4)
End Sub
Private Sub cbData_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cbData.SelectedIndexChanged
Dim data As MapData = TryCast(cbData.SelectedValue, MapData)
If data Is Nothing Then
Return
End If
Dim baseUri As New Uri(System.Reflection.Assembly.GetEntryAssembly().Location)
Dim fileUri As New Uri(baseUri, data.Filepath)
adapter.FileUri = fileUri
adapter.SourceCoordinateSystem = data.CoordinateSystem
End Sub
End Class
Friend Class MapData
Public Property Filepath() As String
Public Property CoordinateSystem() As SourceCoordinateSystem
Public Overrides Function ToString() As String
Return String.Format("{0}; with {1}", Filepath, CoordinateSystem.CoordinateConverter)
End Function
End Class
End Namespace
|
Is this topic helpful?
Additional Feedback
Close
|