private List <ColinearGroup> FindColinearTroncons(List <Troncon> connectedTroncons, SqlGeometry intersectionPoint) { HashSet <int> visitedIds = new HashSet <int>(); List <ColinearGroup> groups = new List <ColinearGroup>(); foreach (var troncon in connectedTroncons) { if (visitedIds.Contains(troncon.Id)) { continue; } Troncon colinear = connectedTroncons.Where(t => t.Id != troncon.Id) .FirstOrDefault(t => !visitedIds.Contains(t.Id) && Geometry.AreColinear(troncon.Geometry, t.Geometry, intersectionPoint)); //Debug.Assert(colinear != null, "Cannot find colinear troncon"); if (colinear != null) { visitedIds.Add(troncon.Id); visitedIds.Add(colinear.Id); groups.Add(new ColinearGroup(Geometry.ColinearAngleDegrees(troncon.Geometry, colinear.Geometry, intersectionPoint), new List <Troncon> { troncon, colinear })); } } return(groups); }
public Dictionary <int, Troncon> GetAllTroncons_Lambert93() { Dictionary <int, Troncon> troncons2154 = new Dictionary <int, Troncon>(); using (SqlConnection con = new SqlConnection(ConnectionString)) { con.Open(); using (SqlCommand com = new SqlCommand("SELECT geom2154.STAsBinary(),[ID_RTE500],[NATURE],[ENERGIE],[CLASSEMENT] FROM [dbo].[TRONCON_VOIE_FERREE_2154]", con)) { using (SqlDataReader reader = com.ExecuteReader()) { while (reader.Read()) { Troncon trn = new Troncon(); trn.Id = (int)Convert.ChangeType(reader["ID_RTE500"], typeof(int)); trn.Nature = reader["NATURE"].ToString(); trn.Energie = reader["ENERGIE"].ToString(); trn.Classement = reader["CLASSEMENT"].ToString(); trn.Geometry = SqlGeometry.STGeomFromWKB(reader.GetSqlBytes(0), 2154); troncons2154.Add(trn.Id, trn); } } } } return(troncons2154); }
public static void OpenObstacleSelectionWindow(Troncon tronconToApply) { ObstacleSelectionWindow thisWindow = GetWindow <ObstacleSelectionWindow>("Sélectionne un obstacle"); thisWindow.troncon = tronconToApply; }