Coverage for gws-app/gws/plugin/alkis/data/types.py: 0%

373 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-16 22:59 +0200

1from typing import Optional, Any 

2 

3import gws 

4 

5 

6class EnumPair: 

7 def __init__(self, code, text): 

8 self.code = code 

9 self.text = text 

10 

11 

12class Strasse(gws.Data): 

13 """Strasse (street) Record""" 

14 

15 name: str 

16 """Name of the street.""" 

17 gemarkung: EnumPair 

18 """Gemarkung (district) of the street.""" 

19 gemeinde: EnumPair 

20 """Gemeinde (municipality) of the street.""" 

21 

22 

23class Object: 

24 uid: str 

25 isHistoric: bool 

26 

27 def __init__(self, **kwargs): 

28 self.isHistoric = False 

29 self.__dict__.update(kwargs) 

30 

31 

32def _getattr(self, item): 

33 if item.startswith('_'): 

34 raise AttributeError() 

35 return None 

36 

37 

38setattr(Object, '__getattr__', _getattr) 

39 

40 

41class Record(Object): 

42 anlass: str 

43 beginnt: str 

44 endet: str 

45 

46 

47class Entity(Object): 

48 recs: list['Record'] 

49 

50 

51class Adresse(Object): 

52 land: EnumPair 

53 regierungsbezirk: EnumPair 

54 kreis: EnumPair 

55 gemeinde: EnumPair 

56 gemarkung: EnumPair 

57 

58 strasse: str 

59 hausnummer: str 

60 

61 x: float 

62 y: float 

63 shape: gws.Shape 

64 

65 

66class FlurstueckRecord(Record): 

67 flurnummer: str 

68 zaehler: str 

69 nenner: str 

70 flurstuecksfolge: str 

71 flurstueckskennzeichen: str 

72 

73 land: EnumPair 

74 regierungsbezirk: EnumPair 

75 kreis: EnumPair 

76 gemeinde: EnumPair 

77 gemarkung: EnumPair 

78 

79 amtlicheFlaeche: float 

80 

81 geom: str 

82 geomFlaeche: float 

83 x: float 

84 y: float 

85 

86 abweichenderRechtszustand: bool 

87 rechtsbehelfsverfahren: bool 

88 zeitpunktDerEntstehung: str 

89 zustaendigeStelle: list[EnumPair] 

90 zweifelhafterFlurstuecksnachweis: bool 

91 nachfolgerFlurstueckskennzeichen: list[str] 

92 vorgaengerFlurstueckskennzeichen: list[str] 

93 

94 

95class BuchungsstelleReference(Object): 

96 buchungsstelle: 'Buchungsstelle' 

97 

98 

99class Buchung(Entity): 

100 recs: list['BuchungsstelleReference'] 

101 buchungsblattUid: str 

102 buchungsblatt: 'Buchungsblatt' 

103 

104 

105class Flurstueck(Entity): 

106 recs: list[FlurstueckRecord] 

107 

108 flurstueckskennzeichen: str 

109 fsnummer: str 

110 

111 buchungList: list['Buchung'] 

112 lageList: list['Lage'] 

113 

114 gebaeudeList: list['Gebaeude'] 

115 gebaeudeAmtlicheFlaeche: float 

116 gebaeudeGeomFlaeche: float 

117 

118 nutzungList: list['Part'] 

119 festlegungList: list['Part'] 

120 bewertungList: list['Part'] 

121 

122 geom: Any 

123 x: float 

124 y: float 

125 shape: gws.Shape 

126 

127 

128class BuchungsblattRecord(Record): 

129 blattart: EnumPair 

130 buchungsart: str 

131 buchungsblattbezirk: EnumPair 

132 buchungsblattkennzeichen: str 

133 buchungsblattnummerMitBuchstabenerweiterung: str 

134 

135 

136class Buchungsblatt(Entity): 

137 recs: list[BuchungsblattRecord] 

138 buchungsstelleList: list['Buchungsstelle'] 

139 namensnummerList: list['Namensnummer'] 

140 buchungsblattkennzeichen: str 

141 

142 

143class BuchungsstelleRecord(Record): 

144 anteil: str 

145 beschreibungDesSondereigentums: str 

146 beschreibungDesUmfangsDerBuchung: str 

147 buchungsart: EnumPair 

