-
Notifications
You must be signed in to change notification settings - Fork 0
/
processing.py
163 lines (153 loc) · 6.31 KB
/
processing.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
import xmltodict
import collections
import psycopg2
import datetime as dt
import glob
import json
def guaranteed_list(x):
if not x:
return []
elif isinstance(x, list):
return x
else:
return [x]
def numerksiegi(pole1):
""" Przygotuj nowy numer księgi oraz opis stanu księgi (rubryka 0.2) """
wydzial = pole1['@Wk']
repertorium = pole1['@Nr']
cyfrakontroli = pole1['@Ck']
numerkw = wydzial + '/'+ repertorium + '/' + cyfrakontroli
return numerkw
def stanksiegi(pole2):
opisksiegi= collections.OrderedDict()
""" Przygotuj opis stanu księgi """
opisksiegi['kw'] = numerksiegi(doc['KW']['R01']['P1'])
opisksiegi['stankw'] = pole2['P1']['@Tr']
opisksiegi['zapisaniekw'] = pole2['P2']['@Tr']
opisksiegi['ujawnieniekw'] = pole2['P3']['@Tr']
try:
opisksiegi['dotychczasowakw'] = pole2['P4']['@Tr']
except:
opisksiegi['dotychczasowakw'] = 'brak'
#Zapisz do bazy numer i stan księgi
return opisksiegi
def polozenie(d1or13):
""" Przygotuj rubrykę 1.3 w dziale I-O położenie nieruchomości"""
opispolozenia = collections.OrderedDict()
for polozenie in guaranteed_list(d1or13['E']):
opispolozenia['kw'] = kw
try:
opispolozenia['lp'] = polozenie['P1']['@Tr']
except:
opispolozenia['lp'] = 'XX'
try:
opispolozenia['wojewodztwo'] = polozenie['P2']['@Tr']
except:
opispolozenia['wojewodztwo'] = 'XX'
try:
opispolozenia['powiat'] = polozenie['P3']['@Tr']
except:
opispolozenia['powiat'] = 'XX'
try:
opispolozenia['gmina'] = polozenie['P4']['@Tr']
except:
opispolozenia['gmina'] = 'XX'
try:
opispolozenia['miejscowosc'] = polozenie['P5']['@Tr']
except:
opispolozenia['miejscowosc'] = 'XX'
return opispolozenia
def dzialka(d1or14):
""" Przygotuj rubrykę 1.4 podrubrykę 1.4.1 oznaczenie działki """
opisdzialki= collections.OrderedDict()
for oznaczenie in guaranteed_list(d1or14['E']):
opisdzialki['kw'] = kw
try:
opisdzialki['iddzialki'] = oznaczenie['P1']['@Tr']
except:
opisdzialki['iddzialki'] = 'XX'
try:
nrdzialki = collections.OrderedDict()
for nr in guaranteed_list(oznaczenie['P2']['@Tr']):
nrdzialki['dzew'] = nr
opisdzialki['numerdzialki'] = nrdzialki['dzew']
except:
opisdzialki['numerdzialki'] = 'nie wpisałem poprawnego - sprawdź'
try:
opisdzialki['sposobko'] = oznaczenie['P6']['@Tr']
except:
opisdzialki['sposobko'] = 'XX'
try:
opisdzialki['przylaczenie'] = oznaczenie['P7']['A']['@Wk'] + '/' + oznaczenie['P7']['A']['@Nr'] + '/' + oznaczenie['P7']['A']['@Ck']
except:
opisdzialki['przylaczenie'] = 'XX'
try:
opisdzialki['lpn'] = oznaczenie['P4']['E']['@Tr']
except:
opisdzialki['lpn'] = 'nie wpisałem poprawnego - sprawdź'
return opisdzialki
def wlasciciel(d2r22):
""" Przygotuj dane dla rubryki R2.2 księgi """
opiswlasciciela = collections.OrderedDict()
if d2r22.get('PR2') is not None:
for skarb in d2r22['PR2']['E']:
opiswlasciciela['kw'] = kw
opiswlasciciela['zarzad'] = skarb['SP']['I']['N']['@Tr']
opiswlasciciela['wlasciciel'] = 'sp - wpisy w wielu rubrykach'
try:
opiswlasciciela['wpisi'] = skarb['SP']['I']['N']['I']['#text']
except:
opiswlasciciela['wpisi'] = 'nie znalazłem podstawy wpisu'
try:
opiswlasciciela['wpisd'] = skarb['SP']['I']['N']['D']['#text']
except:
opiswlasciciela['wpisd'] = 'nie znalazłem podstawy wykreślenia'
cur.execute("INSERT INTO ekw.d2r22 VALUES(%s, %s, %s, %s, %s, %s)", (list(opiswlasciciela.values())))
if d2r22.get('PR3') is not None:
for skarb in d2r22['PR3']['E']['JT']['I']['N']:
opiswlasciciela['kw'] = kw
opiswlasciciela['zarzad'] = skarb['@Tr']
opiswlasciciela['wlasciciel'] = 'jst'
try:
opiswlasciciela['wpisi'] = skarb['SP']['I']['N']['I']['#text']
except:
opiswlasciciela['wpisi'] = 'nie znalazłem podstawy wpisu'
try:
opiswlasciciela['wpisd'] = skarb['SP']['I']['N']['D']['#text']
except:
opiswlasciciela['wpisd'] = 'nie znalazłem podstawy wykreślenia'
cur.execute("INSERT INTO ekw.d2r22 VALUES(%s, %s, %s, %s, %s)", (list(opiswlasciciela.values())))
if d2r22.get('PR5') is not None:
zarzadnazwisko = d2r22['PR5']['E']['OF']['N1']['@Tr']
opiswlasciciela['kw'] = kw
opiswlasciciela['zarzad'] = 'RODO - osoba fizyczna'
opiswlasciciela['wlasciciel'] = 'of'
try:
opiswlasciciela['wpisi'] = d2r22['PR5']['E']['OF']['N1']['I']['#text']
except:
opiswlasciciela['wpisi'] = 'nie znalazłem podstawy wpisu'
try:
opiswlasciciela['wpisd'] = d2r22['PR5']['E']['OF']['N1']['D']['#text']
except:
opiswlasciciela['wpisd'] = 'nie znalazłem podstawy wykreślenia'
cur.execute("INSERT INTO ekw.d2r22 VALUES(%s, %s, %s, %s, %s)", (list(opiswlasciciela.values())))
return
try:
conn = psycopg2.connect("dbname='osm' user='osm' host='localhost' password='osm'")
except:
print("Blad polaczenia z baza")
cur = conn.cursor()
for filepath in glob.iglob('d:/gis/lasy/kw/*.xml'):
with open(filepath) as fd:
doc = xmltodict.parse(fd.read())
kw = numerksiegi(doc['KW']['R01']['P1'])
opisksiegi = stanksiegi(doc['KW']['R02'])
cur.execute("INSERT INTO ekw.r02 VALUES(%s, %s, %s, %s, %s)", (list(opisksiegi.values())))
opispolozenia = polozenie(doc['KW']['D1o']['R13'])
cur.execute("INSERT INTO ekw.d1or13 VALUES(%s, %s, %s, %s, %s, %s)", (list(opispolozenia.values())))
opisdzialki = dzialka(doc['KW']['D1o']['R14']['PR141'])
cur.execute("INSERT INTO ekw.d1or14 VALUES(%s, %s, %s, %s, %s, %s)", (list(opisdzialki.values())))
#wlasciciel(doc['KW']['D2']['R22'])
conn.commit()
cur.close()
conn.close()