2020-12-07 09:00:00 +00:00
|
|
|
#! /usr/bin/python3
|
2020-01-16 01:27:33 +00:00
|
|
|
# Copyright (C) 2018-2020 Merspieler, merspieler _at_ airmail.cc
|
|
|
|
#
|
|
|
|
# This program is free software; you can redistribute it and/or
|
|
|
|
# modify it under the terms of the GNU General Public License as
|
|
|
|
# published by the Free Software Foundation; either version 3 of the
|
|
|
|
# License, or (at your option) any later version.
|
|
|
|
#
|
|
|
|
# This program is distributed in the hope that it will be useful, but
|
|
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
# General Public License for more details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
# along with this program; if not, write to the Free Software
|
|
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
2020-01-13 17:02:11 +00:00
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
2020-01-16 01:27:33 +00:00
|
|
|
argc = len(sys.argv)
|
|
|
|
i = 1
|
|
|
|
first = True
|
|
|
|
while i < argc:
|
|
|
|
if sys.argv[i] == "-h" or sys.argv[i] == "--help":
|
|
|
|
print("usage: split-world.py <file> [OPTIONS]")
|
2021-09-29 16:58:50 +00:00
|
|
|
print("Splits a global .pbf file into 10x10 degree ones")
|
2020-01-16 01:27:33 +00:00
|
|
|
print("")
|
|
|
|
print(" <file> Is the worldwide osm file")
|
|
|
|
print("OPTIONS")
|
|
|
|
print(" -h, --help Shows this help and exit")
|
|
|
|
sys.exit(0)
|
|
|
|
else:
|
|
|
|
if first:
|
|
|
|
world_file = sys.argv[i]
|
|
|
|
else:
|
|
|
|
print("Unknown option " + sys.argv[i])
|
|
|
|
sys.exit(1)
|
|
|
|
i += 1
|
|
|
|
|
2020-01-13 17:02:11 +00:00
|
|
|
config_path = os.path.dirname(os.path.realpath(__file__)) + "/osmium-config/"
|
|
|
|
prefix = "osmium-cut-world-step-"
|
|
|
|
state4 = ['nw', 'ne', 'sw', 'se']
|
|
|
|
state2 = ['s', 'n']
|
|
|
|
|
2020-08-26 16:54:15 +00:00
|
|
|
os.system("mkdir -p output")
|
|
|
|
|
2020-01-13 17:02:11 +00:00
|
|
|
def run_cut(path, step, name, start_file=None):
|
|
|
|
if start_file != None:
|
|
|
|
print("Splitting world in 4...")
|
|
|
|
ret = os.system("osmium extract -c " + path + name + ".json " + start_file + " --overwrite")
|
|
|
|
if ret == 0:
|
|
|
|
os.system("mv n-pole.osm.pbf output/")
|
|
|
|
os.system("mv s-pole.osm.pbf output/")
|
|
|
|
else:
|
|
|
|
print("Building: " + name + "...")
|
|
|
|
os.system("osmium extract -c " + path + str(step) + "-" + name + ".json " + name + ".osm.pbf --overwrite")
|
2020-12-07 09:00:00 +00:00
|
|
|
os.system("rm " + name + ".osm.pbf")
|
2020-01-13 17:02:11 +00:00
|
|
|
|
|
|
|
con_pre = config_path + prefix
|
|
|
|
run_cut(con_pre, 1, "1", world_file)
|
|
|
|
for i in range(0, len(state4)):
|
|
|
|
run_cut(con_pre, 2, state4[i])
|
|
|
|
for j in range(0, len(state4)):
|
|
|
|
run_cut(con_pre, 3, state4[i] + "-" + state4[j])
|
|
|
|
for k in range(1, 4):
|
|
|
|
run_cut(con_pre, 4, state4[i] + "-" + state4[j] + "-" + str(k))
|
|
|
|
for l in range(0, len(state2)):
|
|
|
|
run_cut(con_pre, 5, state4[i] + "-" + state4[j] + "-" + str(k) + "-" + state2[l])
|