Ejemplo n.º 1
0
def set_osm_file_timestamp(input_path, new_timestamp):
    (dir, name, _, input_format) = deconstruct_file_path(input_path)
    temp_path = os.path.join(dir, f'{str(uuid4())}.{input_format}')
    run_command_wrapper(command=f'{definitions.OSMCONVERT_PATH} \
                    {input_path} \
                    --timestamp={new_timestamp} \
                    -o={temp_path} \
                    --verbose',
                        subprocess_name=SUBPROCESS_NAME)
    output_name = f'{name}.{new_timestamp}.{input_format}'
    output_path = os.path.join(dir, output_name)
    os.rename(temp_path, output_path)
    return output_path
Ejemplo n.º 2
0
def drop_author(input_path, output_path=None):
    (input_dir, _, _, input_format) = deconstruct_file_path(input_path)
    output_not_given = False
    if output_path is None:
        output_not_given = True
        output_path = os.path.join(input_dir, f'{str(uuid4())}.{input_format}')
    run_command_wrapper(command=f'{definitions.OSMCONVERT_PATH} \
                    --drop-author \
                    {input_path} \
                    -o={output_path} \
                    --verbose',
                        subprocess_name=SUBPROCESS_NAME)
    if output_not_given:
        os.rename(output_path, input_path)
        return input_path
    return output_path
Ejemplo n.º 3
0
def create_delta(delta_path,
                 delta_name,
                 first_input_pbf_path,
                 second_input_pbf_path,
                 should_compress=False):
    (compression_type, output_format) = get_compression_method(
        compression=should_compress,
        base_format=definitions.FORMATS_MAP['OSC'])
    output_name = f'{delta_name}.{output_format}'
    output_path = os.path.join(delta_path, output_name)
    run_command_wrapper(command=f'{definitions.OSMOSIS_PATH} \
                    --read-pbf-fast file={first_input_pbf_path} outPipe.0=1 \
                    --read-pbf-fast file={second_input_pbf_path} outPipe.0=2 \
                    --derive-change inPipe.0=1 inPipe.1=2 outPipe.0=3 \
                    --write-xml-change compressionMethod={compression_type} file={output_path} inPipe.0=3 \
                    -v',
                        subprocess_name=SUBPROCESS_NAME)
    return output_path
Ejemplo n.º 4
0
def clip_polygon(input_path,
                 polygon_path,
                 input_timestamp,
                 base_output_path,
                 exist_ok=False):
    (_, input_name, _, _) = deconstruct_file_path(input_path)
    (_, polygon_name, _, _) = deconstruct_file_path(polygon_path)

    output_format = definitions.FORMATS_MAP['OSM_PBF']
    output_name = f'{input_name}.{polygon_name}.{input_timestamp}.{output_format}'
    output_path = os.path.join(base_output_path, output_name)

    if not exist_ok or not os.path.isfile(output_path):
        run_command_wrapper(command=f'{definitions.OSMOSIS_PATH} \
                        --read-pbf-fast file={input_path} outPipe.0=1 \
                        --bounding-polygon file={polygon_path} \
                        completeWays=true completeRelations=true inPipe.0=1 outPipe.0=2 \
                        --write-pbf file={output_path} inPipe.0=2 \
                        -v',
                            subprocess_name=SUBPROCESS_NAME)
    return output_path
Ejemplo n.º 5
0
def apply_changes_by_polygon(base_output_path, input_path, change_path,
                             polygon_path):
    (_, input_name, _, _) = deconstruct_file_path(input_path)
    (_, _, changes_timestamps,
     changes_format) = deconstruct_file_path(change_path)

    compression_type = definitions.COMPRESSION_METHOD_MAP[changes_format]

    output_format = definitions.FORMATS_MAP['OSM_PBF']
    output_path = os.path.join(
        base_output_path, f'{input_name}.{changes_timestamps}.{output_format}')

    run_command_wrapper(command=f'{definitions.OSMOSIS_PATH} \
                    --read-pbf-fast file={input_path} outPipe.0=1 \
                    --read-xml-change compressionMethod={compression_type} file={change_path} outPipe.0=2 \
                    --apply-change inPipe.0=1 inPipe.1=2 outPipe.0=3 \
                    --bounding-polygon file={polygon_path} inPipe.0=3 outPipe.0=4 \
                    --write-pbf file={output_path} inPipe.0=4 \
                    -v',
                        subprocess_name=SUBPROCESS_NAME)
    return output_path
Ejemplo n.º 6
0
def get_changes_from_timestamp(input_timestamp, changes_format, source,
                               limited_time_units):
    temp_output_name = f'{uuid4()}.{changes_format}'
    output_path = os.path.join(definitions.OSMCHANGES_PATH, changes_format,
                               temp_output_name)

    run_command_wrapper(command=f'{definitions.OSMUPDATE_PATH} \
                    {input_timestamp} \
                    {output_path} \
                    {time_units_to_command_string(limited_time_units)} \
                    --base-url={source} \
                    --tempfiles={definitions.OSMUPDATE_CACHE_PATH} \
                    --keep-tempfiles \
                    --trust-tempfiles \
                    -v',
                        subprocess_name=SUBPROCESS_NAME)

    output_timestamp = get_osm_file_timestamp(input_path=output_path)
    output_name = f'{input_timestamp}.{output_timestamp}.{changes_format}'
    new_output_path = os.path.join(definitions.OSMCHANGES_PATH, changes_format,
                                   output_name)
    os.rename(output_path, new_output_path)
    return new_output_path