From 24f6a4943c0755765d045c78088642a8d17693c2 Mon Sep 17 00:00:00 2001
From: wienkop <uwe.wienkop@th-nuernberg.de>
Date: Mon, 20 Mar 2017 12:59:04 +0100
Subject: [PATCH] =?UTF-8?q?Berechnung=20der=20H=C3=B6chstgeschwindigkeit?=
 =?UTF-8?q?=20hinzugef=C3=BCgt.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 01GPS-Auswertung/CodeMap1.dgml | 61 +++++++++++++++++-----------------
 01GPS-Auswertung/Program.cs    | 39 +++++++++++++++++++++-
 2 files changed, 68 insertions(+), 32 deletions(-)

diff --git a/01GPS-Auswertung/CodeMap1.dgml b/01GPS-Auswertung/CodeMap1.dgml
index 52edf47..76a4476 100644
--- a/01GPS-Auswertung/CodeMap1.dgml
+++ b/01GPS-Auswertung/CodeMap1.dgml
@@ -1,42 +1,42 @@
 <?xml version="1.0" encoding="utf-8"?>
-<DirectedGraph DataVirtualized="True" Layout="Sugiyama" ZoomLevel="2" xmlns="http://schemas.microsoft.com/vs/2009/dgml">
+<DirectedGraph DataVirtualized="True" Layout="Sugiyama" ZoomLevel="-1" xmlns="http://schemas.microsoft.com/vs/2009/dgml">
   <Nodes>
