forked from AG_QGIS/Plugin_SN_Basis
Anpassung an den Wrappern für sn_plan41
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user