Example #1
0
        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);
        }
Example #2
0
        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;
    }