148 buchungstext: str 

149 laufendeNummer: str 

150 

151 

152class Buchungsstelle(Entity): 

153 recs: list[BuchungsstelleRecord] 

154 buchungsblattUids: list[str] 

155 buchungsblattkennzeichenList: list[str] 

156 parentUids: list[str] 

157 childUids: list[str] 

158 fsUids: list[str] 

159 parentkennzeichenList: list[str] 

160 flurstueckskennzeichenList: list[str] 

161 laufendeNummer: str 

162 

163 

164class NamensnummerRecord(Record): 

165 anteil: str 

166 artDerRechtsgemeinschaft: EnumPair 

167 beschriebDerRechtsgemeinschaft: str 

168 eigentuemerart: EnumPair 

169 laufendeNummerNachDIN1421: str 

170 nummer: str 

171 strichblattnummer: int 

172 

173 

174class Namensnummer(Entity): 

175 recs: list[NamensnummerRecord] 

176 buchungsblattUids: list[str] 

177 buchungsblattkennzeichenList: list[str] 

178 personList: list['Person'] 

179 laufendeNummer: str 

180 

181 

182class PersonRecord(Record): 

183 akademischerGrad: str 

184 anrede: str 

185 geburtsdatum: str 

186 geburtsname: str 

187 nachnameOderFirma: str 

188 vorname: str 

189 

190 

191class Person(Entity): 

192 recs: list[PersonRecord] 

193 anschriftList: list['Anschrift'] 

194 

195 

196class AnschriftRecord(Record): 

197 hausnummer: str 

198 ort: str 

199 plz: str 

200 strasse: str 

201 telefon: str 

202 

203 

204class Anschrift(Entity): 

205 recs: list[AnschriftRecord] 

206 

207 

208class LageRecord(Record): 

209 hausnummer: str 

210 laufendeNummer: str 

211 ortsteil: str 

212 pseudonummer: str 

213 strasse: str 

214 

215 

216class Lage(Entity): 

217 recs: list['LageRecord'] 

218 gebaeudeList: list['Gebaeude'] 

219 x: float 

220 y: float 

221 

222 

223class GebaeudeRecord(Record): 

224 amtlicheFlaeche: float 

225 gebaeudekennzeichen: int 

226 geom: str 

227 geomFlaeche: float 

228 props: 'GebaeudeProps' 

229 

230 

231class Gebaeude(Entity): 

232 recs: list[GebaeudeRecord] 

233 

234 

235PART_NUTZUNG = 1 

236PART_BEWERTUNG = 2 

237PART_FESTLEGUNG = 3 

238 

239 

240class PartRecord(Record): 

241 amtlicheFlaeche: float # corrected 

242 geom: str 

243 geomFlaeche: float 

244 props: 'PartProps' 

245 

246 

247class Part(Entity): 

248 KIND = { 

249 PART_NUTZUNG: [ 

250 'Tatsächliche Nutzung', 

251 'tatsaechliche_nutzung', 

252 ], 

253 PART_BEWERTUNG: [ 

254 'Bodenschätzung, Bewertung', 

255 'gesetzliche_festlegungen_gebietseinheiten_kataloge/bodenschaetzung_bewertung', 

256 ], 

257 PART_FESTLEGUNG: [ 

258 'Öffentlich-rechtliche und sonstige Festlegungen', 

259 'gesetzliche_festlegungen_gebietseinheiten_kataloge/oeffentlich_rechtliche_und_sonstige_festlegungen', 

260 ], 

261 } 

262 

263 recs: list['PartRecord'] 

264 fs: str 

265 kind: int 

266 name: EnumPair 

267 amtlicheFlaeche: float 

268 geomFlaeche: float 

269 geom: str 

270 

271 

272class PlaceKind(gws.Enum): 

273 land = 'land' 

274 regierungsbezirk = 'regierungsbezirk' 

275 kreis = 'kreis' 

276 gemeinde = 'gemeinde' 

277 gemarkung = 'gemarkung' 

278 buchungsblattbezirk = 'buchungsblattbezirk' 

279 dienststelle = 'dienststelle' 

280 

281 

282class Place(Record): 

283 kind: str 

284 land: EnumPair 

285 regierungsbezirk: EnumPair 

286 kreis: EnumPair 

