Anpassung an den Wrappern für sn_plan41

This commit is contained in:
2026-01-08 17:13:51 +01:00
parent f88b5da51f
commit b805f78f02
26 changed files with 401 additions and 125 deletions

View File

@@ -1,35 +1,44 @@
# layer/metadata.py
# sn_basis/functions/ly_metadata_wrapper.py
def get_layer_type(layer) -> str:
from typing import Optional, List
LAYER_TYPE_VECTOR = "vector"
LAYER_TYPE_TABLE = "table"
def get_layer_type(layer) -> Optional[str]:
"""
Gibt den Layer-Typ zurück.
Rückgabewerte:
- "vector"
- "table"
- None (unbekannt / nicht bestimmbar)
"""
if layer is None:
return "unknown"
layer_type = getattr(layer, "layer_type", None)
if layer_type is not None:
return str(layer_type)
return None
try:
if callable(getattr(layer, "isSpatial", None)):
return "vector" if layer.isSpatial() else "table"
is_spatial = getattr(layer, "isSpatial", None)
if callable(is_spatial):
return LAYER_TYPE_VECTOR if is_spatial() else LAYER_TYPE_TABLE
except Exception:
pass
return "unknown"
return None
def get_layer_crs(layer) -> str:
def get_layer_crs(layer) -> Optional[str]:
"""
Gibt das CRS als AuthID zurück (z.B. 'EPSG:25833').
"""
if layer is None:
return "None"
crs = getattr(layer, "crs", None)
if crs is not None and not callable(crs):
if isinstance(crs, str):
return crs
return "None"
return None
try:
crs_obj = layer.crs()
authid = getattr(crs_obj, "authid", None)
crs = layer.crs()
authid = getattr(crs, "authid", None)
if callable(authid):
value = authid()
if isinstance(value, str):
@@ -37,49 +46,47 @@ def get_layer_crs(layer) -> str:
except Exception:
pass
return "None"
return None
def get_layer_fields(layer) -> list[str]:
def get_layer_fields(layer) -> List[str]:
"""
Gibt die Feldnamen eines Layers zurück.
"""
if layer is None:
return []
fields = getattr(layer, "fields", None)
if fields is not None and not callable(fields):
return list(fields)
try:
f = layer.fields()
if callable(getattr(f, "names", None)):
return list(f.names())
return list(f)
return list(layer.fields().names())
except Exception:
return []
def get_layer_source(layer) -> str:
if layer is None:
return "None"
source = getattr(layer, "source", None)
if source is not None and not callable(source):
return str(source)
def get_layer_source(layer) -> Optional[str]:
"""
Gibt die Datenquelle eines Layers zurück.
"""
if layer is None:
return None
try:
return layer.source() or "None"
value = layer.source()
if isinstance(value, str) and value:
return value
except Exception:
return "None"
pass
return None
def is_layer_editable(layer) -> bool:
"""
Prüft, ob ein Layer editierbar ist.
"""
if layer is None:
return False
editable = getattr(layer, "editable", None)
if editable is not None:
return bool(editable)
try:
is_editable = getattr(layer, "isEditable", None)
if callable(is_editable):