mirror of
https://github.com/ARUP-CAS/aiscr-qgis-amcr-viewer.git
synced 2026-08-12 10:08:16 +02:00
Compare commits
4 Commits
v2.0.2
...
version/v2.1.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ea2a99ada | |||
| 6772a99ead | |||
| 9e8863b879 | |||
| 0eb8008e27 |
@@ -0,0 +1,35 @@
|
|||||||
|
<!--
|
||||||
|
Děkujeme za příspěvek! Vyplň prosím sekce níže.
|
||||||
|
Nepotřebné body můžeš smazat. Komentáře (<!-- ... -->) se v PR nezobrazují.
|
||||||
|
-->
|
||||||
|
|
||||||
|
## Souhrn
|
||||||
|
|
||||||
|
<!-- Stručně co a proč. 1–3 věty. -->
|
||||||
|
|
||||||
|
## Změny
|
||||||
|
|
||||||
|
<!-- Co se konkrétně mění, ideálně po souborech / oblastech. -->
|
||||||
|
-
|
||||||
|
|
||||||
|
## Testování
|
||||||
|
|
||||||
|
<!-- Jak ověřit, že to funguje (kroky v QGIS, scénáře). -->
|
||||||
|
-
|
||||||
|
|
||||||
|
## Zapojení AI
|
||||||
|
|
||||||
|
<!-- Byla u změny použita AI? Jak? Např. "text navržen AI, ručně zkontrolováno
|
||||||
|
a upraveno". Smaž, pokud AI použita nebyla. -->
|
||||||
|
-
|
||||||
|
|
||||||
|
## Kontrolní seznam
|
||||||
|
- [ ] Změny jsou v souladu se stylem projektu (viz `AGENTS.md`)
|
||||||
|
- [ ] Při změně funkcí povýšena verze v `amcr_viewer/metadata.txt` a doplněn `changelog`
|
||||||
|
- [ ] Otestováno v QGIS (min. podporovaná verze 3.44)
|
||||||
|
- [ ] PR míří do správné cílové větve
|
||||||
|
- [ ] Větev odpovídá konvenci (`feat/ fix/ docs/ chore/<téma>`, AI `agents/<jméno>/<téma>`)
|
||||||
|
|
||||||
|
## Související issue
|
||||||
|
|
||||||
|
<!-- Např. "Closes #123". Smaž, pokud se neváže k issue. -->
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
Pokyny pro AI agenty i lidské přispěvatele pracující v tomto repozitáři.
|
||||||
|
Tento soubor je jediný zdroj pravdy; `CLAUDE.md` na něj pouze odkazuje.
|
||||||
|
|
||||||
|
## O projektu
|
||||||
|
|
||||||
|
**AMČR Viewer** je plugin do QGIS pro stahování a vizualizaci dat z Digitálního
|
||||||
|
archivu Archeologické mapy ČR (AMČR / AIS CR) – akce (*Fieldwork events*),
|
||||||
|
lokality (*Sites*) a jejich komponenty. Podporuje anonymní i přihlášený přístup
|
||||||
|
přes AMČR účet.
|
||||||
|
|
||||||
|
Zdroj dat: https://digiarchiv.aiscr.cz/ · Nápověda: https://amcr-help.aiscr.cz/digiarchiv/qgis-viewer.html
|
||||||
|
|
||||||
|
## Zařazení v ekosystému AIS CR
|
||||||
|
|
||||||
|
Tento repozitář je jedním ze **sourozeneckých repozitářů** ekosystému AIS CR.
|
||||||
|
Centrální governance a AI konfigurace spravuje hub **`aiscr-management`**; konvence
|
||||||
|
v tomto souboru jsou s tímto vzorem sladěné a zjednodušené pro potřeby jednoho
|
||||||
|
QGIS pluginu. Těžkou mašinerii hubu (složka `.agents/`, OpenSpec, sync skripty,
|
||||||
|
multi-assistant generování) tento repozitář **záměrně nepřebírá**. Při širších
|
||||||
|
otázkách governance má přednost vzor z `aiscr-management`.
|
||||||
|
|
||||||
|
## Struktura repozitáře
|
||||||
|
|
||||||
|
```
|
||||||
|
amcr_viewer/ # vlastní kód pluginu (toto se balí do releasu)
|
||||||
|
amcr_viewer.py # vstupní bod pluginu, integrace do QGIS
|
||||||
|
amcr_dialog.py # dialogy a UI (filtry, přihlášení)
|
||||||
|
amcr_tools.py # stahování dat z API, sestavení vrstev a atributů
|
||||||
|
amcr_codelists.py # hesláře / číselníky (codelists)
|
||||||
|
codelists/heslar.csv # lokální kopie číselníků
|
||||||
|
metadata.txt # metadata pluginu + verze + changelog
|
||||||
|
i18n/ # překlady (.ts)
|
||||||
|
*.png # ikony
|
||||||
|
.github/workflows/ # CI – release pluginu
|
||||||
|
README.md # uživatelská dokumentace (anglicky)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Konvence
|
||||||
|
|
||||||
|
### Jazyk
|
||||||
|
- **Kód a identifikátory:** anglicky. Atributová pole vrstev musí být ASCII
|
||||||
|
kompatibilní (bez diakritiky) – viz historie změn v `metadata.txt`.
|
||||||
|
- **README a uživatelská dokumentace:** anglicky.
|
||||||
|
- **Commity, PR a komentáře v issue:** česky.
|
||||||
|
|
||||||
|
### Commity
|
||||||
|
- Styl odpovídá historii: česky, věcně, popisně; jeden commit = jedna logická
|
||||||
|
změna.
|
||||||
|
- První řádek stručně a výstižně (ideálně v imperativu); podrobnosti do těla.
|
||||||
|
- Pokud je commit připraven s pomocí AI, uveď to v těle commitu nebo v popisu PR.
|
||||||
|
|
||||||
|
### Větve
|
||||||
|
Konvence názvů je sladěná s hubem `aiscr-management`:
|
||||||
|
|
||||||
|
- **lidé:** `feat/<téma>` (nová funkce), `fix/<téma>` (oprava), `docs/<téma>`
|
||||||
|
(dokumentace), `chore/<téma>` (údržba).
|
||||||
|
- **AI agenti:** `agents/<jméno-agenta>/<téma>` (např. `agents/claude/oprava-pian`).
|
||||||
|
|
||||||
|
Další pravidla:
|
||||||
|
|
||||||
|
- Cílová větev pro nový vývoj je aktuální `version/v2.x.y` (ne přímo do
|
||||||
|
výchozí větve bez PR).
|
||||||
|
- **Nikdy** nepushuj přímo do chráněných větví; vždy přes Pull Request.
|
||||||
|
- Standardizační / nefunkční změny drž v samostatné větvi, ať se nemíchají do
|
||||||
|
feature PR.
|
||||||
|
|
||||||
|
### Pravidla pro AI agenty (git)
|
||||||
|
- AI ve výchozím stavu zůstává u **lokální práce na aktuální větvi**.
|
||||||
|
- Bez **výslovného pokynu** uživatele AI nestageuje (`git add`), necommituje,
|
||||||
|
nepushuje ani samo nepřepíná/nezakládá větev pro vzdálené doručení.
|
||||||
|
- Při výslovném požadavku na push/PR použij větev `agents/<jméno-agenta>/<téma>`;
|
||||||
|
pokud aktuální větev tomuto vzoru neodpovídá, vyžádej si nejdřív potvrzení.
|
||||||
|
- Vytvoření větve, stage, commit, push ani draft PR AI běžně nenabízí; zmiňuj je
|
||||||
|
jen tehdy, když jsou pro splnění úkolu opravdu nutné.
|
||||||
|
|
||||||
|
### QGIS specifika
|
||||||
|
- Minimální podporovaná verze QGIS je **3.44** (`qgisMinimumVersion` v
|
||||||
|
`metadata.txt`); kód nesmí spoléhat na novější API.
|
||||||
|
- Vrstvy a atributy se sestavují přes `QgsField` / QGIS API v `amcr_tools.py`.
|
||||||
|
Při přidání atributu je potřeba doplnit ho konzistentně na všech místech:
|
||||||
|
definice pole (`QgsField`), naplnění hodnoty z dokumentu, překlad hlavičky
|
||||||
|
sloupce a export atributů.
|
||||||
|
|
||||||
|
## Verzování a release
|
||||||
|
|
||||||
|
- Verze pluginu žije v **`amcr_viewer/metadata.txt`** (`version=`).
|
||||||
|
- **Při každé změně chování / nové funkci** povyš verzi a doplň položku do
|
||||||
|
`changelog=` v `metadata.txt` (formát `vX.Y.Z (RRRR-MM-DD)` + odrážky).
|
||||||
|
- Datum v changelogu ber z **deterministického zdroje**, ne z paměti, např.
|
||||||
|
`python -c "import datetime; print(datetime.date.today().isoformat())"`.
|
||||||
|
- Release se vytváří publikací GitHub Release; workflow
|
||||||
|
`.github/workflows/release_plugin.yml` zabalí složku `amcr_viewer/` do
|
||||||
|
`amcr_viewer.zip` a přiloží ji k releasu. Do ZIPu se nesmí dostat `.git*`
|
||||||
|
soubory.
|
||||||
|
|
||||||
|
## Pull requesty
|
||||||
|
|
||||||
|
- Používej PR šablonu (`.github/pull_request_template.md`): Souhrn / Změny /
|
||||||
|
Testování / Kontrolní seznam.
|
||||||
|
- PR musí mířit do správné `version/v2.x.y` větve.
|
||||||
|
- Před požádáním o review projdi kontrolní seznam v šabloně (zejména bump verze
|
||||||
|
v `metadata.txt`, pokud měníš chování).
|
||||||
|
- V popisu PR uveď **podíl AI** (např. „text navržen AI, ručně zkontrolováno")
|
||||||
|
a odkaz na související issue, pokud existuje.
|
||||||
|
|
||||||
|
## Bezpečnost a soukromí
|
||||||
|
|
||||||
|
- Do promptů, příkladů ani commitů **nevkládej** ostrá produkční data, plné
|
||||||
|
log dumpy ani reálné osobní údaje (PII).
|
||||||
|
- **Rediguj** secrets, tokeny, API klíče a hesla z čehokoli, co posíláš AI;
|
||||||
|
nikdy je necommituj do repozitáře (ani přihlašovací údaje k AMČR účtu).
|
||||||
|
- Pro interní infrastrukturu (URL, hostname, prostředí) používej placeholdery,
|
||||||
|
pokud konkrétní hodnota není nutná a povolená.
|
||||||
|
|
||||||
|
## Lokální ověření
|
||||||
|
|
||||||
|
Plugin se testuje načtením do QGIS (Plugins → Manage and Install Plugins →
|
||||||
|
Install from ZIP, nebo nasazením složky `amcr_viewer/` do adresáře pluginů
|
||||||
|
QGIS). Automatizované testy zatím repozitář neobsahuje – změny ověřuj ručně
|
||||||
|
v QGIS na podporované verzi.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
Pokyny pro tento repozitář jsou v [`AGENTS.md`](./AGENTS.md).
|
||||||
|
|
||||||
|
Tento soubor je záměrně jen odkaz, aby existoval jeden zdroj pravdy a obsah se
|
||||||
|
nerozjel. Cokoli platí pro AI agenty v tomto projektu, najdeš v `AGENTS.md`.
|
||||||
@@ -44,16 +44,19 @@ class UpdateCodelistsTask(QgsTask):
|
|||||||
refresh_globals()
|
refresh_globals()
|
||||||
QgsMessageLog.logMessage(
|
QgsMessageLog.logMessage(
|
||||||
"Hesláře AMČR byly úspěšně aktualizovány.",
|
"Hesláře AMČR byly úspěšně aktualizovány.",
|
||||||
"AMČR", Qgis.Info)
|
"AMČR", Qgis.Info
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
if self.isCanceled():
|
if self.isCanceled():
|
||||||
QgsMessageLog.logMessage(
|
QgsMessageLog.logMessage(
|
||||||
"Aktualizace heslářů byla zrušena.",
|
"Aktualizace heslářů byla zrušena.",
|
||||||
"AMČR", Qgis.Warning)
|
"AMČR", Qgis.Warning
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
QgsMessageLog.logMessage(
|
QgsMessageLog.logMessage(
|
||||||
f"Chyba aktualizace: {self.exception}",
|
f"Chyba aktualizace: {self.exception}",
|
||||||
"AMČR", Qgis.Critical)
|
"AMČR", Qgis.Critical
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class FilterableSelectionDialog(QDialog):
|
class FilterableSelectionDialog(QDialog):
|
||||||
@@ -151,10 +154,20 @@ class AmcrFilterDialog(QDialog):
|
|||||||
|
|
||||||
# Cache dictionary to store selected codes for each category
|
# Cache dictionary to store selected codes for each category
|
||||||
self.selection_cache = {
|
self.selection_cache = {
|
||||||
'organizace': [], 'kraj': [], 'obdobi': [], 'areal': [],
|
'organizace': [],
|
||||||
'typ_akce': [], 'okres': [], 'katastr': [], 'vedouci': [],
|
'kraj': [],
|
||||||
'pian_presnost': [], 'pristupnost': [], 'typ_lokality': [],
|
'obdobi': [],
|
||||||
'druh_lokality': [], 'jistota': [], 'lokalita_zachovalost': []
|
'areal': [],
|
||||||
|
'typ_akce': [],
|
||||||
|
'okres': [],
|
||||||
|
'katastr': [],
|
||||||
|
'vedouci': [],
|
||||||
|
'pian_presnost': [],
|
||||||
|
'pristupnost': [],
|
||||||
|
'typ_lokality': [],
|
||||||
|
'druh_lokality': [],
|
||||||
|
'jistota': [],
|
||||||
|
'lokalita_zachovalost': [],
|
||||||
}
|
}
|
||||||
|
|
||||||
layout = QVBoxLayout()
|
layout = QVBoxLayout()
|
||||||
@@ -169,6 +182,8 @@ class AmcrFilterDialog(QDialog):
|
|||||||
if self.typ_dat == "akce":
|
if self.typ_dat == "akce":
|
||||||
self.chk_posevidence = QCheckBox("Pouze pozitivní zjištění")
|
self.chk_posevidence = QCheckBox("Pouze pozitivní zjištění")
|
||||||
layout.addWidget(self.chk_posevidence)
|
layout.addWidget(self.chk_posevidence)
|
||||||
|
self.chk_proj_akce = QCheckBox("Pouze projektové akce")
|
||||||
|
layout.addWidget(self.chk_proj_akce)
|
||||||
|
|
||||||
layout.addSpacing(10)
|
layout.addSpacing(10)
|
||||||
|
|
||||||
@@ -361,7 +376,7 @@ class AmcrFilterDialog(QDialog):
|
|||||||
self.selection_cache[cache_key] = [
|
self.selection_cache[cache_key] = [
|
||||||
'HES-000861',
|
'HES-000861',
|
||||||
'HES-000862',
|
'HES-000862',
|
||||||
'HES-000863'
|
'HES-000863',
|
||||||
]
|
]
|
||||||
|
|
||||||
btn.clicked.connect(open_dialog)
|
btn.clicked.connect(open_dialog)
|
||||||
@@ -453,6 +468,8 @@ class AmcrFilterDialog(QDialog):
|
|||||||
if self.typ_dat == "akce":
|
if self.typ_dat == "akce":
|
||||||
if self.chk_posevidence.isChecked():
|
if self.chk_posevidence.isChecked():
|
||||||
filters['posevidence'] = 'true'
|
filters['posevidence'] = 'true'
|
||||||
|
if self.chk_proj_akce.isChecked():
|
||||||
|
filters['proj_akce'] = 'true'
|
||||||
if self.selection_cache['organizace']:
|
if self.selection_cache['organizace']:
|
||||||
filters['f_organizace'] = self.selection_cache['organizace']
|
filters['f_organizace'] = self.selection_cache['organizace']
|
||||||
if self.selection_cache['typ_akce']:
|
if self.selection_cache['typ_akce']:
|
||||||
|
|||||||
+34
-15
@@ -283,7 +283,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
base_params = {
|
base_params = {
|
||||||
"mapa": "true",
|
"mapa": "true",
|
||||||
"sort": "ident_cely asc",
|
"sort": "ident_cely asc",
|
||||||
"entity": typ_dat
|
"entity": typ_dat,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Restrict search to map window if requested
|
# Restrict search to map window if requested
|
||||||
@@ -317,6 +317,12 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
else False
|
else False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
only_projektove_akce = (
|
||||||
|
filters.get('proj_akce') == 'true'
|
||||||
|
if filters
|
||||||
|
else False
|
||||||
|
)
|
||||||
|
|
||||||
# Check whether we should filter results based on component filters
|
# Check whether we should filter results based on component filters
|
||||||
filter_areal = "f_areal" in filters if filters else False
|
filter_areal = "f_areal" in filters if filters else False
|
||||||
filter_datace = "f_obdobi" in filters if filters else False
|
filter_datace = "f_obdobi" in filters if filters else False
|
||||||
@@ -439,6 +445,9 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
if not piani:
|
if not piani:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if only_projektove_akce and not doc.get("akce_projekt", False):
|
||||||
|
continue
|
||||||
|
|
||||||
actions_with_geom += 1
|
actions_with_geom += 1
|
||||||
|
|
||||||
# Extract protected fields ('or {}' – key may hold None)
|
# Extract protected fields ('or {}' – key may hold None)
|
||||||
@@ -470,7 +479,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
"katastr": g_list(doc, 'katastr'),
|
"katastr": g_list(doc, 'katastr'),
|
||||||
"dalsi_katastr": dalsi_kat_str,
|
"dalsi_katastr": dalsi_kat_str,
|
||||||
"pristupnost": g(doc, 'pristupnost'),
|
"pristupnost": g(doc, 'pristupnost'),
|
||||||
"loc": g_list(doc, 'loc')
|
"loc": g_list(doc, 'loc'),
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add entity-specific metadata
|
# Add entity-specific metadata
|
||||||
@@ -515,6 +524,11 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
if doc.get('akce_je_nz') is True
|
if doc.get('akce_je_nz') is True
|
||||||
else "Ne"
|
else "Ne"
|
||||||
),
|
),
|
||||||
|
"projekt": g(
|
||||||
|
doc,
|
||||||
|
'akce_projekt',
|
||||||
|
""
|
||||||
|
),
|
||||||
})
|
})
|
||||||
|
|
||||||
elif typ_dat == "lokalita":
|
elif typ_dat == "lokalita":
|
||||||
@@ -654,8 +668,10 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
)
|
)
|
||||||
|
|
||||||
fl_pian = [
|
fl_pian = [
|
||||||
"ident_cely", "pian_typ",
|
"ident_cely",
|
||||||
"pian_chranene_udaje", "pian_presnost"
|
"pian_typ",
|
||||||
|
"pian_chranene_udaje",
|
||||||
|
"pian_presnost",
|
||||||
]
|
]
|
||||||
|
|
||||||
for i in range(0, total_pians, BATCH_PIAN):
|
for i in range(0, total_pians, BATCH_PIAN):
|
||||||
@@ -668,7 +684,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
"entity": "pian",
|
"entity": "pian",
|
||||||
"q": fq_pian,
|
"q": fq_pian,
|
||||||
"rows": len(batch),
|
"rows": len(batch),
|
||||||
"fl": ",".join(fl_pian)
|
"fl": ",".join(fl_pian),
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
QApplication.processEvents()
|
QApplication.processEvents()
|
||||||
@@ -725,7 +741,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
QgsField("odkaz_do_digiarchivu", QMetaType.Type.QString),
|
QgsField("odkaz_do_digiarchivu", QMetaType.Type.QString),
|
||||||
QgsField("okres", QMetaType.Type.QString),
|
QgsField("okres", QMetaType.Type.QString),
|
||||||
QgsField("katastr", QMetaType.Type.QString),
|
QgsField("katastr", QMetaType.Type.QString),
|
||||||
QgsField("dalsi_katastry", QMetaType.Type.QString)
|
QgsField("dalsi_katastry", QMetaType.Type.QString),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Extend table based on data type
|
# Extend table based on data type
|
||||||
@@ -741,6 +757,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
QgsField("vedlejsi_typ", QMetaType.Type.QString),
|
QgsField("vedlejsi_typ", QMetaType.Type.QString),
|
||||||
QgsField("zjisteni", QMetaType.Type.QString),
|
QgsField("zjisteni", QMetaType.Type.QString),
|
||||||
QgsField("nahrazuje_NZ", QMetaType.Type.QString),
|
QgsField("nahrazuje_NZ", QMetaType.Type.QString),
|
||||||
|
QgsField("projekt", QMetaType.Type.QString),
|
||||||
]
|
]
|
||||||
elif typ_dat == "lokalita":
|
elif typ_dat == "lokalita":
|
||||||
cols += [
|
cols += [
|
||||||
@@ -748,7 +765,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
QgsField("popis_lokality", QMetaType.Type.QString),
|
QgsField("popis_lokality", QMetaType.Type.QString),
|
||||||
QgsField("typ_lokality", QMetaType.Type.QString),
|
QgsField("typ_lokality", QMetaType.Type.QString),
|
||||||
QgsField("druh_lokality", QMetaType.Type.QString),
|
QgsField("druh_lokality", QMetaType.Type.QString),
|
||||||
QgsField("zachovalost", QMetaType.Type.QString)
|
QgsField("zachovalost", QMetaType.Type.QString),
|
||||||
]
|
]
|
||||||
|
|
||||||
cols.append(QgsField("Přístupnost", QMetaType.Type.QString))
|
cols.append(QgsField("Přístupnost", QMetaType.Type.QString))
|
||||||
@@ -784,6 +801,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
"komponenta": "Komponenta",
|
"komponenta": "Komponenta",
|
||||||
"komponenta_areal": "Areál",
|
"komponenta_areal": "Areál",
|
||||||
"komponenta_obdobi": "Období",
|
"komponenta_obdobi": "Období",
|
||||||
|
"projekt": "Projekt",
|
||||||
}
|
}
|
||||||
|
|
||||||
if komponenty == "true":
|
if komponenty == "true":
|
||||||
@@ -904,7 +922,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
+ meta['ident_cely'],
|
+ meta['ident_cely'],
|
||||||
meta['az_okres'],
|
meta['az_okres'],
|
||||||
meta['katastr'],
|
meta['katastr'],
|
||||||
meta['dalsi_katastr']
|
meta['dalsi_katastr'],
|
||||||
]
|
]
|
||||||
if is_akce:
|
if is_akce:
|
||||||
atributy.extend([
|
atributy.extend([
|
||||||
@@ -917,7 +935,8 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
meta['akce_hlavni_typ'],
|
meta['akce_hlavni_typ'],
|
||||||
meta['akce_vedlejsi_typ'],
|
meta['akce_vedlejsi_typ'],
|
||||||
meta['dj_negativni'],
|
meta['dj_negativni'],
|
||||||
meta['akce_je_nz']
|
meta['akce_je_nz'],
|
||||||
|
meta['projekt'],
|
||||||
])
|
])
|
||||||
else:
|
else:
|
||||||
atributy.extend([
|
atributy.extend([
|
||||||
@@ -925,7 +944,7 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
meta['lokalita_popis'],
|
meta['lokalita_popis'],
|
||||||
meta['lokalita_typ'],
|
meta['lokalita_typ'],
|
||||||
meta['lokalita_druh'],
|
meta['lokalita_druh'],
|
||||||
meta['lokalita_zachovalost']
|
meta['lokalita_zachovalost'],
|
||||||
])
|
])
|
||||||
|
|
||||||
atributy.append(meta['pristupnost'])
|
atributy.append(meta['pristupnost'])
|
||||||
@@ -955,12 +974,12 @@ def load_amcr_data(canvas, bb, filters=None,
|
|||||||
(feats_pt, vl_point, "Body"),
|
(feats_pt, vl_point, "Body"),
|
||||||
]
|
]
|
||||||
|
|
||||||
for f, l, n in layers_to_process:
|
for f, L, n in layers_to_process:
|
||||||
if f:
|
if f:
|
||||||
l.dataProvider().addFeatures(f)
|
L.dataProvider().addFeatures(f)
|
||||||
l.updateExtents()
|
L.updateExtents()
|
||||||
l.setName(f"AMCR_{archeologicky_zaznam}_{n}")
|
L.setName(f"AMCR_{archeologicky_zaznam}_{n}")
|
||||||
proj.addMapLayer(l)
|
proj.addMapLayer(L)
|
||||||
added += len(f)
|
added += len(f)
|
||||||
|
|
||||||
if network_error:
|
if network_error:
|
||||||
|
|||||||
Reference in New Issue
Block a user