OPessoa Blog

Instalar tabela PGRouting

Posted on 2013-08-14 00:00:00


Passo a passo para instalar tabela pronta para uso do Dijstkra
--Executar esse script após instalar pgrouting e postgis, importar o shape, executar o utmzone.sql


ALTER TABLE ruas ADD COLUMN "source" integer;
ALTER TABLE ruas ADD COLUMN "target" integer;
--Tamanho em graus
ALTER TABLE ruas ADD COLUMN "length" double precision;
--Tamanho em metros
ALTER TABLE ruas ADD COLUMN "km_length" double precision;

ALTER TABLE ruas ADD COLUMN "cost" double precision;
ALTER TABLE ruas ADD COLUMN "rcost" double precision;

--Seta todas ruas como mão dupla
ALTER TABLE ruas ADD COLUMN "direcao" character varying default 'B';--B - Both, ST - Source/Target, TS - Target/Source

update ruas set the_geom = ST_Transform(ST_SetSRID(the_geom,32722),4618);
UPDATE ruas SET the_geom = ST_SetSRID(the_geom, 4618);

--Cria o grafo a partir das ruas
select pgr_createtopology('ruas', 0.00000001, 'the_geom', 'gid');

CREATE INDEX source_idx ON ruas("source");
CREATE INDEX target_idx ON ruas("target");

--Já atualizando para o caso de se usar custo reverso
update ruas set km_length = st_length(st_transform(the_geom,utmzone(ST_Centroid(the_geom))));
update ruas set length = st_length(the_geom);
update ruas set cost = km_length;
update ruas set rcost = km_length;

--Precisa se usar o estrela
ALTER TABLE ruas ADD COLUMN x1 double precision;
ALTER TABLE ruas ADD COLUMN y1 double precision;
ALTER TABLE ruas ADD COLUMN x2 double precision;
ALTER TABLE ruas ADD COLUMN y2 double precision;

UPDATE ruas SET x1 = ST_x(ST_startpoint(the_geom)), y1 = ST_y(ST_startpoint(the_geom)), x2 = ST_x(ST_endpoint(the_geom)), y2 = ST_y(ST_endpoint(the_geom));

--Cria tabela de vertices.
CREATE TABLE trajetos
(
id text NOT NULL,
ids integer,
idt integer,
distancia double precision,
sequencia text,
CONSTRAINT id PRIMARY KEY (id )
);
Executar o script após a a instalação das extensões PostGis e PGRouting e da importação do SHAPE.