Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using GMap.NET;
- using GMap.NET.MapProviders;
- using GMap.NET.WindowsForms;
- using GMap.NET.WindowsForms.Markers;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- using System.Xml.Serialization;
- namespace Zad2
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- }
- private void MapLoad1(object sender, EventArgs e)
- {
- gmap.Overlays[3].IsVisibile = false;
- }
- private void MapLoad2(object sender, EventArgs e)
- {
- if (gmap.Overlays.Count > 0)
- {
- gmap.Overlays[3].IsVisibile = true;
- }
- }
- private void Node(object sender, EventArgs e)
- {
- if (gmap.Overlays.Count > 0)
- {
- gmap.Overlays[2].IsVisibile = true;
- }
- }
- private void Node2(object sender, EventArgs e)
- {
- gmap.Overlays[2].IsVisibile = false;
- }
- private void Lines(object sender, EventArgs e)
- {
- if (gmap.Overlays.Count > 0)
- {
- gmap.Overlays[0].IsVisibile = true;
- }
- }
- private void Lines2(object sender, EventArgs e)
- {
- gmap.Overlays[0].IsVisibile = false;
- }
- private void Switches(object sender, EventArgs e)
- {
- if (gmap.Overlays.Count > 0)
- {
- gmap.Overlays[1].IsVisibile = true;
- }
- }
- private void Switches2(object sender, EventArgs e)
- {
- gmap.Overlays[1].IsVisibile = false;
- }
- private NetworkModel Deserialize(string path)
- {
- NetworkModel networkModel = null;
- XmlSerializer xmlSerializer = new XmlSerializer(typeof(NetworkModel));
- try
- {
- StreamReader reader = new StreamReader(path);
- networkModel = (NetworkModel)xmlSerializer.Deserialize(reader);
- reader.Close();
- }
- catch (Exception e)
- {
- //error
- }
- return networkModel;
- }
- public static void ToLatLon(double utmX, double utmY, int zoneUTM, out double latitude, out double longitude)
- {
- bool isNorthHemisphere = true;
- var diflat = -0.00066286966871111111111111111111111111;
- var diflon = -0.0003868060578;
- var zone = zoneUTM;
- var c_sa = 6378137.000000;
- var c_sb = 6356752.314245;
- var e2 = Math.Pow((Math.Pow(c_sa, 2) - Math.Pow(c_sb, 2)), 0.5) / c_sb;
- var e2cuadrada = Math.Pow(e2, 2);
- var c = Math.Pow(c_sa, 2) / c_sb;
- var x = utmX - 500000;
- var y = isNorthHemisphere ? utmY : utmY - 10000000;
- var s = ((zone * 6.0) - 183.0);
- var lat = y / (c_sa * 0.9996);
- var v = (c / Math.Pow(1 + (e2cuadrada * Math.Pow(Math.Cos(lat), 2)), 0.5)) * 0.9996;
- var a = x / v;
- var a1 = Math.Sin(2 * lat);
- var a2 = a1 * Math.Pow((Math.Cos(lat)), 2);
- var j2 = lat + (a1 / 2.0);
- var j4 = ((3 * j2) + a2) / 4.0;
- var j6 = ((5 * j4) + Math.Pow(a2 * (Math.Cos(lat)), 2)) / 3.0;
- var alfa = (3.0 / 4.0) * e2cuadrada;
- var beta = (5.0 / 3.0) * Math.Pow(alfa, 2);
- var gama = (35.0 / 27.0) * Math.Pow(alfa, 3);
- var bm = 0.9996 * c * (lat - alfa * j2 + beta * j4 - gama * j6);
- var b = (y - bm) / v;
- var epsi = ((e2cuadrada * Math.Pow(a, 2)) / 2.0) * Math.Pow((Math.Cos(lat)), 2);
- var eps = a * (1 - (epsi / 3.0));
- var nab = (b * (1 - epsi)) + lat;
- var senoheps = (Math.Exp(eps) - Math.Exp(-eps)) / 2.0;
- var delt = Math.Atan(senoheps / (Math.Cos(nab)));
- var tao = Math.Atan(Math.Cos(delt) * Math.Tan(nab));
- longitude = ((delt * (180.0 / Math.PI)) + s) + diflon;
- latitude = ((lat + (1 + e2cuadrada * Math.Pow(Math.Cos(lat), 2) - (3.0 / 2.0) * e2cuadrada * Math.Sin(lat) * Math.Cos(lat) * (tao - lat)) * (tao - lat)) * (180.0 / Math.PI)) + diflat;
- }
- private void button_Click(object sender, RoutedEventArgs e)
- {
- string path = "C:/Users/e3106-2014/Desktop/Zad2/GMap/Geographic.xml";
- NetworkModel networkModel = new NetworkModel();
- networkModel = Deserialize(path);
- GMapProvider.WebProxy = WebRequest.GetSystemWebProxy();
- GMapProvider.WebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
- gmap.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;
- GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
- gmap.SetPositionByKeywords("Novi Sad, Serbia");
- gmap.DragButton = System.Windows.Forms.MouseButtons.Left;
- gmap.ShowCenter = false;
- double latitude;
- double longitude;
- /* lines */
- GMapOverlay linesOver = new GMapOverlay("lines");
- foreach (var item in networkModel.Lines)
- {
- List<PointLatLng> points = new List<PointLatLng>();
- foreach (var item1 in item.Vertices)
- {
- ToLatLon((double)item1.X, (double)item1.Y, 34, out latitude, out longitude);
- points.Add(new PointLatLng(latitude, longitude));
- }
- GMapRoute route = new GMapRoute(points, item.Name);
- route.Stroke = new System.Drawing.Pen(System.Drawing.Color.RoyalBlue, 2);
- linesOver.Routes.Add(route);
- }
- gmap.Overlays.Add(linesOver);
- GMapOverlay switchesOver = new GMapOverlay("switches");
- /* switches */
- foreach (var item in networkModel.Switches)
- {
- ToLatLon((double)item.X, (double)item.Y, 34, out latitude, out longitude);
- GMapMarker marker = new GMarkerGoogle(
- new PointLatLng(latitude, longitude),
- GMarkerGoogleType.red_small);
- marker.ToolTipText = "Switch: " + item.Name;
- switchesOver.Markers.Add(marker);
- }
- gmap.Overlays.Add(switchesOver);
- GMapOverlay nodeOver = new GMapOverlay("nodes");
- /* nodes */
- foreach (var item in networkModel.Nodes)
- {
- ToLatLon((double)item.X, (double)item.Y, 34, out latitude, out longitude);
- GMapMarker marker = new GMarkerGoogle(
- new PointLatLng(latitude, longitude),
- GMarkerGoogleType.green_small);
- marker.ToolTipText = "Node: " + item.Name;
- nodeOver.Markers.Add(marker);
- }
- gmap.Overlays.Add(nodeOver);
- /* substations*/
- GMapOverlay substationsOver = new GMapOverlay("substations");
- foreach (var item in networkModel.Substations)
- {
- ToLatLon((double)item.X, (double)item.Y, 34, out latitude, out longitude);
- GMapMarker marker = new GMarkerGoogle(
- new PointLatLng(latitude, longitude),
- GMarkerGoogleType.blue_pushpin);
- marker.ToolTipText = "Substation: " + item.Name;
- substationsOver.Markers.Add(marker);
- }
- gmap.Overlays.Add(substationsOver);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement