Skip to content

Commit

Permalink
Merge pull request #161 from specklesystems/2.16
Browse files Browse the repository at this point in the history
typo; notify of layer transforms; notify of failed layer send
  • Loading branch information
KatKatKateryna committed Jul 7, 2023
2 parents f856e17 + 82a21e7 commit e497b22
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 12 deletions.
2 changes: 1 addition & 1 deletion speckle/converter/geometry/mesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ def fill_mesh_parts(w: shapefile.Writer, mesh: Mesh, geom_id: str, dataStorage):

def deconstructSpeckleMesh(mesh: Mesh, dataStorage):

print("deconstructSpeckleMesh")
#print("deconstructSpeckleMesh")
try:
scale = get_scale_factor(mesh.units, dataStorage)
parts_list = []
Expand Down
4 changes: 2 additions & 2 deletions speckle/converter/geometry/polygon.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def polygonToSpeckleMesh(geom: QgsGeometry, feature: QgsFeature, layer: QgsVecto
[polyBorder[2].x, polyBorder[2].y, polyBorder[2].z] ]
for pt in pts:
z_val = pt.z
print(str(z_val))
#print(str(z_val))
# project the pts on the plane
point = [pt.x, pt.y, 0]
z_val = projectToPolygon( point , plane_pts)
Expand Down Expand Up @@ -155,7 +155,7 @@ def polygonToSpeckle(geom: QgsGeometry, feature: QgsFeature, layer: QgsVectorLay
for v in voidsNative:
pts_fixed = []
v_speckle = unknownLineToSpeckle(v, True, feature, layer, dataStorage)
pts = speckleBoundaryToSpecklePts(v_speckle)
pts = speckleBoundaryToSpecklePts(v_speckle, dataStorage)

plane_pts = [ [polyBorder[0].x, polyBorder[0].y, polyBorder[0].z],
[polyBorder[1].x, polyBorder[1].y, polyBorder[1].z],
Expand Down
2 changes: 1 addition & 1 deletion speckle/converter/geometry/polyline.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
def polylineFromVerticesToSpeckle(vertices: Union[List[Point], QgsVertexIterator], closed: bool, feature: QgsFeature, layer: QgsVectorLayer, dataStorage):
"""Returns a Speckle Polyline given a list of QgsPoint instances and a boolean indicating if it's closed or not."""
try:
print(dataStorage)
#print(dataStorage)
if isinstance(vertices, list):
if len(vertices) > 0 and isinstance(vertices[0], Point):
specklePts = vertices
Expand Down
8 changes: 4 additions & 4 deletions speckle/converter/geometry/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,10 @@ def triangulatePolygon(geom):
else:
dict_shape= {'vertices': vertices, 'segments': segments }
try:
print(type(vertices[0][0]))
print(vertices)
print(segments)
print(holes)
#print(type(vertices[0][0]))
#print(vertices)
#print(segments)
#print(holes)
t = tr.triangulate(dict_shape, 'p')
#t = {'vertices': vertices, 'triangles': [[0,1,2]]}
#print(t)
Expand Down
20 changes: 18 additions & 2 deletions speckle/converter/layers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,14 @@ def convertSelectedLayers(layers: List[Union[QgsVectorLayer, QgsRasterLayer]], s
for i, layer in enumerate(layers):

logToUser(f"Converting layer '{layer.name()}'...", level = 0, plugin = plugin.dockwidget)
try:
for item in plugin.dataStorage.savedTransforms:
layer_name = item.split(" -> ")[0].split(" (\'")[0]
transform_name = item.split(" -> ")[1]
if layer_name == layer.name():
logToUser(f"Applying transformation to layer '{layer_name}': '{transform_name}'", level = 0, plugin = plugin.dockwidget)
except Exception as e: print(e)

if plugin.dataStorage.savedTransforms is not None:
for item in plugin.dataStorage.savedTransforms:
layer_name = item.split(" -> ")[0].split(" (\'")[0]
Expand All @@ -166,7 +174,12 @@ def convertSelectedLayers(layers: List[Union[QgsVectorLayer, QgsRasterLayer]], s
logToUser("Raster layer transformation cannot be applied when the project CRS is set to Geographic type", level = 2, plugin = plugin.dockwidget)
return None

result.append(layerToSpeckle(layer, projectCRS, plugin))
converted = layerToSpeckle(layer, projectCRS, plugin)
print(converted)
if converted is not None:
result.append(converted)
else:
logToUser(f"Layer '{layer.name()}' conversion failed", level = 2, plugin = plugin.dockwidget)

return result
except Exception as e:
Expand Down Expand Up @@ -268,6 +281,9 @@ def layerToSpeckle(selectedLayer: Union[QgsVectorLayer, QgsRasterLayer], project
if isinstance(selectedLayer, QgsRasterLayer):
# write feature attributes
b = rasterFeatureToSpeckle(selectedLayer, projectCRS, project, plugin)
#print(b)
if b is None:
return None
layerObjs.append(b)
# Convert layer to speckle
layerBase = RasterLayer(units = units_proj, name=layerName, crs=speckleReprojectedCrs, rasterCrs=layerCRS, elements=layerObjs)
Expand All @@ -277,7 +293,7 @@ def layerToSpeckle(selectedLayer: Union[QgsVectorLayer, QgsRasterLayer], project
return layerBase
except Exception as e:
logToUser(e, level = 2, func = inspect.stack()[0][3], plugin = plugin.dockwidget)
return
return None


def layerToNative(layer: Union[Layer, VectorLayer, RasterLayer], streamBranch: str, plugin) -> Union[QgsVectorLayer, QgsRasterLayer, None]:
Expand Down
7 changes: 6 additions & 1 deletion speckle/converter/layers/feature.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,9 @@ def rasterFeatureToSpeckle(selectedLayer: QgsRasterLayer, projectCRS:QgsCoordina
# logToUser("Large layer: ", level = 1, func = inspect.stack()[0][3])

ds = gdal.Open(selectedLayer.source(), gdal.GA_ReadOnly)
if ds is None:
return None

originX = ds.GetGeoTransform()[0]
originY = ds.GetGeoTransform()[3]
rasterOriginPoint = QgsPointXY(originX, originY)
Expand Down Expand Up @@ -644,10 +647,12 @@ def rasterFeatureToSpeckle(selectedLayer: QgsRasterLayer, projectCRS:QgsCoordina
else:
logToUser("Something went wrong. Mesh cannot be created, only raster data will be sent. ", level = 2, plugin = plugin.dockwidget)

return b

except Exception as e:
logToUser(e, level = 2, func = inspect.stack()[0][3])
return None

return b


def featureToNative(feature: Base, fields: QgsFields, dataStorage):
Expand Down
5 changes: 4 additions & 1 deletion speckle_qgis.py
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,8 @@ def onSend(self, message: str):

base_obj = Collection(units = units, collectionType = "QGIS commit", name = "QGIS commit")
base_obj.elements = convertSelectedLayers(layers, [],[], projectCRS, self)
if base_obj.elements is None:
if base_obj.elements is None or (isinstance(base_obj.elements, List) and len(base_obj.elements) == 0):
logToUser(f"No data to send", level = 2, plugin = self.dockwidget)
return

logToUser(f"Sending data to the server...", level = 0, plugin = self.dockwidget)
Expand Down Expand Up @@ -548,6 +549,8 @@ def onReceive(self):
transport = validateTransport(client, streamId)
if transport == None:
return

logToUser("Receiving data...", level = 0, plugin=self.dockwidget)
commitObj = operations.receive(objId, transport, None)

projectCRS = self.qgis_project.crs()
Expand Down

0 comments on commit e497b22

Please sign in to comment.