From 3755564414795a7246df390e561afd0e1c39190b Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Mon, 10 Aug 2020 22:52:43 +0200 Subject: [PATCH] Add function to import raw P1/11. Based on the analogous import_raw_p190.py code. --- bin/import_raw_p111.py | 62 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 bin/import_raw_p111.py diff --git a/bin/import_raw_p111.py b/bin/import_raw_p111.py new file mode 100755 index 0000000..9e8d423 --- /dev/null +++ b/bin/import_raw_p111.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +""" +Import raw p111. + +For each survey in configuration.surveys(), check for new +or modified final P1/11 files and (re-)import them into the +database. +""" + +import os +from glob import glob +import re +import configuration +import p111 +from datastore import Datastore + +if __name__ == '__main__': + + print("Reading configuration") + surveys = configuration.surveys() + + print("Connecting to database") + db = Datastore() + db.connect() + + print("Reading surveys") + for survey in surveys: + print(f'Survey: {survey["id"]} ({survey["schema"]})') + + db.set_survey(survey["schema"]) + + raw_p111 = survey["raw"]["p111"] + pattern = raw_p111["pattern"] + rx = re.compile(pattern["regex"]) + + for fileprefix in raw_p111["paths"]: + print(f"Path prefix: {fileprefix}") + + for globspec in raw_p111["globs"]: + fullglob = os.path.join(fileprefix, globspec) + for filepath in glob(fullglob): + print(f"Found {filepath}") + + if not db.file_in_db(filepath): + print("Importing") + + match = rx.match(os.path.basename(filepath)) + file_info = dict(zip(pattern["captures"], match.groups())) + + p111_data = p111.from_file(filepath) + + print("Saving") + + p111_records = p111.p111_type("S", p111_data) + + db.save_raw_p111(p111_records, file_info, filepath, survey["epsg"]) + else: + print("Already in DB") + + print("Done") +