diff --git a/opengeodeweb_viewer_schemas.json b/opengeodeweb_viewer_schemas.json index 16909573..7e3f446e 100644 --- a/opengeodeweb_viewer_schemas.json +++ b/opengeodeweb_viewer_schemas.json @@ -2443,7 +2443,8 @@ "type": "string", "enum": [ "points", - "curve" + "curve", + "surface" ] }, "closed": { diff --git a/requirements.txt b/requirements.txt index 50aaa5fd..9108a15f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -63,4 +63,3 @@ wslink==1.12.4 yarl>=1 # via aiohttp -opengeodeweb-microservice==1.*,>=1.1.3 diff --git a/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.json b/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.json index a0d32923..a1f9b19f 100644 --- a/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.json +++ b/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.json @@ -29,7 +29,8 @@ "type": "string", "enum": [ "points", - "curve" + "curve", + "surface" ] }, "closed": { diff --git a/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.py b/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.py index 4bb7ab73..db24d98d 100644 --- a/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.py +++ b/src/opengeodeweb_viewer/rpc/viewer/schemas/preview_points.py @@ -17,6 +17,7 @@ def __post_init__(self) -> None: class Style(Enum): CURVE = "curve" POINTS = "points" + SURFACE = "surface" @dataclass diff --git a/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py b/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py index 07ae72d7..408fca26 100644 --- a/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py +++ b/src/opengeodeweb_viewer/rpc/viewer/viewer_protocols.py @@ -423,7 +423,7 @@ def previewPoints(self, rpc_params: RpcParams) -> None: for i, pt in enumerate(points_data): self._preview_points.InsertNextPoint(pt.x, pt.y, pt.z) self._preview_verts.InsertNextCell(1, [i]) - if style_name == "curve" and i == 0: + if style_name in ["curve", "surface"] and i == 0: colors.InsertNextTuple3(60, 153, 131) else: colors.InsertNextTuple3(102, 102, 102) @@ -432,11 +432,20 @@ def previewPoints(self, rpc_params: RpcParams) -> None: self._preview_polydata.GetPointData().SetActiveScalars("Colors") lines = vtkCellArray() + polys = vtkCellArray() if style_name == "curve": for i in range(len(points_data) - 1): lines.InsertNextCell(2, [i, i + 1]) if params.closed and len(points_data) >= 2: lines.InsertNextCell(2, [len(points_data) - 1, 0]) + elif style_name == "surface": + for i in range(len(points_data) - 1): + lines.InsertNextCell(2, [i, i + 1]) + if len(points_data) >= 3: + lines.InsertNextCell(2, [len(points_data) - 1, 0]) + polys.InsertNextCell(len(points_data), list(range(len(points_data)))) + self._preview_polydata.SetLines(lines) + self._preview_polydata.SetPolys(polys) self._preview_polydata.Modified() self.render(-1)