last fixes

This commit is contained in:
KatKatKateryna
2024-08-21 00:14:00 +01:00
parent c56ace42ed
commit e1390ef685
2 changed files with 46 additions and 39 deletions
+3 -39
View File
@@ -157,50 +157,14 @@ class SpeckleProvider(BaseProvider):
return fields
def _load(self, skip_geometry=None, properties=[], select_properties=[]):
"""Validate Speckle data"""
"""Load and validate Speckle data"""
from pygeoapi.provider.speckle_utils.crs_utils import create_crs_from_authid
from pygeoapi.provider.speckle_utils.url_utils import get_set_url_parameters
if self.data == "":
return
raise ValueError(
"Please provide Speckle project link as an argument, e.g.: http://localhost:5000/?limit=100000&speckleUrl=https://app.speckle.systems/projects/55a29f3e9d/models/2d497a381d"
)
if (
isinstance(self.data, str)
and "speckleurl=" in self.data.lower()
and "projects" in self.data
and "models" in self.data
):
crs_authid = ""
for item in self.data.lower().split("&"):
# if CRS authid is found, rest will be ignored
if "crsauthid=" in item:
crs_authid = item.split("crsauthid=")[1]
elif "lat=" in item:
try:
self.lat = float(item.split("lat=")[1])
except:
pass
# raise ValueError(f"Invalid Lat input, must be numeric: {item.split('lat=')[1]}")
elif "lon=" in item:
try:
self.lon = float(item.split("lon=")[1])
except:
pass
# raise ValueError(f"Invalid Lon input, must be numeric: {item.split('lon=')[1]}")
elif "northdegrees=" in item:
try:
self.north_degrees = float(item.split("northdegrees=")[1])
except:
pass
# raise ValueError(f"Invalid NorthDegrees input, must be numeric: {item.split('northdegrees=')[1]}")
# if CRS assigned, create one:
if len(crs_authid)>3:
create_crs_from_authid(self)
get_set_url_parameters(self)
# check if it's a new request (self.data was updated and doesn't match self.url)
new_request = False
@@ -0,0 +1,43 @@
from typing import Dict
def get_set_url_parameters(self: "SpeckleProvider"):
from pygeoapi.provider.speckle_utils.crs_utils import create_crs_from_authid
if (
isinstance(self.data, str)
and "speckleurl=" in self.data.lower()
and "projects" in self.data
and "models" in self.data
):
crs_authid = ""
for item in self.data.lower().split("&"):
# if CRS authid is found, rest will be ignored
if "crsauthid=" in item:
crs_authid = item.split("crsauthid=")[1]
elif "lat=" in item:
try:
self.lat = float(item.split("lat=")[1])
except:
pass
# raise ValueError(f"Invalid Lat input, must be numeric: {item.split('lat=')[1]}")
elif "lon=" in item:
try:
self.lon = float(item.split("lon=")[1])
except:
pass
# raise ValueError(f"Invalid Lon input, must be numeric: {item.split('lon=')[1]}")
elif "northdegrees=" in item:
try:
self.north_degrees = float(item.split("northdegrees=")[1])
except:
pass
# raise ValueError(f"Invalid NorthDegrees input, must be numeric: {item.split('northdegrees=')[1]}")
# if CRS parameter present, create and assign CRS:
if len(crs_authid)>3:
create_crs_from_authid(self)