Merge pull request #16 from ARUP-CAS/pian-downloading-logic-fix

Fixed PIAN counting and downloading logic
This commit is contained in:
David Spáčil
2026-02-19 07:20:14 +01:00
committed by GitHub
+42 -36
View File
@@ -79,6 +79,7 @@ def load_amcr_data(canvas, bb, filters=None):
MAX_LIMIT = 20000 MAX_LIMIT = 20000
seen_ids = set() seen_ids = set()
target_pian_ids_count = 0
while True: while True:
base_params['rows'] = BATCH_AKCE base_params['rows'] = BATCH_AKCE
@@ -198,7 +199,10 @@ def load_amcr_data(canvas, bb, filters=None):
dj_pian_value = dj_pian.get('id') dj_pian_value = dj_pian.get('id')
if dj_pian_value: if dj_pian_value:
target_pian_ids.add(dj_pian_value) target_pian_ids.add(dj_pian_value)
pian_lookup[dj_pian_value] = dj_meta target_pian_ids_count = target_pian_ids_count+1
if dj_pian_value not in pian_lookup:
pian_lookup[dj_pian_value] = []
pian_lookup[dj_pian_value].append(dj_meta)
if not target_pian_ids: if not target_pian_ids:
iface.messageBar().pushMessage("AMCR", f"Nalezeno {len(docs_akce)} akcí, ale žádná nemá geometrii.", level=1) iface.messageBar().pushMessage("AMCR", f"Nalezeno {len(docs_akce)} akcí, ale žádná nemá geometrii.", level=1)
@@ -213,7 +217,7 @@ def load_amcr_data(canvas, bb, filters=None):
docs_pian = [] docs_pian = []
BATCH_PIAN = 50 BATCH_PIAN = 50
iface.messageBar().pushMessage("AMCR", f"Akcí: {len(docs_akce)} (z toho {actions_with_geom} s mapou). Stahuji {total_pians} geometrií...", level=1) iface.messageBar().pushMessage("AMCR", f"Akcí: {len(docs_akce)} (z toho {actions_with_geom} s mapou). Stahuji {total_pians} unikátních geometrií, vykresluji {target_pian_ids_count} geometrií...", level=1)
# Seznam polí pro PIAN # Seznam polí pro PIAN
fl_pian = ["ident_cely", "pian_typ", "pian_chranene_udaje", "pian_presnost"] fl_pian = ["ident_cely", "pian_typ", "pian_chranene_udaje", "pian_presnost"]
@@ -284,7 +288,7 @@ def load_amcr_data(canvas, bb, filters=None):
if pid not in pian_lookup: if pid not in pian_lookup:
continue continue
meta = pian_lookup[pid] metas = pian_lookup[pid]
# Geometry processing # Geometry processing
raw = doc.get('pian_chranene_udaje') raw = doc.get('pian_chranene_udaje')
@@ -308,39 +312,41 @@ def load_amcr_data(canvas, bb, filters=None):
if wkt: if wkt:
geom = QgsGeometry.fromWkt(wkt) geom = QgsGeometry.fromWkt(wkt)
if geom.isGeosValid(): if geom.isGeosValid():
feat = QgsFeature()
feat.setGeometry(geom) for meta in metas:
feat.setAttributes([ feat = QgsFeature()
pid, feat.setGeometry(geom)
pian_presnost, feat.setAttributes([
pian_typ, pid,
meta['dj_id'], pian_presnost,
meta['dj_typ_value'], pian_typ,
meta['loc'], meta['dj_id'],
meta['ident_cely'], meta['dj_typ_value'],
"https://digiarchiv.aiscr.cz/id/" + meta['ident_cely'], meta['loc'],
meta['az_okres'], meta['ident_cely'],
meta['katastr'], "https://digiarchiv.aiscr.cz/id/" + meta['ident_cely'],
meta['dalsi_katastr'], meta['az_okres'],
meta['akce_hlavni_vedouci'], meta['katastr'],
meta['akce_organizace'], meta['dalsi_katastr'],
meta['akce_specifikace_data'], meta['akce_hlavni_vedouci'],
meta['akce_datum_zahajeni'], meta['akce_organizace'],
meta['akce_datum_ukonceni'], meta['akce_specifikace_data'],
meta['akce_hlavni_typ'], meta['akce_datum_zahajeni'],
meta['akce_vedlejsi_typ'], meta['akce_datum_ukonceni'],
meta['dj_negativni'], meta['akce_hlavni_typ'],
meta['lokalizace_okolnosti'], meta['akce_vedlejsi_typ'],
meta['akce_je_nz'], meta['dj_negativni'],
meta['pristupnost'] meta['lokalizace_okolnosti'],
]) meta['akce_je_nz'],
t = geom.type() meta['pristupnost']
if t == QgsWkbTypes.PolygonGeometry: ])
feats_p.append(feat) t = geom.type()
elif t == QgsWkbTypes.LineGeometry: if t == QgsWkbTypes.PolygonGeometry:
feats_l.append(feat) feats_p.append(feat)
elif t == QgsWkbTypes.PointGeometry: elif t == QgsWkbTypes.LineGeometry:
feats_pt.append(feat) feats_l.append(feat)
elif t == QgsWkbTypes.PointGeometry:
feats_pt.append(feat)
except Exception as ex: except Exception as ex:
print(f"Chyba při tvorbě feature: {ex}") print(f"Chyba při tvorbě feature: {ex}")
pass pass