diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py
index 14151edb6910e859fd6f7294376f70af70805f55..29eddfd91751082b6198b9ea2346524f9829a6d8 100644
--- a/ckanext/odsh/validation.py
+++ b/ckanext/odsh/validation.py
@@ -224,18 +224,22 @@ def known_spatial_uri(key, data, errors, context):
     not_found = True
     spatial_text = str()
     spatial = str()
-    with open(mapping_path, newline='') as mapping_file:
-      cr = csv.reader(mapping_file, delimiter="\t")
-      for row in cr:
-        if row[0] == value:
-            not_found = False
-            spatial_text = row[1]
-            loaded = json.loads(row[2])
-            spatial = json.dumps(loaded['geometry'])
-            break
-      if not_found:
-        raise toolkit.Invalid(
-            'spatial_uri: uri unknown')
+
+    try:
+        with open(mapping_path, newline='') as mapping_file:
+            cr = csv.reader(mapping_file, delimiter="\t")
+            for row in cr:
+                if row and len(row) > 2 and row[0] == value:
+                    not_found = False
+                    spatial_text = row[1]
+                    loaded = json.loads(row[2])
+                    spatial = json.dumps(loaded.get('geometry', {}))
+                    break
+            if not_found:
+                raise toolkit.Invalid('spatial_uri: uri unknown')
+    except (IOError, json.decoder.JSONDecodeError, KeyError) as e:
+        log.error(f"Error processing spatial mapping: {e}")
+        raise toolkit.Invalid("Error processing spatial mapping")
 
     new_index = next_extra_index(data)