287 gemeinde: EnumPair 

288 gemarkung: EnumPair 

289 buchungsblattbezirk: EnumPair 

290 dienststelle: EnumPair 

291 

292 

293## 

294 

295 

296class GebaeudeProps(Object): 

297 anzahlDerOberirdischenGeschosse: int 

298 anzahlDerUnterirdischenGeschosse: int 

299 art: EnumPair 

300 bauart: EnumPair 

301 baujahr: list[int] 

302 bauweise: EnumPair 

303 beschaffenheit: list[EnumPair] 

304 dachart: str 

305 dachform: EnumPair 

306 dachgeschossausbau: EnumPair 

307 durchfahrtshoehe: int 

308 gebaeudefunktion: EnumPair 

309 gebaeudekennzeichen: str 

310 geschossflaeche: float 

311 grundflaeche: float 

312 hochhaus: bool 

313 lageZurErdoberflaeche: EnumPair 

314 name: list[str] 

315 objekthoehe: int 

316 punktkennung: str 

317 sonstigeEigenschaft: list[str] 

318 umbauterRaum: float 

319 weitereGebaeudefunktion: list[EnumPair] 

320 zustand: EnumPair 

321 

322 

323class PartProps(Object): 

324 abbaugut: EnumPair 

325 ackerzahlOderGruenlandzahl: str 

326 anzahlDerFahrstreifen: int 

327 anzahlDerStreckengleise: EnumPair 

328 art: EnumPair 

329 artDerBebauung: EnumPair 

330 artDerFestlegung: EnumPair 

331 bahnkategorie: list[EnumPair] 

332 bedeutung: list[EnumPair] 

333 befestigung: EnumPair 

334 besondereFahrstreifen: EnumPair 

335 besondereFunktion: EnumPair 

336 bodenart: EnumPair 

337 bodenzahlOderGruenlandgrundzahl: str 

338 breiteDerFahrbahn: int 

339 breiteDesGewaessers: int 

340 breiteDesVerkehrsweges: int 

341 datumAbgabe: str 

342 datumAnordnung: str 

343 datumBesitzeinweisung: str 

344 datumrechtskraeftig: str 

345 elektrifizierung: EnumPair 

346 entstehungsartOderKlimastufeWasserverhaeltnisse: list[EnumPair] 

347 fahrbahntrennung: EnumPair 

348 fliessrichtung: bool 

349 foerdergut: EnumPair 

350 funktion: EnumPair 

351 gewaesserkennzahl: str 

352 gewaesserkennziffer: str 

353 hydrologischesMerkmal: EnumPair 

354 identnummer: str 

355 internationaleBedeutung: EnumPair 

356 jahreszahl: int 

357 klassifizierung: EnumPair 

358 kulturart: EnumPair 

359 lagergut: EnumPair 

360 markierung: EnumPair 

361 merkmal: EnumPair 

362 nummer: str 

363 nummerDerSchutzzone: str 

364 nummerDesSchutzgebietes: str 

365 oberflaechenmaterial: EnumPair 

366 primaerenergie: EnumPair 

367 rechtszustand: EnumPair 

368 schifffahrtskategorie: EnumPair 

369 sonstigeAngaben: list[EnumPair] 

370 spurweite: EnumPair 

371 tagesabschnittsnummer: str 

372 tidemerkmal: EnumPair 

373 vegetationsmerkmal: EnumPair 

374 veraenderungOhneRuecksprache: bool 

375 verkehrsbedeutungInneroertlich: EnumPair 

376 verkehrsbedeutungUeberoertlich: EnumPair 

377 widmung: EnumPair 

378 zone: EnumPair 

379 zustand: EnumPair 

380 zustandsstufeOderBodenstufe: EnumPair 

381 

382 

