Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

typo; notify of layer transforms; notify of failed layer send #161

Merged
merged 1 commit into from
Jul 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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