-    <Node Id="(@1 @3 @7 Member=dist)" Category="CodeSchema_Field" Bounds="-181.128119569265,112.06905426501,56.1333333333333,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="dist" />
-    <Node Id="(@1 Namespace=::)" Category="CodeSchema_Namespace" Bounds="310.913943497402,-366.71493259879,62.1999999999999,25" DelayedChildNodesState="NotFetched" DelayedCrossGroupLinksState="Fetched" Group="Collapsed" Label="::" />
-    <Node Id="@11" Category="CodeSchema_Method" Bounds="76.1602137640681,-201.71493259879,103.676666666667,25.96" CodeSchemaProperty_IsConstructor="True" CodeSchemaProperty_IsPublic="True" CodeSchemaProperty_IsSpecialName="True" DelayedCrossGroupLinksState="Fetched" Label="GpsManager" />
-    <Node Id="@12" Category="CodeSchema_Method" Bounds="-3.40795936259826,0.186936571809682,86.71,25.96" CodeSchemaProperty_IsConstructor="True" CodeSchemaProperty_IsPublic="True" CodeSchemaProperty_IsSpecialName="True" DelayedCrossGroupLinksState="Fetched" Label="GpsPunkt" />
-    <Node Id="@13" Category="CodeSchema_Method" Bounds="113.621504637402,0.186936571809682,56.48,25.96" CodeSchemaProperty_IsPublic="True" CodeSchemaProperty_IsStatic="True" DelayedCrossGroupLinksState="Fetched" Label="Dist" />
-    <Node Id="@14" Category="CodeSchema_Method" Bounds="0.408707304068432,56.1106744918097,79.0766666666667,25.96" CodeSchemaProperty_IsPrivate="True" CodeSchemaProperty_IsStatic="True" DelayedCrossGroupLinksState="Fetched" Label="LL2UTM" />
-    <Node Id="@15" Category="CodeSchema_Field" Bounds="-13.863119569265,-115.75493251779,73.7233333333333,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="anzPos" />
-    <Node Id="@16" Category="CodeSchema_Field" Bounds="-79.9913993625982,56.1106744918097,50,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="dt" />
-    <Node Id="@17" Category="CodeSchema_Method" Bounds="-100.011452902598,-191.71493264739,126.02,25.96" CodeSchemaProperty_IsPublic="True" DelayedCrossGroupLinksState="Fetched" Label="get_RouteLength" />
-    <Node Id="@18" Category="CodeSchema_Field" Bounds="90.3035470974016,-115.75493259879,75.39,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="gpspos" />
-    <Node Id="@19" Category="CodeSchema_Field" Bounds="-181.128119569265,56.1090542650097,70.1633333333333,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="hoehe" />
-    <Node Id="@2" Category="CodeSchema_Assembly" Bounds="-241.088515969265,-406.71493297139,634.202459466666,604.6879744728" CodeSchemaProperty_StrongName="01GPS-Auswertung, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="2" FilePath="$(3d918937-8f3e-4fcb-acf1-876729256e13.OutputPath)" Group="Expanded" Label="01GPS-Auswertung.exe" UseManualLocation="True" />
-    <Node Id="@20" Category="CodeSchema_Property" Bounds="-120.011452902598,-231.71493271219,166.02,85.9600001296" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="1" Group="Expanded" Label="RouteLength" />
-    <Node Id="@21" Category="CodeSchema_Field" Bounds="109.885480637402,56.1106744918097,50,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="x" />
-    <Node Id="@22" Category="CodeSchema_Field" Bounds="190.953547097402,56.1090542650097,50,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="y" />
-    <Node Id="@4" Category="CodeSchema_Namespace" Bounds="-221.088515969265,-366.71493290659,502.002459466667,544.6879743432" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="3" Group="Expanded" Label="_01GPS_Auswertung" />
-    <Node Id="@6" Category="CodeSchema_Class" Bounds="-140.011452902598,-271.71493277699,339.848333333333,201.920000324" CodeSchemaProperty_IsInternal="True" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="4" Group="Expanded" Label="GpsManager" />
-    <Node Id="@8" Category="CodeSchema_Class" Bounds="-201.128119569265,-39.8509457349903,462.081666666667,197.88" CodeSchemaProperty_IsInternal="True" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="8" Group="Expanded" Label="GpsPunkt" />
-    <Node Id="@9" Category="CodeSchema_Class" Bounds="-23.3906195692651,-326.71493284179,106.606666666667,25" CodeSchemaProperty_IsInternal="True" DelayedChildNodesState="NotFetched" DelayedCrossGroupLinksState="Fetched" Group="Collapsed" Label="Program" />
+    <Node Id="(@1 @3 @7 Member=dist)" Category="CodeSchema_Field" Bounds="60,518.84,56.1333333333333,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="dist" />
+    <Node Id="(@1 Namespace=::)" Category="CodeSchema_Namespace" Bounds="552.081666666667,40,62.1999999999998,25" DelayedChildNodesState="NotFetched" DelayedCrossGroupLinksState="Fetched" Group="Collapsed" Label="::" />
+    <Node Id="@11" Category="CodeSchema_Method" Bounds="317.288333333333,205,103.676666666667,25.96" CodeSchemaProperty_IsConstructor="True" CodeSchemaProperty_IsPublic="True" CodeSchemaProperty_IsSpecialName="True" DelayedCrossGroupLinksState="Fetched" Label="GpsManager" />
+    <Node Id="@12" Category="CodeSchema_Method" Bounds="237.726666666667,406.92,86.71,25.96" CodeSchemaProperty_IsConstructor="True" CodeSchemaProperty_IsPublic="True" CodeSchemaProperty_IsSpecialName="True" DelayedCrossGroupLinksState="Fetched" Label="GpsPunkt" />
+    <Node Id="@13" Category="CodeSchema_Method" Bounds="354.841666666667,406.92,56.48,25.96" CodeSchemaProperty_IsPublic="True" CodeSchemaProperty_IsStatic="True" DelayedCrossGroupLinksState="Fetched" Label="Dist" />
+    <Node Id="@14" Category="CodeSchema_Method" Bounds="241.543333333333,462.88,79.0766666666667,25.96" CodeSchemaProperty_IsPrivate="True" CodeSchemaProperty_IsStatic="True" DelayedCrossGroupLinksState="Fetched" Label="LL2UTM" />
+    <Node Id="@15" Category="CodeSchema_Field" Bounds="227.265,290.96,73.7233333333333,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="anzPos" />
+    <Node Id="@16" Category="CodeSchema_Field" Bounds="161.081666666667,462.88,50,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="dt" />
+    <Node Id="@17" Category="CodeSchema_Method" Bounds="141.116666666667,215,126.02,25.96" CodeSchemaProperty_IsPublic="True" DelayedCrossGroupLinksState="Fetched" Label="get_RouteLength" />
+    <Node Id="@18" Category="CodeSchema_Field" Bounds="331.431666666667,290.96,75.39,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="gpspos" />
+    <Node Id="@19" Category="CodeSchema_Field" Bounds="60,462.88,70.1633333333333,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="hoehe" />
+    <Node Id="@2" Category="CodeSchema_Assembly" Bounds="0,0,634.281666666667,604.8" CodeSchemaProperty_StrongName="01GPS-Auswertung, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="2" FilePath="$(3d918937-8f3e-4fcb-acf1-876729256e13.OutputPath)" Group="Expanded" Label="01GPS-Auswertung.exe" />
+    <Node Id="@20" Category="CodeSchema_Property" Bounds="121.116666666667,175,166.02,85.96" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="1" Group="Expanded" Label="RouteLength" />
+    <Node Id="@21" Category="CodeSchema_Field" Bounds="351.081666666667,462.88,50,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="x" />
+    <Node Id="@22" Category="CodeSchema_Field" Bounds="432.081666666667,462.88,50,25.96" CodeSchemaProperty_IsPrivate="True" DelayedCrossGroupLinksState="Fetched" Label="y" />
+    <Node Id="@4" Category="CodeSchema_Namespace" Bounds="20,40,502.081666666667,544.8" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="3" Group="Expanded" Label="_01GPS_Auswertung" />
+    <Node Id="@6" Category="CodeSchema_Class" Bounds="101.116666666667,135,339.848333333333,201.92" CodeSchemaProperty_IsInternal="True" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="4" Group="Expanded" Label="GpsManager" />
+    <Node Id="@8" Category="CodeSchema_Class" Bounds="40,366.92,462.081666666667,197.88" CodeSchemaProperty_IsInternal="True" DelayedChildNodesState="Fetched" DelayedCrossGroupLinksState="Fetched" FetchedChildrenCount="8" Group="Expanded" Label="GpsPunkt" />
+    <Node Id="@9" Category="CodeSchema_Class" Bounds="217.7375,80,106.606666666667,25" CodeSchemaProperty_IsInternal="True" DelayedChildNodesState="NotFetched" DelayedCrossGroupLinksState="Fetched" Group="Collapsed" Label="Program" />
   </Nodes>
   <Links>
     <Link Source="@11" Target="@12" Category="CodeSchema_Calls" Weight="1" />
