Fazemos roteamento (roteamento) no OpenStreetMap. Introdução

Gostaria de compartilhar a experiência de criação de sistemas de roteamento PostgreSQL / PgRouting no OpenStreetMap. Tratará de desenvolver soluções [comerciais] com requisitos complexos, para projetos mais simples bastará consultar a documentação. Pelo que eu sei, coisas como suporte total para estradas de mão única e instruções de direção, roteamento rápido para milhares de endereços (na ordem de segundos em um laptop comum, por exemplo, Macbook Pro 13 "2013), criação de um gráfico rodoviário com propriedades especificadas, meta-otimização de rotas não coberto de forma alguma e, como de costume, todos os dados e resultados estão disponíveis em meu repositório GitHub de OSM Routing Tricks , que adicionarei à medida que publicar.





330 OpenStreetMap ( 5 ). , , 5000 ? , , ( ).





, , , . : , , , , , ( )! PgRouting PostgreSQL OpenStreetMap.



, . , , - . , PgRouting . , , , .



, .





PgRouting 3.0 PostgreSQL 12, PgRouting 2.6 PostgreSQL 9 . , MacOS ( ) Debian/Ubuntu ( ) PgRouting pgr_TSP() , , , , "" MacOS , , , , . MacOS Debian/Ubuntu.



OpenStreetMap PostgreSQL



, GDAL, , . , , OpenStreetMap PostgreSQL SQL , . GDAL: PostgreSQL SQL Dump. , . GDAL. OSM (germany-latest.osm.pbf) PostgreSQL (osmrouting):



ogr2ogr \
    -f PGDUMP \
    /vsistdout/ "germany-latest.osm.pbf" \
    -nln "osm_lines" \
    -nlt LINESTRING \
    -progress \
    --config PG_USE_COPY YES \
    --config GEOMETRY_NAME the_geom \
    --config OSM_COMPRESS_NODES YES \
    --config OSM_CONFIG_FILE "osmconf.ini" \
    -sql "select * from lines where highway is not null" \
    -lco FID=id \
    | psql osmrouting


OpenStreetMap OpenStreetMap Data Extracts.



OpenStreetMap



. (), — . , , (). , ? , — , , , , . , , . PgRouting.



( ) , (, , ) . , . , . , .





. , , . , () , .



( ) , , . , . , 10 100 .



, , «» ? — () , (, , ) . . , 10 100 , , — ! , — . , , () , . .



PostgreSQL



"osmrouting", , PostgreSQL SQL , . load.sh ( PgRouting PostGIS).



, , ( start_id end_id , , , length):



--      (  )
-- id -   
-- the_geom -     
-- oneway -   
-- highway -    (      )
-- pedestrian -    (   )
-- start_id -      
-- end_id -      
-- length -   (        .)
osmrouting=# \d osm_network
                       Table "public.osm_network"
   Column   |           Type            | Collation | Nullable | Default 
------------+---------------------------+-----------+----------+---------
 id         | integer                   |           |          | 
 the_geom   | geometry(LineString,4326) |           |          | 
 type       | text                      |           |          | 
 oneway     | boolean                   |           |          | 
 highway    | boolean                   |           |          | 
 pedestrian | boolean                   |           |          | 
 start_id   | bigint                    |           |          | 
 end_id     | bigint                    |           |          | 
 length     | double precision          |           |          | 


:



--     
-- id -   
-- the_geom -     
osmrouting=# \d osm_nodes
                     Table "public.osm_nodes"
  Column  |         Type         | Collation | Nullable | Default 
----------+----------------------+-----------+----------+---------
 id       | bigint               |           |          | 
 the_geom | geometry(Point,4326) |           |          | 


, :



osmrouting=# \d osm_buildings
                   Table "public.osm_buildings"
  Column  |         Type         | Collation | Nullable | Default 
----------+----------------------+-----------+----------+---------
 id       | character varying    |           |          | 
 the_geom | geometry(Point,4326) |           |          | 
...


.





route.sql 330 PgRouting pgr_TSP(). , , ( , . PgRouting). pgr_dijkstraCostMatrix(). , directed=false, pgr_TSP() (, , ). pgr_dijkstraSymmetrizeCostMatrix() pgr_dijkstraValidateCostMatrix() , . , ( — ) pgr_dijkstraVia() .



randomize=false , randomize=true, . SQL "route" , QGIS. QGIS , . route.qgs .



:





, — , 245,246,247 . «» — , , . ( ), , .





— , PgRouting. , ( , ), , . .




All Articles