| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- #!/usr/bin/env bash
- # Lae keskkonnamuutujad
- source env.sh
- # Liigume ajutisse kausta
- #cd /tmp
- # Laadime alla Eesti OSM andmed ajutisse kausta
- #wget https://download.geofabrik.de/europe/estonia-latest.osm.pbf -P /tmp
- #wget https://raw.githubusercontent.com/openstreetmap/osm2pgsql/master/default.style -O default.style
- # Impordime andmed PostGIS andmebaasi
- # pbf failist luuakse lähtetabelid 'osm_point', 'osm_line', 'osm_polygon', 'osm_roads'
- # Ülejäänud tabelid luuakse lua failide abil.
- # https://github.com/osm2pgsql-dev/osm2pgsql/blob/master/flex-config/bbox.lua
- # First use the import-countries.lua to import country boundaries,
- # then use these with the other config files.
- PGSCHEMA=${destination_schema} osm2pgsql \
- --create \
- --slim \
- --cache 2000 \
- --number-processes 4 \
- --database "${destination_dbname}" \
- --username "${destination_user}" \
- --host "${destination_host}" \
- --port "${destination_port}" \
- --middle-schema="${destination_schema}" \
- --output=flex \
- --style=lua/import-countries.lua \
- --prefix=osm \
- /tmp/estonia-latest.osm.pbf
- psql ${CONNECTION_NAME} -c "DROP TABLE IF EXISTS ${destination_schema}.osm_pois;" && \
- PGSCHEMA=${destination_schema} osm2pgsql \
- --create \
- --slim \
- --cache 2000 \
- --number-processes 4 \
- --database "${destination_dbname}" \
- --username "${destination_user}" \
- --host "${destination_host}" \
- --port "${destination_port}" \
- --middle-schema="${destination_schema}" \
- --output=flex \
- --style=lua/osm_pois.lua \
- --prefix=osm \
- /tmp/estonia-latest.osm.pbf
- psql ${CONNECTION_NAME} -c "DROP TABLE IF EXISTS ${destination_schema}.highways;
- DROP TABLE IF EXISTS ${destination_schema}.routes;" && \
- PGSCHEMA=${destination_schema} osm2pgsql \
- --create \
- --slim \
- --cache 2000 \
- --number-processes 4 \
- --database "${destination_dbname}" \
- --username "${destination_user}" \
- --host "${destination_host}" \
- --port "${destination_port}" \
- --middle-schema="${destination_schema}" \
- --output=flex \
- --style=lua/highways.lua \
- --prefix=osm \
- /tmp/estonia-latest.osm.pbf
- psql ${CONNECTION_NAME} -c "DROP TABLE IF EXISTS ${destination_schema}.buildings;" && \
- PGSCHEMA=${destination_schema} osm2pgsql \
- --create \
- --slim \
- --cache 2000 \
- --number-processes 4 \
- --database "${destination_dbname}" \
- --username "${destination_user}" \
- --host "${destination_host}" \
- --port "${destination_port}" \
- --middle-schema="${destination_schema}" \
- --output=flex \
- --style=lua/buildings.lua \
- --prefix=osm \
- /tmp/estonia-latest.osm.pbf
- psql ${CONNECTION_NAME} -c "DROP TABLE IF EXISTS ${destination_schema}.administrative;" && \
- PGSCHEMA=${destination_schema} osm2pgsql \
- --create \
- --slim \
- --cache 2000 \
- --number-processes 4 \
- --database "${destination_dbname}" \
- --username "${destination_user}" \
- --host "${destination_host}" \
- --port "${destination_port}" \
- --middle-schema="${destination_schema}" \
- --output=flex \
- --style=lua/administrative.lua \
- --prefix=osm \
- /tmp/estonia-latest.osm.pbf
- # Kaalude lisamine administratiiv polügoonidele
- psql ${CONNECTION_NAME} -c "
- ALTER TABLE ${destination_schema}.administrative ADD COLUMN weight_poi integer;"
- psql ${CONNECTION_NAME} -c "
- UPDATE ${destination_schema}.administrative p
- SET weight_poi = sub.poi_count
- FROM (
- SELECT
- a.relation_id,
- COUNT(poi.*) AS poi_count
- FROM ${destination_schema}.administrative a
- JOIN ${destination_schema}.osm_pois poi
- ON ST_Intersects(a.geom, poi.geom)
- GROUP BY a.relation_id
- ) AS sub
- WHERE p.relation_id = sub.relation_id;"
- ## ---------------------- GRAAFI LOOMINE ---------------------------
- # a) links loomine
- echo "$COUNTIES" | parallel -j4 "county={}; bash batch_create_links.sh"
- #./batch_create_links.sh
- # maakonna links tabelite ühendamine
- ./merge_links.sh
- # testimiseks Valga valla links
- #./test_links.sh
- # Kontrollime ridade arvusid tabelites link_*
- ./generate_links_table_stats.sh
- # b) nodes loomine
- #psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/create_nodes.sql
- # c) links: source, target, cost
- ./update_links_sources_targets_costs.sh
- # Täiendav isoleeritud lõikude eemaldamine + reverse_cost lisamine
- # d) PGROUTING ettevalmistus
- psql ${CONNECTION_NAME} -c "
- SELECT pgr_createVerticesTable('${destination_schema}.links', 'geom', 'source', 'target');
- SELECT pgr_analyzeGraph('${destination_schema}.links', 0.001, the_geom := 'geom', id := 'id', source := 'source', target := 'target');
- "
- ./update_links_reverse_cost.sh
- # Kustuta isoleeritud lõigud
- ./pgr_prepare_batchwise.sh
- # Puhasta "intersection detected" lõigud
- ./detect_and_split_intersections_batchwise_fixed.sh
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/delete_links_covered_by_split.sql
- psql ${CONNECTION_NAME} -c "
- SELECT pgr_createVerticesTable('${destination_schema}.links', 'geom', 'source', 'target');
- SELECT pgr_analyzeGraph('${destination_schema}.links', 0.001, the_geom := 'geom', id := 'id', source := 'source', target := 'target');
- "
- # -------------- Siiani oleks nagu h½sti ---------------
- # NOTICE: Isolated segments: 0
- # NOTICE: Dead ends: 111179
- # NOTICE: Potential gaps found near dead ends: 0
- # NOTICE: Intersections detected: 6
- # NOTICE: Ring geometries: 0
- # Teistkordne probleemsete kohtade leidmine läbi tippude
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/detect_unconnected_intersections_batchwise_fixed.sql
- # ---------------- Siit on pooleli --------------
- # Teistkordne puhastamine
- # Järgmine päring andis tühja tulemuse. Uuri. Struktuuri oleks hea kasutada.
- #psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/detect_unconnected_intersections_batchwise.sql
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/delete_links_from_intersections_unconnected.sql
- # Loome tabeli tippudest kus on "intersection detected" (0 rida)
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/export_remaining_intersections_batchwise.sql
- # Skripti, mis logib kõik lõigud, mis lõikuvad geomeetriliselt, kuid pole ühendatud — sõltumata geomeetria tüübist.
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/log_all_unconnected_intersections.sql
- # Kustutamine
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/delete_links_by_intersections_all_geom.sql
- # Peale eelmist käsku tekkis 2 tk "Potential gaps found near dead ends"
- psql ${CONNECTION_NAME} -c "
- SELECT pgr_createVerticesTable('${destination_schema}.links', 'geom', 'source', 'target');
- SELECT pgr_analyzeGraph('${destination_schema}.links', 0.001, the_geom := 'geom', id := 'id', source := 'source', target := 'target');
- "
- # Parandame vea "Potential gaps found near dead ends"
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/repair_links_nearby_vertices.sql
- psql ${CONNECTION_NAME} -c "
- SELECT pgr_createVerticesTable('${destination_schema}.links', 'geom', 'source', 'target');
- SELECT pgr_analyzeGraph('${destination_schema}.links', 0.001, the_geom := 'geom', id := 'id', source := 'source', target := 'target');
- "
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/fix_small_gaps.sql
- psql ${CONNECTION_NAME} -c "
- SELECT pgr_createVerticesTable('${destination_schema}.links', 'geom', 'source', 'target');
- SELECT pgr_analyzeGraph('${destination_schema}.links', 0.001, the_geom := 'geom', id := 'id', source := 'source', target := 'target');
- "
- # Abitabelite kustutamised
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/drop_links_tables.sql
- # Tag'ide lisamine: isoleeritud ja lõikuvad
- #./tag_links_batchwise.sh
- # e) paranda graafi linke
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/fix_gaps_and_isolated.sql
- psql ${CONNECTION_NAME} -v schema=${destination_schema} -d ${destination_dbname} -f sql/repair_graph_components.sql
- ## -----------------------------------------------------------------------------------
|