1-
2-
31-- ----------------------------------------------------------------------------------------------------
42-- ----------------------------------------------------------------------------------------------------
53-- SAMPLE DATA
64-- ----------------------------------------------------------------------------------------------------
75-- ----------------------------------------------------------------------------------------------------
6+ -- CopyRight(c) pgRouting developers
7+ -- Creative Commons Attribution-Share Alike 3.0 License : https://creativecommons.org/licenses/by-sa/3.0/
88
9- DROP TABLE IF EXISTS public .edge_table ;
10- DROP TABLE IF EXISTS public .edge_table_vertices_pgr ;
9+ DROP TABLE IF EXISTS public .edges ;
10+ DROP TABLE IF EXISTS public .vertices ;
1111DROP TABLE IF EXISTS public .vehicles_1 ;
1212DROP TABLE IF EXISTS public .orders_1 ;
1313DROP TABLE IF EXISTS public .edges_matrix ;
1414
15- -- activate python
16- CREATE OR REPLACE PROCEDURE activate_python_venv(venv text )
17- LANGUAGE plpython3u AS
18- $BODY$
19- import os
20- import sys
21-
22- if sys .platform in (' win32' , ' win64' , ' cygwin' ):
23- activate_this = os .path .join (venv, ' Scripts' , ' activate_this.py' )
24- else:
25- activate_this = os .path .join (venv, ' bin' , ' activate_this.py' )
26-
27- exec(open(activate_this).read(), dict(__file__= activate_this))
28- $BODY$;
29-
3015-- EDGE TABLE CREATE start
31- CREATE TABLE public .edge_table (
32- id BIGSERIAL ,
16+ CREATE TABLE public .edges (
17+ id BIGSERIAL PRIMARY KEY ,
3318 source BIGINT ,
3419 target BIGINT ,
3520 cost FLOAT,
@@ -42,38 +27,58 @@ CREATE TABLE public.edge_table (
4227);
4328-- EDGE TABLE CREATE end
4429-- EDGE TABLE ADD DATA start
45- INSERT INTO public .edge_table (
46- cost, reverse_cost,
47- x1, y1,
48- x2, y2) VALUES
49- ( 1 , 1 , 2 , 0 , 2 , 1 ),
50- (- 1 , 1 , 2 , 1 , 3 , 1 ),
51- (- 1 , 1 , 3 , 1 , 4 , 1 ),
52- ( 1 , 1 , 2 , 1 , 2 , 2 ),
53- ( 1 , - 1 , 3 , 1 , 3 , 2 ),
54- ( 1 , 1 , 0 , 2 , 1 , 2 ),
55- ( 1 , 1 , 1 , 2 , 2 , 2 ),
56- ( 1 , 1 , 2 , 2 , 3 , 2 ),
57- ( 1 , 1 , 3 , 2 , 4 , 2 ),
58- ( 1 , 1 , 2 , 2 , 2 , 3 ),
59- ( 1 , - 1 , 3 , 2 , 3 , 3 ),
60- ( 1 , - 1 , 2 , 3 , 3 , 3 ),
61- ( 1 , - 1 , 3 , 3 , 4 , 3 ),
62- ( 1 , 1 , 2 , 3 , 2 , 4 ),
63- ( 1 , 1 , 4 , 2 , 4 , 3 ),
64- ( 1 , 1 , 4 , 1 , 4 , 2 ),
65- ( 1 , 1 , 0 .5 , 3 .5 , 1 .999999999999 , 3 .5 ),
66- ( 1 , 1 , 3 .5 , 2 .3 , 3 .5 , 4 );
67- -- EDGE TABLE ADD DATA end
68-
69- -- EDGE TABLE update geometry start
70-
71- UPDATE public .edge_table SET geom = st_makeline(st_point(x1,y1),st_point(x2,y2));
72-
73- -- EDGE TABLE update geometry end
30+ INSERT INTO public .edges (cost, reverse_cost, geom) VALUES
31+ ( 1 , 1 , ST_MakeLine(ST_POINT(2 , 0 ), ST_POINT(2 , 1 ))),
32+ (- 1 , 1 , ST_MakeLine(ST_POINT(2 , 1 ), ST_POINT(3 , 1 ))),
33+ (- 1 , 1 , ST_MakeLine(ST_POINT(3 , 1 ), ST_POINT(4 , 1 ))),
34+ ( 1 , 1 , ST_MakeLine(ST_POINT(2 , 1 ), ST_POINT(2 , 2 ))),
35+ ( 1 , - 1 , ST_MakeLine(ST_POINT(3 , 1 ), ST_POINT(3 , 2 ))),
36+ ( 1 , 1 , ST_MakeLine(ST_POINT(0 , 2 ), ST_POINT(1 , 2 ))),
37+ ( 1 , 1 , ST_MakeLine(ST_POINT(1 , 2 ), ST_POINT(2 , 2 ))),
38+ ( 1 , 1 , ST_MakeLine(ST_POINT(2 , 2 ), ST_POINT(3 , 2 ))),
39+ ( 1 , 1 , ST_MakeLine(ST_POINT(3 , 2 ), ST_POINT(4 , 2 ))),
40+ ( 1 , 1 , ST_MakeLine(ST_POINT(2 , 2 ), ST_POINT(2 , 3 ))),
41+ ( 1 , - 1 , ST_MakeLine(ST_POINT(3 , 2 ), ST_POINT(3 , 3 ))),
42+ ( 1 , - 1 , ST_MakeLine(ST_POINT(2 , 3 ), ST_POINT(3 , 3 ))),
43+ ( 1 , - 1 , ST_MakeLine(ST_POINT(3 , 3 ), ST_POINT(4 , 3 ))),
44+ ( 1 , 1 , ST_MakeLine(ST_POINT(2 , 3 ), ST_POINT(2 , 4 ))),
45+ ( 1 , 1 , ST_MakeLine(ST_POINT(4 , 2 ), ST_POINT(4 , 3 ))),
46+ ( 1 , 1 , ST_MakeLine(ST_POINT(4 , 1 ), ST_POINT(4 , 2 ))),
47+ ( 1 , 1 , ST_MakeLine(ST_POINT(0 .5 , 3 .5 ), ST_POINT(1 .999999999999 , 3 .5 ))),
48+ ( 1 , 1 , ST_MakeLine(ST_POINT(3 .5 , 2 .3 ), ST_POINT(3 .5 , 4 )));
49+ /* --EDGE TABLE ADD DATA end */
7450
7551-- EDGE TABLE TOPOLOGY start
76- SELECT pgr_createTopology(' public.edge_table' ,0 .001 , the_geom => ' geom' );
52+
53+ /* -- q1 */
54+ SELECT * INTO public .vertices
55+ FROM pgr_extractVertices(' SELECT id, geom FROM edges ORDER BY id' );
56+ /* -- q1-1 */
57+ CREATE SEQUENCE vertices_id_seq ;
58+ ALTER TABLE public .vertices ALTER COLUMN id SET DEFAULT nextval(' vertices_id_seq' );
59+ ALTER SEQUENCE vertices_id_seq OWNED BY vertices .id ;
60+ SELECT setval(' vertices_id_seq' , (SELECT coalesce(max (id)) FROM public .vertices ));
61+ /* -- q1-2 */
62+ \d public .vertices
63+ /* -- q2 */
64+ SELECT * FROM public .vertices ;
65+ /* -- q3 */
66+ /* -- set the source information */
67+ UPDATE public .edges AS e
68+ SET source = v .id , x1 = x, y1 = y
69+ FROM public .vertices AS v
70+ WHERE ST_StartPoint(e .geom ) = v .geom ;
71+
72+ /* -- set the target information */
73+ UPDATE public .edges AS e
74+ SET target = v .id , x2 = x, y2 = y
75+ FROM public .vertices AS v
76+ WHERE ST_EndPoint(e .geom ) = v .geom ;
77+ /* -- q4 */
78+ SELECT id, source, target
79+ FROM public .edges ORDER BY id;
80+ /* -- q5 */
81+
7782-- EDGE TABLE TOPOLOGY end
7883
7984
@@ -124,24 +129,24 @@ INSERT INTO public.orders_1
124129 p_id, p_x, p_y, p_open, p_close, p_service,
125130 d_id, d_x, d_y, d_open, d_close, d_service) VALUES
126131(10 ,
127- 3 , 3 , 1 , 2 , 10 , 3 ,
128- 8 , 1 , 2 , 6 , 15 , 3 ),
132+ 10 , 3 , 1 , 2 , 10 , 3 ,
133+ 3 , 1 , 2 , 6 , 15 , 3 ),
129134(20 ,
130- 9 , 4 , 2 , 4 , 15 , 2 ,
131- 4 , 4 , 1 , 6 , 20 , 3 ),
135+ 16 , 4 , 2 , 4 , 15 , 2 ,
136+ 15 , 4 , 1 , 6 , 20 , 3 ),
132137(30 ,
133- 5 , 2 , 2 , 2 , 10 , 3 ,
134- 11 , 3 , 3 , 3 , 20 , 3 );
138+ 7 , 2 , 2 , 2 , 10 , 3 ,
139+ 6 , 3 , 3 , 3 , 20 , 3 );
135140
136141
137142-- ORDERS TABLE end
138143
139144SELECT start_vid, end_vid, agg_cost::BIGINT
140145INTO edges_matrix
141146FROM pgr_dijkstraCostMatrix($$
142- SELECT * FROM edge_table $$,
143- (SELECT array_agg(id) FROM edge_table_vertices_pgr)
144- );
147+ SELECT * FROM public . edges $$,
148+ (SELECT array_agg(id) FROM public . vertices ),
149+ directed => false );
145150
146151/*
147152Sample data for wc
0 commit comments