public static void OCPfromAPI() { DataContainer.model.infrastructure.operationControlPoints.Clear(); CoordinateSystemFactory c = new CoordinateSystemFactory(); StreamReader stream = new StreamReader("C:/Users/Edwin/OneDrive/Afstuderen/Irish Grid Conversion/Irish Grid WTK.txt"); string wtk = stream.ReadLine(); ICoordinateSystem target = c.CreateFromWkt(wtk); //ICoordinateSystem target = c.CreateFromWkt("PROJCS[\"TM65 / Irish Grid\", GEOGCS[\"TM65\", DATUM[\"TM65\", SPHEROID[\"Airy Modified 1849\",6377340.189,299.3249646, AUTHORITY[\"EPSG\",\"7002\"]],AUTHORITY[\"EPSG\",\"6299\"]], PRIMEM[\"Greenwich\",0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\",0.01745329251994328, AUTHORITY[\"EPSG\",\"9122\"]], AUTHORITY[\"EPSG\",\"4299\"]], PROJECTION[\"Transverse_Mercator\"], PARAMETER[\"latitude_of_origin\",53.5], PARAMETER[\"central_meridian\",-8], PARAMETER[\"scale_factor\",1.000035],PARAMETER[\"false_easting\",200000], PARAMETER[\"false_northing\",250000], UNIT[\"metre\",1, AUTHORITY[\"EPSG\",\"9001\"]], AUTHORITY[\"EPSG\",\"29902\"],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]"); //ICoordinateSystem source = c.CreateFromWkt("GEOGCS[\"GCS_WGS_1984\", DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]], PRIMEM[\"Greenwich\",0], UNIT[\"Degree\",0.0174532925199433]]"); ICoordinateSystem source = c.CreateFromWkt(stream.ReadLine()); CoordinateTransformationFactory trf = new CoordinateTransformationFactory(); ICoordinateTransformation tr = trf.CreateFromCoordinateSystems(source, target); //XDocument stationdoc = XDocument.Load("http://api.irishrail.ie/realtime/realtime.asmx/getAllStationsXML"); XDocument stationdoc = XDocument.Load("C:/Users/Edwin/OneDrive/Afstuderen/IrishRail Data/getAllStationsXML.xml"); XNamespace ns = stationdoc.Root.GetDefaultNamespace(); foreach (XElement station in stationdoc.Root.Elements(ns + "objStation")) { eOcp tempocp = new eOcp(); tempocp.id = station.Element(ns + "StationId").Value.Trim(); tempocp.name = station.Element(ns + "StationDesc").Value.Trim(); tempocp.code = station.Element(ns + "StationCode").Value.Trim(); tempocp.propOperational.operationalType = "station"; double[] coord = new double[] { double.Parse(station.Element(ns + "StationLongitude").Value, CultureInfo.InvariantCulture), double.Parse(station.Element(ns + "StationLatitude").Value, CultureInfo.InvariantCulture) }; double[] irishgridcoord = tr.MathTransform.Transform(coord); tempocp.geoCoord.coord.Add(irishgridcoord[0]); tempocp.geoCoord.coord.Add(irishgridcoord[1]); AddOCPToTracks(tempocp); Data.DataContainer.model.infrastructure.operationControlPoints.Add(tempocp); } }
public void OCPproperties(eOcp ocp) { propertylist.Add(new Property { label = "Name", source = ocp, path = "source.name" }); propertylist.Add(new Property { label = "ID", source = ocp, path = "source.id" }); propertylist.Add(new Property { label = "Description", source = ocp, path = "source.description" }); }
private static void AddOCPToTracks(eOcp ocp) { double margin = 100; Point location = new Point(ocp.geoCoord.coord[0], ocp.geoCoord.coord[1]); foreach (eTrack track in DataContainer.model.infrastructure.tracks) { if (track.type == "mainTrack" || track.type == "stationTrack") { double bestdist = 9999999999999; List <Point> nodelist = NodeList(track); Point a = new Point(); Point b = new Point(); int index = 0; for (int i = 0; i < nodelist.Count - 1; i++) { double dist = GetDistance(nodelist[i], nodelist[i + 1], location); if (dist < bestdist) { bestdist = dist; a = nodelist[i]; b = nodelist[i + 1]; index = i; } } if (bestdist < margin) { double pos = 0; for (int i = 0; i < index - 1; i++) { pos += GetDistance(nodelist[i], nodelist[i + 1]); } if ((a - b).LengthSquared != 0.0) { var t = (location - a) * (b - a) / (a - b).LengthSquared; pos += t * GetDistance(a, b); } tCrossSection crosssection = new tCrossSection(); crosssection.ocpRef = ocp.id; crosssection.name = ocp.name; Data.DataContainer.IDGenerator(crosssection); crosssection.pos = track.trackTopology.trackBegin.pos + (decimal)(pos * 0.000621371); track.trackTopology.crossSections.Add(crosssection); } } } }
public void TestButton_Click(object sender, EventArgs e) { DataContainer.model = new railml(); eTrack track1 = new eTrack{trackTopology = new eTrackTopology{trackBegin=new eTrackBegin{pos=0, geoCoord=new tGeoCoord()}, trackEnd = new eTrackEnd{pos=600, geoCoord=new tGeoCoord()}}}; DataContainer.IDGenerator(track1); track1.trackTopology.trackBegin.geoCoord.coord.Add(0); track1.trackTopology.trackBegin.geoCoord.coord.Add(0); track1.trackTopology.trackEnd.geoCoord.coord.Add(600); track1.trackTopology.trackEnd.geoCoord.coord.Add(0); eSwitch sw1 = new eSwitch() { id = "sw1" }; sw1.geoCoord.coord.AddRange(new double[] { 300, 0 }); track1.trackTopology.connections.Add(sw1); DataContainer.model.infrastructure.tracks.Add(track1); eTrack track2 = new eTrack{trackTopology = new eTrackTopology{trackBegin=new eTrackBegin{pos=0, geoCoord=new tGeoCoord()}, trackEnd = new eTrackEnd{pos=600, geoCoord=new tGeoCoord()}}}; DataContainer.IDGenerator(track2); track2.trackTopology.trackBegin.geoCoord.coord.Add(6000); track2.trackTopology.trackBegin.geoCoord.coord.Add(20); track2.trackTopology.trackEnd.geoCoord.coord.Add(8000); track2.trackTopology.trackEnd.geoCoord.coord.Add(20); DataContainer.model.infrastructure.tracks.Add(track2); Data.Editor.AddCrossing(track1, track2, 70, 300, 350); eOcp ocp1 = new eOcp { id = "34", name= "test1", geoCoord = new tGeoCoord() }; ocp1.geoCoord.coord.Add(0); ocp1.geoCoord.coord.Add(0); DataContainer.model.infrastructure.operationControlPoints.Add(ocp1); eOcp ocp2 = new eOcp { id = "443", name = "test2", geoCoord = new tGeoCoord() }; ocp2.geoCoord.coord.Add(600); ocp2.geoCoord.coord.Add(0); DataContainer.model.infrastructure.operationControlPoints.Add(ocp2); eOcp ocp3 = new eOcp { id = "344", name = "test3", geoCoord = new tGeoCoord() }; ocp3.geoCoord.coord.Add(600); ocp3.geoCoord.coord.Add(20); DataContainer.model.infrastructure.operationControlPoints.Add(ocp3); eOcp ocp4 = new eOcp { id = "343", name = "test3", geoCoord = new tGeoCoord() }; ocp4.geoCoord.coord.Add(0); ocp4.geoCoord.coord.Add(20); DataContainer.model.infrastructure.operationControlPoints.Add(ocp4); DataContainer.PrepareData(); dynamic result = DataContainer.model.infrastructure.tracks[2].trackTopology.trackBegin.FindParent(typeof(eTrack)); this.MainViewContentControl.Content = new BaseRailMLView(); }
public static void OCPfromExcel() { FileStream stream; Loop: try { stream = File.Open("C:/Users/Edwin/OneDrive/Afstuderen/IrishRail Data/ReferenceData.xlsx", FileMode.Open, FileAccess.Read); } catch { MessageBoxResult result = MessageBox.Show("Error. Please close the excel document. Retry?", "Error", MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) { goto Loop; } else { return; } } CoordinateSystemFactory c = new CoordinateSystemFactory(); StreamReader coordstream = new StreamReader("C:/Users/Edwin/OneDrive/Afstuderen/Irish Grid Conversion/Irish Grid WTK.txt"); string wtk = coordstream.ReadLine(); ICoordinateSystem target = c.CreateFromWkt(wtk); IExcelDataReader excelreader = ExcelReaderFactory.CreateOpenXmlReader(stream); excelreader.IsFirstRowAsColumnNames = true; ICoordinateSystem source = c.CreateFromWkt(coordstream.ReadLine()); CoordinateTransformationFactory trf = new CoordinateTransformationFactory(); ICoordinateTransformation tr = trf.CreateFromCoordinateSystems(source, target); _dataset = excelreader.AsDataSet(); _maintable = _dataset.Tables["tbl_rtStations"]; foreach (DataRow row in _maintable.Rows) { eOcp ocp = new eOcp(); ocp.id = (row["StationID"] as string ?? string.Empty).Trim(); ocp.name = (row["Station_Desc"] as string ?? string.Empty).Trim(); ocp.code = (row["SEMA_Name"] as string ?? string.Empty).Trim(); if (DataContainer.model.infrastructure.operationControlPoints.Any(x => x.name == ocp.name)) { continue; } if (row["Latitude"] != DBNull.Value && row["Longitude"] != DBNull.Value) { double[] coord = new double[] { (row["Longitude"] as double?) ?? 0, (row["Latitude"] as double?) ?? 0 }; double[] irishgridcoord = tr.MathTransform.Transform(coord); ocp.geoCoord.coord.Add(irishgridcoord[0]); ocp.geoCoord.coord.Add(irishgridcoord[1]); AddOCPToTracks(ocp); } if (((row["suburban"] as int?) ?? 0) != 0 && ((row["mainline_station"] as int?) ?? 0) != 0 && ((row["DART_STATION"] as int?) ?? 0) != 0) { ocp.propOperational.operationalType = "station"; } DataContainer.model.infrastructure.operationControlPoints.Add(ocp); } }
public Route GetRoute(eOcp origin, eOcp destination) { return(GetRoute(origin.id, destination.id)); }
public void TestButton_Click(object sender, EventArgs e) { DataContainer.model = new railml(); eTrack track1 = new eTrack { trackTopology = new eTrackTopology { trackBegin = new eTrackBegin { pos = 0, geoCoord = new tGeoCoord() }, trackEnd = new eTrackEnd { pos = 600, geoCoord = new tGeoCoord() } } }; DataContainer.IDGenerator(track1); track1.trackTopology.trackBegin.geoCoord.coord.Add(0); track1.trackTopology.trackBegin.geoCoord.coord.Add(0); track1.trackTopology.trackEnd.geoCoord.coord.Add(600); track1.trackTopology.trackEnd.geoCoord.coord.Add(0); eSwitch sw1 = new eSwitch() { id = "sw1" }; sw1.geoCoord.coord.AddRange(new double[] { 300, 0 }); track1.trackTopology.connections.Add(sw1); DataContainer.model.infrastructure.tracks.Add(track1); eTrack track2 = new eTrack { trackTopology = new eTrackTopology { trackBegin = new eTrackBegin { pos = 0, geoCoord = new tGeoCoord() }, trackEnd = new eTrackEnd { pos = 600, geoCoord = new tGeoCoord() } } }; DataContainer.IDGenerator(track2); track2.trackTopology.trackBegin.geoCoord.coord.Add(6000); track2.trackTopology.trackBegin.geoCoord.coord.Add(20); track2.trackTopology.trackEnd.geoCoord.coord.Add(8000); track2.trackTopology.trackEnd.geoCoord.coord.Add(20); DataContainer.model.infrastructure.tracks.Add(track2); Data.Editor.AddCrossing(track1, track2, 70, 300, 350); eOcp ocp1 = new eOcp { id = "34", name = "test1", geoCoord = new tGeoCoord() }; ocp1.geoCoord.coord.Add(0); ocp1.geoCoord.coord.Add(0); DataContainer.model.infrastructure.operationControlPoints.Add(ocp1); eOcp ocp2 = new eOcp { id = "443", name = "test2", geoCoord = new tGeoCoord() }; ocp2.geoCoord.coord.Add(600); ocp2.geoCoord.coord.Add(0); DataContainer.model.infrastructure.operationControlPoints.Add(ocp2); eOcp ocp3 = new eOcp { id = "344", name = "test3", geoCoord = new tGeoCoord() }; ocp3.geoCoord.coord.Add(600); ocp3.geoCoord.coord.Add(20); DataContainer.model.infrastructure.operationControlPoints.Add(ocp3); eOcp ocp4 = new eOcp { id = "343", name = "test3", geoCoord = new tGeoCoord() }; ocp4.geoCoord.coord.Add(0); ocp4.geoCoord.coord.Add(20); DataContainer.model.infrastructure.operationControlPoints.Add(ocp4); DataContainer.PrepareData(); dynamic result = DataContainer.model.infrastructure.tracks[2].trackTopology.trackBegin.FindParent(typeof(eTrack)); this.MainViewContentControl.Content = new BaseRailMLView(); }