daily pastebin goal
57%
SHARE
TWEET

Untitled

a guest Feb 14th, 2018 78 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using GMap.NET;
  2. using GMap.NET.MapProviders;
  3. using GMap.NET.WindowsForms;
  4. using GMap.NET.WindowsForms.Markers;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Net;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows;
  13. using System.Windows.Controls;
  14. using System.Windows.Data;
  15. using System.Windows.Documents;
  16. using System.Windows.Input;
  17. using System.Windows.Media;
  18. using System.Windows.Media.Imaging;
  19. using System.Windows.Navigation;
  20. using System.Windows.Shapes;
  21. using System.Xml.Serialization;
  22.  
  23. namespace Zad2
  24. {
  25.     /// <summary>
  26.     /// Interaction logic for MainWindow.xaml
  27.     /// </summary>
  28.     public partial class MainWindow : Window
  29.     {
  30.         public MainWindow()
  31.         {
  32.             InitializeComponent();
  33.         }
  34.  
  35.  
  36.  
  37.  
  38.         private void MapLoad1(object sender, EventArgs e)
  39.         {
  40.             gmap.Overlays[3].IsVisibile = false;
  41.  
  42.         }
  43.         private void MapLoad2(object sender, EventArgs e)
  44.         {
  45.  
  46.             if (gmap.Overlays.Count > 0)
  47.             {
  48.                 gmap.Overlays[3].IsVisibile = true;
  49.  
  50.             }
  51.         }
  52.  
  53.         private void Node(object sender, EventArgs e)
  54.         {
  55.             if (gmap.Overlays.Count > 0)
  56.             {
  57.                 gmap.Overlays[2].IsVisibile = true;
  58.  
  59.             }
  60.            
  61.         }
  62.  
  63.         private void Node2(object sender, EventArgs e)
  64.         {
  65.             gmap.Overlays[2].IsVisibile = false;
  66.  
  67.         }
  68.  
  69.  
  70.         private void Lines(object sender, EventArgs e)
  71.         {
  72.  
  73.             if (gmap.Overlays.Count > 0)
  74.             {
  75.                 gmap.Overlays[0].IsVisibile = true;
  76.  
  77.             }
  78.  
  79.            
  80.  
  81.         }
  82.  
  83.         private void Lines2(object sender, EventArgs e)
  84.         {
  85.             gmap.Overlays[0].IsVisibile = false;
  86.         }
  87.  
  88.         private void Switches(object sender, EventArgs e)
  89.         {
  90.             if (gmap.Overlays.Count > 0)
  91.             {
  92.                 gmap.Overlays[1].IsVisibile = true;
  93.  
  94.             }
  95.            
  96.         }
  97.  
  98.         private void Switches2(object sender, EventArgs e)
  99.         {
  100.             gmap.Overlays[1].IsVisibile = false;
  101.  
  102.         }
  103.  
  104.  
  105.         private NetworkModel Deserialize(string path)
  106.         {
  107.             NetworkModel networkModel = null;
  108.             XmlSerializer xmlSerializer = new XmlSerializer(typeof(NetworkModel));
  109.  
  110.             try
  111.             {
  112.                 StreamReader reader = new StreamReader(path);
  113.                 networkModel = (NetworkModel)xmlSerializer.Deserialize(reader);
  114.                 reader.Close();
  115.             }
  116.             catch (Exception e)
  117.             {
  118.                 //error
  119.             }
  120.  
  121.             return networkModel;
  122.         }
  123.  
  124.  
  125.         public static void ToLatLon(double utmX, double utmY, int zoneUTM, out double latitude, out double longitude)
  126.         {
  127.             bool isNorthHemisphere = true;
  128.  
  129.             var diflat = -0.00066286966871111111111111111111111111;
  130.             var diflon = -0.0003868060578;
  131.  
  132.             var zone = zoneUTM;
  133.             var c_sa = 6378137.000000;
  134.             var c_sb = 6356752.314245;
  135.             var e2 = Math.Pow((Math.Pow(c_sa, 2) - Math.Pow(c_sb, 2)), 0.5) / c_sb;
  136.             var e2cuadrada = Math.Pow(e2, 2);
  137.             var c = Math.Pow(c_sa, 2) / c_sb;
  138.             var x = utmX - 500000;
  139.             var y = isNorthHemisphere ? utmY : utmY - 10000000;
  140.  
  141.             var s = ((zone * 6.0) - 183.0);
  142.             var lat = y / (c_sa * 0.9996);
  143.             var v = (c / Math.Pow(1 + (e2cuadrada * Math.Pow(Math.Cos(lat), 2)), 0.5)) * 0.9996;
  144.             var a = x / v;
  145.             var a1 = Math.Sin(2 * lat);
  146.             var a2 = a1 * Math.Pow((Math.Cos(lat)), 2);
  147.             var j2 = lat + (a1 / 2.0);
  148.             var j4 = ((3 * j2) + a2) / 4.0;
  149.             var j6 = ((5 * j4) + Math.Pow(a2 * (Math.Cos(lat)), 2)) / 3.0;
  150.             var alfa = (3.0 / 4.0) * e2cuadrada;
  151.             var beta = (5.0 / 3.0) * Math.Pow(alfa, 2);
  152.             var gama = (35.0 / 27.0) * Math.Pow(alfa, 3);
  153.             var bm = 0.9996 * c * (lat - alfa * j2 + beta * j4 - gama * j6);
  154.             var b = (y - bm) / v;
  155.             var epsi = ((e2cuadrada * Math.Pow(a, 2)) / 2.0) * Math.Pow((Math.Cos(lat)), 2);
  156.             var eps = a * (1 - (epsi / 3.0));
  157.             var nab = (b * (1 - epsi)) + lat;
  158.             var senoheps = (Math.Exp(eps) - Math.Exp(-eps)) / 2.0;
  159.             var delt = Math.Atan(senoheps / (Math.Cos(nab)));
  160.             var tao = Math.Atan(Math.Cos(delt) * Math.Tan(nab));
  161.  
  162.             longitude = ((delt * (180.0 / Math.PI)) + s) + diflon;
  163.             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;
  164.         }
  165.  
  166.         private void button_Click(object sender, RoutedEventArgs e)
  167.         {
  168.             string path = "C:/Users/e3106-2014/Desktop/Zad2/GMap/Geographic.xml";
  169.  
  170.             NetworkModel networkModel = new NetworkModel();
  171.             networkModel = Deserialize(path);
  172.  
  173.             GMapProvider.WebProxy = WebRequest.GetSystemWebProxy();
  174.             GMapProvider.WebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
  175.  
  176.             gmap.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;
  177.             GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
  178.             gmap.SetPositionByKeywords("Novi Sad, Serbia");
  179.             gmap.DragButton = System.Windows.Forms.MouseButtons.Left;
  180.             gmap.ShowCenter = false;
  181.  
  182.             double latitude;
  183.             double longitude;
  184.  
  185.  
  186.             /* lines */
  187.             GMapOverlay linesOver = new GMapOverlay("lines");
  188.             foreach (var item in networkModel.Lines)
  189.             {
  190.  
  191.                 List<PointLatLng> points = new List<PointLatLng>();
  192.                 foreach (var item1 in item.Vertices)
  193.                 {
  194.                     ToLatLon((double)item1.X, (double)item1.Y, 34, out latitude, out longitude);
  195.                     points.Add(new PointLatLng(latitude, longitude));
  196.                 }
  197.                 GMapRoute route = new GMapRoute(points, item.Name);
  198.                 route.Stroke = new System.Drawing.Pen(System.Drawing.Color.RoyalBlue, 2);
  199.                 linesOver.Routes.Add(route);
  200.             }
  201.             gmap.Overlays.Add(linesOver);
  202.  
  203.             GMapOverlay switchesOver = new GMapOverlay("switches");
  204.             /* switches */
  205.             foreach (var item in networkModel.Switches)
  206.             {
  207.                 ToLatLon((double)item.X, (double)item.Y, 34, out latitude, out longitude);
  208.  
  209.                 GMapMarker marker = new GMarkerGoogle(
  210.                     new PointLatLng(latitude, longitude),
  211.                     GMarkerGoogleType.red_small);
  212.                 marker.ToolTipText = "Switch: " + item.Name;
  213.                 switchesOver.Markers.Add(marker);
  214.  
  215.             }
  216.             gmap.Overlays.Add(switchesOver);
  217.  
  218.             GMapOverlay nodeOver = new GMapOverlay("nodes");
  219.             /* nodes */
  220.             foreach (var item in networkModel.Nodes)
  221.             {
  222.                 ToLatLon((double)item.X, (double)item.Y, 34, out latitude, out longitude);
  223.  
  224.                 GMapMarker marker = new GMarkerGoogle(
  225.                     new PointLatLng(latitude, longitude),
  226.                     GMarkerGoogleType.green_small);
  227.                 marker.ToolTipText = "Node: " + item.Name;
  228.                 nodeOver.Markers.Add(marker);
  229.             }
  230.             gmap.Overlays.Add(nodeOver);
  231.  
  232.  
  233.  
  234.            
  235.  
  236.             /* substations*/
  237.             GMapOverlay substationsOver = new GMapOverlay("substations");
  238.             foreach (var item in networkModel.Substations)
  239.             {
  240.                 ToLatLon((double)item.X, (double)item.Y, 34, out latitude, out longitude);
  241.  
  242.                 GMapMarker marker = new GMarkerGoogle(
  243.                     new PointLatLng(latitude, longitude),
  244.                     GMarkerGoogleType.blue_pushpin);
  245.                 marker.ToolTipText = "Substation: " + item.Name;
  246.  
  247.                 substationsOver.Markers.Add(marker);
  248.             }
  249.             gmap.Overlays.Add(substationsOver);
  250.  
  251.         }
  252.     }
  253. }
RAW Paste Data
Top