-    <Link Source="@11" Target="@15" Category="CodeSchema_FieldRead" Bounds="45.8175582885742,-175.754928588867,66.3259429931641,54.2988357543945" Weight="4">
+    <Link Source="@11" Target="@15" Category="CodeSchema_FieldRead" Bounds="286.945678710938,230.960006713867,66.325927734375,54.2988433837891" Weight="4">
       <Category Ref="CodeSchema_FieldWrite" />
     </Link>
-    <Link Source="@11" Target="@18" Category="CodeSchema_FieldRead" Bounds="127.998550415039,-175.754928588867,0,50.9999923706055" Weight="2">
+    <Link Source="@11" Target="@18" Category="CodeSchema_FieldRead" Bounds="369.126678466797,230.960006713867,0,50.9999847412109" Weight="2">
       <Category Ref="CodeSchema_FieldWrite" />
     </Link>
-    <Link Source="@12" Target="@14" Category="CodeSchema_Calls" Bounds="39.9535484313965,26.1090545654297,0,21" Weight="1" />
-    <Link Source="@12" Target="@16" Category="CodeSchema_FieldWrite" Bounds="-25.2567806243896,26.1090545654297,43.1749458312988,25.432315826416" Weight="1" />
-    <Link Source="@12" Target="@19" Category="CodeSchema_FieldWrite" Bounds="-102.398910522461,25.7165927886963,100.513965964317,30.2406520843506" Weight="1" />
-    <Link Source="@12" Target="@21" Category="CodeSchema_FieldRead" Bounds="61.9889297485352,26.1090545654297,43.1749420166016,25.432315826416" Weight="1" />
-    <Link Source="@12" Target="@22" Category="CodeSchema_FieldRead" Bounds="80.697395324707,26.0837459564209,101.679252624512,32.329381942749" Weight="1" />
-    <Link Source="@13" Target="@21" Category="CodeSchema_FieldRead" Bounds="137.694305419922,26.1090545654297,2.63557434082031,21.0695953369141" Weight="2" />
-    <Link Source="@13" Target="@22" Category="CodeSchema_FieldRead" Bounds="159.117950439453,26.1090545654297,32.49267578125,24.5714836120605" Weight="2" />
-    <Link Source="@13" Target="@8" Category="References" Bounds="141.953552246094,-53.350944519043,12.322265625,53.4999987781048" Weight="2" />
+    <Link Source="@12" Target="@14" Category="CodeSchema_Calls" Bounds="281.081665039063,432.880004882813,0,21" Weight="1" />
+    <Link Source="@12" Target="@16" Category="CodeSchema_FieldWrite" Bounds="215.871337890625,432.880004882813,43.1749572753906,25.4323120117188" Weight="1" />
+    <Link Source="@12" Target="@19" Category="CodeSchema_FieldWrite" Bounds="138.729202270508,432.487548828125,100.513977050781,30.2406311035156" Weight="1" />
+    <Link Source="@12" Target="@21" Category="CodeSchema_FieldRead" Bounds="303.117034912109,432.880004882813,43.1749572753906,25.4323120117188" Weight="1" />
+    <Link Source="@12" Target="@22" Category="CodeSchema_FieldRead" Bounds="321.825531005859,432.854705810547,101.679229736328,32.3293762207031" Weight="1" />
+    <Link Source="@13" Target="@21" Category="CodeSchema_FieldRead" Bounds="378.822418212891,432.880004882813,2.63558959960938,21.069580078125" Weight="2" />
+    <Link Source="@13" Target="@22" Category="CodeSchema_FieldRead" Bounds="400.246063232422,432.880004882813,32.49267578125,24.5714721679688" Weight="2" />
+    <Link Source="@13" Target="@8" Category="References" Bounds="383.081665039063,353.420013427734,12.322265625,53.5" Weight="2" />
     <Link Source="@17" Target="@13" Category="CodeSchema_Calls" Bounds="-30.052476261861,11.7111257202335,43.8525032260457,357.88809737776" Weight="1" />
     <Link Source="@17" Target="@15" Category="CodeSchema_FieldRead" Bounds="32.747061330588,304.989077072485,86.3953022362636,64.610146025508" Weight="1" />
     <Link Source="@17" Target="@18" Category="CodeSchema_FieldRead" Bounds="18.6042504242308,308.335229422257,15.1685817931712,61.2639936757369" Weight="2" />
