Add function to import final P1/11.

Based on the analogous import_final_p190.py code.
This commit is contained in:
D. Berge
2020-08-10 22:54:36 +02:00
parent 3755564414
commit 9c58ec30b5

62
bin/import_final_p111.py Executable file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/python3
"""
Import final 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"])
final_p111 = survey["final"]["p111"]
pattern = final_p111["pattern"]
rx = re.compile(pattern["regex"])
for fileprefix in final_p111["paths"]:
print(f"Path prefix: {fileprefix}")
for globspec in final_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_final_p111(p111_records, file_info, filepath, survey["epsg"])
else:
print("Already in DB")
print("Done")