383PROPS = { 

384 'abbaugut': 'Abbaugut', 

385 'ackerzahlOderGruenlandzahl': 'Ackerzahl oder Grünlandzahl', 

386 'anzahlDerFahrstreifen': 'Anzahl der Fahrstreifen', 

387 'anzahlDerOberirdischenGeschosse': 'Anzahl der oberirdischen Geschosse', 

388 'anzahlDerStreckengleise': 'Anzahl der Streckengleise', 

389 'anzahlDerUnterirdischenGeschosse': 'Anzahl der unterirdischen Geschosse', 

390 'art': 'Art', 

391 'artDerBebauung': 'Art der Bebauung', 

392 'artDerFestlegung': 'Art der Festlegung', 

393 'bahnkategorie': 'Bahnkategorie', 

394 'bauart': 'Bauart', 

395 'baujahr': 'Baujahr', 

396 'bauweise': 'Bauweise', 

397 'bedeutung': 'Bedeutung', 

398 'befestigung': 'Befestigung', 

399 'beschaffenheit': 'Beschaffenheit', 

400 'besondereFahrstreifen': 'Besondere Fahrstreifen', 

401 'besondereFunktion': 'Besondere Funktion', 

402 'bodenart': 'Bodenart', 

403 'bodenzahlOderGruenlandgrundzahl': 'Bodenzahl oder Grünlandgrundzahl', 

404 'breiteDerFahrbahn': 'Breite der Fahrbahn', 

405 'breiteDesGewaessers': 'Breite des Gewässers', 

406 'breiteDesVerkehrsweges': 'Breite des Verkehrsweges', 

407 'dachart': 'Dachart', 

408 'dachform': 'Dachform', 

409 'dachgeschossausbau': 'Dachgeschossausbau', 

410 'datumAbgabe': 'Datum-Abgabe', 

411 'datumAnordnung': 'Datum-Anordnung', 

412 'datumBesitzeinweisung': 'Datum-Besitzeinweisung', 

413 'datumrechtskraeftig': 'Datum-rechtskräftig', 

414 'durchfahrtshoehe': 'Durchfahrtshöhe', 

415 'elektrifizierung': 'Elektrifizierung', 

416 'entstehungsartOderKlimastufeWasserverhaeltnisse': 'Entstehungsart oder Klimastufe/Wasserverhältnisse', 

417 'fahrbahntrennung': 'Fahrbahntrennung', 

418 'fliessrichtung': 'Fließrichtung', 

419 'foerdergut': 'Fördergut', 

420 'funktion': 'Funktion', 

421 'gebaeudefunktion': 'Gebäudefunktion', 

422 'gebaeudekennzeichen': 'Gebäudekennzeichen', 

423 'geschossflaeche': 'Geschossfläche', 

424 'gewaesserkennzahl': 'Gewässerkennzahl', 

425 'gewaesserkennziffer': 'Gewässerkennziffer', 

426 'grundflaeche': 'Grundfläche', 

427 'hochhaus': 'Hochhaus', 

428 'hydrologischesMerkmal': 'Hydrologisches Merkmal', 

429 'identnummer': 'Identnummer', 

430 'internationaleBedeutung': 'Internationale Bedeutung', 

431 'jahreszahl': 'Jahreszahl', 

432 'klassifizierung': 'Klassifizierung', 

433 'kulturart': 'Kulturart', 

434 'lageZurErdoberflaeche': 'Lage zur Erdoberfläche', 

435 'lagergut': 'Lagergut', 

436 'markierung': 'Markierung', 

437 'merkmal': 'Merkmal', 

438 'name': 'Name', 

439 'nummer': 'Nummer', 

440 'nummerDerSchutzzone': 'Nummer der Schutzzone', 

441 'nummerDesSchutzgebietes': 'Nummer des Schutzgebietes', 

442 'oberflaechenmaterial': 'Oberflächenmaterial', 

443 'objekthoehe': 'Objekthöhe', 

444 'primaerenergie': 'Primärenergie', 

445 'punktkennung': 'Punktkennung', 

446 'rechtszustand': 'Rechtszustand', 

447 'schifffahrtskategorie': 'Schifffahrtskategorie', 

448 'sonstigeAngaben': 'Sonstige Angaben', 

449 'sonstigeEigenschaft': 'Sonstige Eigenschaft', 

450 'spurweite': 'Spurweite', 

451 'tagesabschnittsnummer': 'Tagesabschnittsnummer', 

452 'tidemerkmal': 'Tidemerkmal', 

453 'umbauterRaum': 'Umbauter Raum', 

454 'vegetationsmerkmal': 'Vegetationsmerkmal', 

455 'veraenderungOhneRuecksprache': 'Veränderung ohne Rücksprache', 

456 'verkehrsbedeutungInneroertlich': 'Verkehrsbedeutung innerörtlich', 

457 'verkehrsbedeutungUeberoertlich': 'Verkehrsbedeutung überörtlich', 

458 'weitereGebaeudefunktion': 'Weitere Gebäudefunktion', 

459 'widmung': 'Widmung', 

460 'zone': 'Zone', 

461 'zustand': 'Zustand', 

462 'zustandsstufeOderBodenstufe': 'Zustandsstufe oder Bodenstufe', 

463} 