@@ -110,7 +110,6 @@
     <Property Id="NavigationActionLabel" Label="NavigationActionLabel" Description="NavigationActionLabel" DataType="System.String" />
     <Property Id="OutgoingActionLabel" Label="OutgoingActionLabel" Description="OutgoingActionLabel" DataType="System.String" />
     <Property Id="TargetType" DataType="System.Type" />
-    <Property Id="UseManualLocation" DataType="System.Boolean" />
     <Property Id="Value" DataType="System.String" />
     <Property Id="ValueLabel" DataType="System.String" />
     <Property Id="Visibility" Label="Visibility" Description="Defines whether a node in the graph is visible or not" DataType="System.Windows.Visibility" />
diff --git a/01GPS-Auswertung/Program.cs b/01GPS-Auswertung/Program.cs
index f0f437d..99b425c 100644
--- a/01GPS-Auswertung/Program.cs
+++ b/01GPS-Auswertung/Program.cs
@@ -89,12 +89,29 @@ namespace _01GPS_Auswertung
                 UTMNorthing += 10000000.0; //10000000 meter offset for southern hemisphere
         }
 
+
+        /// <summary>
+        /// Berechnet den Abstand zwischen zwei GpsPunkten in Metern
+        /// </summary>
+        /// <param name="p1">1. GPS-Punkt</param>
+        /// <param name="p2">2. GPS-Punkt</param>
+        /// <returns>Der Abstand in Meter</returns>
         public static double GpsDistance(GpsPunkt p1, GpsPunkt p2)
         {
             double dx = p1.x - p2.x;
             double dy = p1.y - p2.y;
             return Math.Sqrt(dx * dx + dy * dy);
         }
+        /// <summary>
+        /// Berechnet die zwischen zwei Punkten gefahrene Geschwindigkeit
+        /// </summary>
+        /// <param name="p1">1. GPS-Punkt</param>
+        /// <param name="p2">2. GPS-Punkt</param>
+        /// <returns>Geschwindigkeit in km/h</returns>
+        public static double GpsVelocity(GpsPunkt p1, GpsPunkt p2)
+        {
+            return GpsDistance(p1, p2) / (p2.dt - p1.dt).TotalSeconds * 3.6;
+        }
         public double GpsDistance2(GpsPunkt p2)
         {
             double dx = x - p2.x;
@@ -111,11 +128,29 @@ namespace _01GPS_Auswertung
         public double RouteLength {
             get
             {
-                return GpsPunkt.GpsDistance(gpspos[0], gpspos[anzPos - 1]);
+                //return GpsPunkt.GpsDistance(gpspos[0], gpspos[anzPos - 1]);
                 //return gpspos[0].GpsDistance(gpspos[anzPos - 1]);
+                double len = 0;
+                for (int i = 1; i < anzPos; i++)
+                    len+= GpsPunkt.GpsDistance(gpspos[i-1], gpspos[i]);
+                return len;
             }
         }
 
+        public double MaxVelocity
+        {
+            get
+            {
+                double maxVel = -1;
+                for (int i = 1; i < anzPos; i++)
+                {
+                    double vel = GpsPunkt.GpsVelocity(gpspos[i - 1], gpspos[i]);
+                    if (vel > maxVel)
+                        maxVel = vel;
+                }
+                return maxVel;
+            }
+        }
         public GpsManager(string name)
         {
             StreamReader sr = new StreamReader(name);
@@ -140,6 +175,8 @@ namespace _01GPS_Auswertung
         {
             GpsManager NReg = new GpsManager(@"..\..\GPS_Daten.txt");
             Console.WriteLine(NReg.RouteLength);
+            Console.WriteLine(NReg.MaxVelocity);
+            
         }
     }
 }
-- 
GitLab