176 lines
5.3 KiB
Python
Executable File
176 lines
5.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import argparse
|
|
import openpyxl
|
|
|
|
|
|
KG_MAP = {
|
|
'Dobermannsdorf': 6104,
|
|
'Gaiselberg': 6109,
|
|
'Gösting': 6110,
|
|
'Groß Inzersdorf': 6113,
|
|
'Groß Krut': 15111,
|
|
'Hausbrunn': 15114,
|
|
'Hauskirchen': 6111,
|
|
'Herrnbaumgarten': 15115,
|
|
'Jedenspeigen': 6114,
|
|
'Obersiebenbrunn': 6217,
|
|
'Loidesthal': 6115,
|
|
'Zistersdorf': 6128,
|
|
'Maustrenk': 6116,
|
|
'Niederabsdorf': 6101,
|
|
'Obersulz': 6125,
|
|
'Palterndorf': 6119,
|
|
'Prinzendorf': 6120,
|
|
'Sierndorf': 6123,
|
|
'Windisch-Baumgarten': 6102,
|
|
}
|
|
|
|
RD_MAP = {
|
|
('Schilling', 6117): 1,
|
|
('Kreiten', 6103): 1,
|
|
('Feldweingarten', 6103): 2,
|
|
('Hausweingarten', 6103): 3,
|
|
('Sommerberg', 6103): 4,
|
|
('Schilling', 6104): 1,
|
|
('Mittlere Bloten', 6104): 2,
|
|
('Schotter', 6104): 3,
|
|
('Obere Bloten', 6104): 4,
|
|
('Oberer Sand', 6104): 5,
|
|
('Kirchenried', 6106): 1,
|
|
('Steigewanten', 6107): 1,
|
|
('Loidesthaler', 6109): 1,
|
|
('Tillern', 6109): 2,
|
|
('Hintauskreuten', 6109): 3,
|
|
('Spitz', 6109): 4,
|
|
('Saatzen', 6109): 5,
|
|
('Hausberg', 6109): 6,
|
|
('Kreiten', 6109): 7,
|
|
('Götzenthaler', 6109): 8,
|
|
('Kreuten alt', 6109): 9,
|
|
('Steinberg', 6110): 1,
|
|
('Steinberg Wald', 6110): 2,
|
|
('Ebenacker', 6110): 3,
|
|
('Junge Reinberger', 6110): 4,
|
|
('Flederwisch', 6110): 5,
|
|
('Hageln', 6110): 6,
|
|
('Alte Kreuten', 6113): 1,
|
|
('Bockstaller', 6113): 2,
|
|
('Huberischer', 6113): 3,
|
|
('Kreiten', 6113): 4,
|
|
('Junge Hofäcker', 6113): 5,
|
|
('Sommerleiten', 6113): 6,
|
|
('Winterleiten', 6113): 7,
|
|
('Satz', 6113): 8,
|
|
('Hofacker Frohner', 6113): 9,
|
|
('Goldberg', 6113): 10,
|
|
('Hofacker', 6113): 11,
|
|
('Dorfackerl', 6113): 12,
|
|
('Altenberg', 6113): 13,
|
|
('Weinberg', 6113): 14,
|
|
('Zulus', 6113): 15,
|
|
('Anger', 6102): 1,
|
|
('Winterleiten', 6102): 2,
|
|
('Steinstück', 6102): 3,
|
|
('Hirschfeld', 6111): 1,
|
|
('Kirchberg2', 6111): 2,
|
|
('alter Hausberg', 6111): 3,
|
|
('Kirchberg oben', 6111): 4,
|
|
('Kirchberg unten', 6111): 5,
|
|
('Hausweingarten', 6111): 6,
|
|
('äußere Kirchenried', 6114): 1,
|
|
('Adamsberg', 6114): 2,
|
|
('Gießhübl', 6114): 3,
|
|
('Hundsberg', 6114): 4,
|
|
('Kirchenried', 6114): 5,
|
|
('Neusatz', 6114): 6,
|
|
('Ebner', 6114): 7,
|
|
('Ober der Straße', 6114): 8,
|
|
}
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('file')
|
|
args = parser.parse_args()
|
|
|
|
area_coms = []
|
|
wb = openpyxl.load_workbook(args.file)
|
|
sheet = wb.worksheets[0]
|
|
mgnr, ort, ried, gstnr, kgnr = None, None, None, None, None
|
|
for row in sheet.rows:
|
|
if row[0].value is not None:
|
|
mgnr, ort, ried, gstnr, kgnr = row[0].value, row[4].value, None, None, None
|
|
if mgnr is None:
|
|
continue
|
|
rd, gst, total_area, area, sortid = row[5].value, row[6].value, row[7].value, row[8].value, row[9].value
|
|
if rd is not None:
|
|
if type(rd) == int:
|
|
kgnr = rd
|
|
else:
|
|
ried = rd
|
|
gstnr = f'{gstnr}, {gst}' if gstnr else gst
|
|
if sortid is not None:
|
|
sortid = sortid.strip()
|
|
if sortid == 'MTH':
|
|
sortid = 'MT' # Müller Thurgau
|
|
elif sortid == 'GMU':
|
|
sortid = 'MU' # Muskateller?
|
|
if area is None:
|
|
gstnr = None
|
|
continue
|
|
kgnr = kgnr or KG_MAP[ort]
|
|
gstnr = (str(gstnr).replace(' / ', '/').replace(' ,', ', ').replace(',', ', ')
|
|
.replace(' ', ' ').replace(', ,', ',').replace(' - ', '-').replace('.', ', '))
|
|
if gstnr == 'None':
|
|
gstnr = '-'
|
|
if gstnr.startswith('06') or gstnr.startswith('6128,') or gstnr.startswith('6110,'):
|
|
kgnr, gstnr = gstnr.split(' ', 1)
|
|
kgnr = int(kgnr.strip(','))
|
|
gstnr = gstnr.strip(',').strip()
|
|
area_coms.append((mgnr, kgnr, ried, gstnr, area, sortid))
|
|
gstnr = None
|
|
continue
|
|
|
|
print('\nINSERT INTO area_commitment_type (vtrgid, sortid, attrid, disc, min_kg_per_ha, penalty_per_kg, penalty_amount, penalty_none) VALUES')
|
|
first = True
|
|
for t in set(a[5] for a in area_coms):
|
|
if not first:
|
|
print(',')
|
|
print(f"('{t}', '{t}', NULL, NULL, NULL, NULL, NULL, NULL)", end='')
|
|
first = False
|
|
print(';\n')
|
|
|
|
print('\nINSERT INTO wb_rd (kgnr, rdnr, name) VALUES')
|
|
first = True
|
|
for n, k in set((a[2], a[1]) for a in area_coms):
|
|
try:
|
|
rdnr = RD_MAP[(n, k)]
|
|
except KeyError:
|
|
if not first:
|
|
print(',')
|
|
keys = [b for (_, a), b in RD_MAP.items() if a == k]
|
|
if len(keys) == 0:
|
|
rdnr = 1
|
|
else:
|
|
rdnr = max(keys) + 1
|
|
RD_MAP[(n, k)] = rdnr
|
|
print(f"({k:5}, {rdnr:3}, '{n}')", end='')
|
|
first = False
|
|
print(';\n')
|
|
|
|
fbnr = 0
|
|
print('\nINSERT INTO area_commitment (fbnr, mgnr, vtrgid, cultid, area, year_from, year_to, kgnr, rdnr, gstnr, comment) VALUES')
|
|
for a in area_coms:
|
|
fbnr += 1
|
|
if fbnr > 1:
|
|
print(',')
|
|
rdnr = RD_MAP[(a[2], a[1])]
|
|
print(f"({fbnr:3}, {a[0]:3}, '{a[5]}', 'KIP', {a[4]:6}, 2025, NULL, {a[1]:5}, {rdnr:2}, '{a[3]}', NULL)", end='')
|
|
print(';\n')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|