464 

465## 

466 

467 

468class DisplayTheme(gws.Enum): 

469 """Display themes for ALKIS data.""" 

470 

471 lage = 'lage' 

472 """Lage" theme, showing the location of the property.""" 

473 gebaeude = 'gebaeude' 

474 """Gebäude" theme, showing building information.""" 

475 nutzung = 'nutzung' 

476 """Nutzung" theme, showing land use information.""" 

477 festlegung = 'festlegung' 

478 """Festlegung" theme, showing legal and other determinations.""" 

479 bewertung = 'bewertung' 

480 """Bewertung" theme, showing valuation information.""" 

481 buchung = 'buchung' 

482 """Buchung" theme, showing booking information.""" 

483 eigentuemer = 'eigentuemer' 

484 """Eigentümer" theme, showing owner information.""" 

485 

486 

487EigentuemerAccessRequired = ['personName', 'personVorname'] 

488 

489BuchungAccessRequired = ['buchungsblattkennzeichenList'] 

490 

491 

492class FlurstueckQueryOptions(gws.Data): 

493 strasseSearchOptions: gws.TextSearchOptions 

494 nameSearchOptions: gws.TextSearchOptions 

495 buchungsblattSearchOptions: gws.TextSearchOptions 

496 

497 limit: int 

498 pageSize: int 

499 offset: int 

500 sort: Optional[list[gws.SortOptions]] 

501 

502 displayThemes: list[DisplayTheme] 

503 

504 withEigentuemer: bool 

505 withBuchung: bool 

506 withHistorySearch: bool 

507 withHistoryDisplay: bool 

508 

509 

510class FlurstueckQuery(gws.Data): 

511 flurnummer: str 

512 flurstuecksfolge: str 

513 zaehler: str 

514 nenner: str 

515 flurstueckskennzeichen: str 

516 

517 flaecheBis: float 

518 flaecheVon: float 

519 

520 gemarkung: str 

521 gemarkungCode: str 

522 gemeinde: str 

523 gemeindeCode: str 

524 kreis: str 

525 kreisCode: str 

526 land: str 

527 landCode: str 

528 regierungsbezirk: str 

529 regierungsbezirkCode: str 

530 

531 strasse: str 

532 hausnummer: str 

533 

534 buchungsblattkennzeichenList: list[str] 

535 

536 personName: str 

537 personVorname: str 

538 

539 shape: gws.Shape 

540 

541 uids: list[str] 

542 

543 options: Optional['FlurstueckQueryOptions'] 

544 

545 

546class AdresseQueryOptions(gws.Data): 

547 strasseSearchOptions: gws.TextSearchOptions 

548 

549 limit: int 

550 pageSize: int 

551 offset: int 

552 sort: Optional[list[gws.SortOptions]] 

553 

554 withHistorySearch: bool 

555 

556 

557class AdresseQuery(gws.Data): 

558 gemarkung: str 

559 gemarkungCode: str 

560 gemeinde: str 

561 gemeindeCode: str 

562 kreis: str 

563 kreisCode: str 

564 land: str 

565 landCode: str 

566 regierungsbezirk: str 

567 regierungsbezirkCode: str 

568 

569 strasse: str 

570 hausnummer: str 

571 bisHausnummer: str 

572 hausnummerNotNull: bool 

573 

574 options: Optional['AdresseQueryOptions'] 

575 

576 

577class IndexStatus(gws.Data): 

578 """Index status""" 

579 

580 complete: bool 

581 basic: bool 

582 eigentuemer: bool 

583 buchung: bool 

584 missing: bool 

585 

586 

587## 

588 

589 

590class Reader: 

591 def read_all(self, cls: type, table_name: Optional[str] = None, uids: Optional[list[str]] = None): 

592 pass 

593 

594 def count(self, cls: type, table_name: Optional[str] = None) -> int: 

595 pass 

596 

597 

598##