示例#1
0
        public static List <Line> GetSegments()
        {
            string query = @"select Link, Lane, SegStX, SegStY, SegEndX, SegEndY from dbo.Olaine_LINK_EVAL";

            var list = new List <Line>();

            var sb = new OleDbConnectionStringBuilder(vissim.Instance.Evaluation.Wrap().GetConnectionString());

            if (sb.ContainsKey("Password"))
            {
                using (var conn = new OleDbConnection(sb.ConnectionString))
                {
                    conn.Open();
                    using (var reader = new OleDbCommand(query, conn).ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            list.Add(new Line()
                            {
                                X1     = reader.GetDouble(2),
                                Y1     = reader.GetDouble(3),
                                X2     = reader.GetDouble(4),
                                Y2     = reader.GetDouble(5),
                                Stroke = Brushes.Red
                            });
                        }
                    }
                }
            }

            return(list);
        }
示例#2
0
        public static List <Ellipse> GetPoints(int size)
        {
            string query = @"select Link, Lane, SegStX, SegStY, SegEndX, SegEndY from dbo.Olaine_LINK_EVAL";

            var list = new List <Ellipse>();

            var sb = new OleDbConnectionStringBuilder(vissim.Instance.Evaluation.Wrap().GetConnectionString());

            if (sb.ContainsKey("Password"))
            {
                using (var conn = new OleDbConnection(sb.ConnectionString))
                {
                    conn.Open();
                    using (var reader = new OleDbCommand(query, conn).ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            list.Add(new Ellipse()
                            {
                                Height = size,
                                Width  = size,
                                Fill   = Brushes.Red,
                                Stroke = Brushes.Red,
                                Tag    = new Point(reader.GetDouble(2), reader.GetDouble(3))
                            });
                        }
                    }
                }
            }

            return(list);
        }
示例#3
0
        public static List <AvgSpeedReportItem> GetReportData()
        {
            string query =
                @"WITH RankedLink AS (
		SELECT ROW_NUMBER() OVER (ORDER BY Link, SegEndC) [Number], *
		FROM dbo.Olaine_LINK_EVAL),
	MiddleLink AS (
		SELECT AVG(Number) [MiddleLink]
		FROM RankedLink
		GROUP BY Link),
	AvgSpeed AS (
		SELECT AVG(v__0_) [speed], Link
		FROM dbo.Olaine_LINK_EVAL
		GROUP BY Link)

SELECT RankedLink.Link, 0 [Lane], (SegStX + SegEndX)/2 [center.x], (SegStY + SegEndY)/2 [center.y], AvgSpeed.speed
FROM RankedLink
	JOIN MiddleLink ON RankedLink.Number=MiddleLink.MiddleLink
	JOIN AvgSpeed ON RankedLink.Link=AvgSpeed.Link"    ;

            var list = new List <AvgSpeedReportItem>();

            try
            {
                var sb = new OleDbConnectionStringBuilder(vissim.Instance.Evaluation.Wrap().GetConnectionString());
                if (sb.ContainsKey("Password"))
                {
                    using (var conn = new OleDbConnection(sb.ConnectionString))
                    {
                        conn.Open();
                        try
                        {
                            using (var reader = new OleDbCommand(query, conn).ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    list.Add(new AvgSpeedReportItem()
                                    {
                                        Link     = reader.GetInt32(0),
                                        Lane     = reader.GetInt32(1),
                                        Center   = new Point(reader.GetDouble(2), reader.GetDouble(3)),
                                        AvgSpeed = reader.GetDouble(4)
                                    });
                                }
                            }
                        }
                        finally
                        {
                            conn.Close();
                        }
                    }
                }
            }
            catch { }

            return(list);
        }