Skip to content

Commit

Permalink
Merge pull request #137 from specklesystems/2.14-rc6
Browse files Browse the repository at this point in the history
2.14 rc7
  • Loading branch information
KatKatKateryna committed May 24, 2023
2 parents 29c1491 + 79cec71 commit 480edaf
Show file tree
Hide file tree
Showing 9 changed files with 249 additions and 127 deletions.
2 changes: 1 addition & 1 deletion __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def classFactory(iface): # pylint: disable=invalid-name
try:
import specklepy
import shapefile
import triangle
#import triangle

except Exception as e:
logger.logToUserWithAction("Speckle dependencies were not installed.", action_text = "More info", url = "https://github.com/specklesystems/speckle-qgis/blob/main/plugin_utils/reporting_issues.md", level = 2)
Expand Down
26 changes: 26 additions & 0 deletions plugin_utils/installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,12 +199,38 @@ def install_requirements(host_application: str) -> None:
print(completed_process.stderr)
raise Exception(m)

def install_optional_requirements(host_application: str) -> None:
# set up addons/modules under the user
# script path. Here we'll install the
# dependencies
requirements = "triangle==20220202"
path = str(connector_installation_path(host_application))
if _dependencies_installed(requirements, path):
return

print(f"Installing Triangle dependency to {path}")
from subprocess import run

completed_process = run(
[
PYTHON_PATH,
"-m",
"pip",
"install",
"-t",
str(path),
requirements,
],
capture_output=True,
text=True,
)

def install_dependencies(host_application: str) -> None:
if not is_pip_available():
ensure_pip()

install_requirements(host_application)
install_optional_requirements(host_application)


def _import_dependencies() -> None:
Expand Down
6 changes: 4 additions & 2 deletions plugin_utils/reporting_issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ else: pythonExec = os.path.dirname(sys.executable) + "/bin/python3"

import os; import sys; import subprocess; result = subprocess.run([pythonExec, "-m", "pip", "install", "specklepy==2.14.0"], capture_output=True, text=True, shell=True, timeout=1000); print(result)

import os; import sys; import subprocess; result = subprocess.run([pythonExec, "-m", "pip", "install", "triangle"], capture_output=True, text=True, shell=True, timeout=1000); print(result)

import os; import sys; import subprocess; result = subprocess.run([pythonExec, "-m", "pip", "install", "pyshp==2.3.1"], capture_output=True, text=True, shell=True, timeout=1000); print(result)

import os; import sys; import subprocess; result = subprocess.run([pythonExec, "-m", "pip", "install", "scipy==1.10.1"], capture_output=True, text=True, shell=True, timeout=1000); print(result)

import os; import sys; import subprocess; result = subprocess.run([pythonExec, "-m", "pip", "install", "triangle==20220202"], capture_output=True, text=True, shell=True, timeout=1000); print(result)

```
- You can choose [Github](https://github.com/specklesystems/speckle-qgis/issues) or [Community Forum](https://speckle.community/) to report the issue. Share a FULL screenshot of the Python console output. Or copy and paste all text from Python console after running the command. You can delete/cover your folder path from the report if needed.
2 changes: 1 addition & 1 deletion plugin_utils/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
specklepy==2.14.0
pyshp==2.3.1
triangle==20220202
scipy==1.10.1
7 changes: 3 additions & 4 deletions speckle/converter/geometry/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
from qgis.core import (Qgis, QgsProject, QgsLayerTreeLayer, QgsFeature,
QgsRasterLayer, QgsVectorLayer, QgsPoint )

import triangle as tr


def cross_product(pt1, pt2):
return [ (pt1[1] * pt2[2]) - (pt1[2] * pt2[1]),
Expand Down Expand Up @@ -64,6 +62,7 @@ def projectToPolygon(point: List, polygonPts: List):

def triangulatePolygon(geom):
try:
import triangle as tr
vertices = []
segments = []
holes = []
Expand All @@ -80,15 +79,15 @@ def triangulatePolygon(geom):
print(holes)
t = tr.triangulate(dict_shape, 'p')
#t = {'vertices': vertices, 'triangles': [[0,1,2]]}
print(t)
#print(t)
except Exception as e:
logToUser(e, level = 2, func = inspect.stack()[0][3])
return None, None
return t, vertices3d

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

return None, None

def getPolyPtsSegments(geom):
vertices = []
Expand Down
299 changes: 195 additions & 104 deletions speckle/converter/layers/feature.py

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions speckle/converter/layers/symbology.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def featureColorfromNativeRenderer(feature: QgsFeature, layer: QgsVectorLayer) -
renderer.categories()
except:
logToUser(f"Attribute '{category}' used for the layer '{layer.name()}' symbology is not found", level = 2, func = inspect.stack()[0][3])
return (245<<16) + (245<<8) + 245
return (255<<24) + (245<<16) + (245<<8) + 245

for obj in renderer.categories():
try:
Expand All @@ -63,12 +63,12 @@ def featureColorfromNativeRenderer(feature: QgsFeature, layer: QgsVectorLayer) -
# construct RGB color
try: r, g, b = color.getRgb()[:3]
except: r, g, b = [int(i) for i in color.replace(" ","").split(",")[:3] ]
col = (r<<16) + (g<<8) + b
col = (255<<24) + (r<<16) + (g<<8) + b
return col
else: return (245<<16) + (245<<8) + 245
else: return (255<<24) + (245<<16) + (245<<8) + 245
except Exception as e:
logToUser(e, level = 2, func = inspect.stack()[0][3])
return (245<<16) + (245<<8) + 245
return (255<<24) + (245<<16) + (245<<8) + 245

def gradientColorRampToSpeckle(rRamp: QgsGradientColorRamp) -> dict[str, Any]:
sourceRamp = None
Expand All @@ -79,7 +79,7 @@ def gradientColorRampToSpeckle(rRamp: QgsGradientColorRamp) -> dict[str, Any]:
for s in stops:
try: r, g, b = s.color.getRgb()[:3]
except: r, g, b = [int(i) for i in s.color.replace(" ","").split(',')[:3] ]
sColor = (r<<16) + (g<<8) + b
sColor = (255<<24) + (r<<16) + (g<<8) + b
stopsStr.append({'color':sColor, 'offset':s.offset})
rampType = rRamp.type() #'gradient'
sourceRamp = props
Expand Down Expand Up @@ -249,7 +249,7 @@ def makeDefaultRenderer(renderer: dict[str, Any], layer: Union[Layer, VectorLaye
try:
geomType = layer.geomType
try: rgb = renderer['properties']['sourceSymbColor']
except: rgb = (0<<16) + (0<<8) + 0
except: rgb = (255<<24) + (0<<16) + (0<<8) + 0
r = (rgb & 0xFF0000) >> 16
g = (rgb & 0xFF00) >> 8
b = rgb & 0xFF
Expand Down Expand Up @@ -340,20 +340,20 @@ def rendererToSpeckle(renderer: QgsFeatureRenderer or QgsRasterRenderer) -> dict
symbType = symbol.symbolTypeToString(symbol.type()) #Line
try: rgb = symbol.color().getRgb()
except: [int(i) for i in symbol().color().replace(" ","").split(',')[:3] ]
symbolColor = (rgb[0]<<16) + (rgb[1]<<8) + rgb[2]
symbolColor = (255<<24) + (rgb[0]<<16) + (rgb[1]<<8) + rgb[2]
layerRenderer['properties'].update({'symbol':{'symbColor': symbolColor}, 'symbType':symbType})

elif rType == 'categorizedSymbol':
layerRenderer['properties'] = {'attribute': "", 'symbType': ""} #{'symbol':{}, 'ramp':{}, 'ranges':{}, 'gradMethod':"", 'symbType':"", 'legendClassificationAttribute': ""}
attribute = renderer.classAttribute() # 'id'
layerRenderer['properties']['attribute'] = attribute
symbol = renderer.sourceSymbol()
sourceSymbColor = (0<<16) + (0<<8) + 0
sourceSymbColor = (255<<24) + (0<<16) + (0<<8) + 0
try:
symbType = symbol.symbolTypeToString(symbol.type()) #Line
try: r, g, b = symbol.color().getRgb()[:3]
except: r,g,b = [int(i) for i in symbol.color().replace(" ","").split(',')[:3] ]
sourceSymbColor = (r<<16) + (g<<8) + b
sourceSymbColor = (255<<24) + (r<<16) + (g<<8) + b

layerRenderer['properties'].update( {'symbType': symbType, 'sourceSymbColor': sourceSymbColor} )
except: pass
Expand All @@ -364,7 +364,7 @@ def rendererToSpeckle(renderer: QgsFeatureRenderer or QgsRasterRenderer) -> dict
value = i.value()
try: r, g, b = i.symbol().color().getRgb()[:3]
except: r,g,b = [int(i) for i in i.symbol().color().replace(" ","").split(',')[:3] ]
symbColor = (r<<16) + (g<<8) + b
symbColor = (255<<24) + (r<<16) + (g<<8) + b
symbOpacity = i.symbol().opacity() # QgsSymbol.color()
label = i.label()
layerRenderer['properties']['categories'].append({'value':value,'symbColor':symbColor,'symbOpacity':symbOpacity, 'sourceSymbColor': sourceSymbColor,'label':label})
Expand All @@ -377,7 +377,7 @@ def rendererToSpeckle(renderer: QgsFeatureRenderer or QgsRasterRenderer) -> dict
symbType = symbol.symbolTypeToString(symbol.type()) #Line
try: r, g, b = symbol.color().getRgb()[:3]
except: r, g, b = [int(i) for i in symbol.color().replace(" ","").split(',')[:3] ]
sourceSymbColor = (r<<16) + (g<<8) + b
sourceSymbColor = (255<<24) + (r<<16) + (g<<8) + b
gradMethod = renderer.graduatedMethod() # 0
layerRenderer['properties'].update( {'attribute': attribute, 'symbType': symbType, 'gradMethod': gradMethod, 'sourceSymbColor': sourceSymbColor} )

Expand All @@ -392,7 +392,7 @@ def rendererToSpeckle(renderer: QgsFeatureRenderer or QgsRasterRenderer) -> dict
lower = i.lowerValue()
upper = i.upperValue()
rgb = i.symbol().color().getRgb() # QgsSymbol.color() -> QColor
symbColor = (rgb[0]<<16) + (rgb[1]<<8) + rgb[2]
symbColor = (255<<24) + (rgb[0]<<16) + (rgb[1]<<8) + rgb[2]
symbOpacity = i.symbol().opacity() # QgsSymbol.color()
label = i.label()
width = 0.26
Expand Down Expand Up @@ -444,7 +444,7 @@ def rendererToSpeckle(renderer: QgsFeatureRenderer or QgsRasterRenderer) -> dict
for i in rendererClasses:
value = i.value
rgb = i.color.getRgb()
color = (rgb[0]<<16) + (rgb[1]<<8) + rgb[2]
color = (255<<24) + (rgb[0]<<16) + (rgb[1]<<8) + rgb[2]
classes.append({'color':color,'value':value,'label':i.label})
layerRenderer.update({'properties': {'classes':classes,'ramp':sourceRamp,'band':band}})

Expand Down
6 changes: 5 additions & 1 deletion speckle/converter/layers/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,11 @@ def getHeightWithRemainderFromArray(height_array, texture_transform, ind1, ind2)
'''
else:
z = height_array[ind1][ind2]
return float(z)
try:
val = float(z)
except:
val = None
return val

def getXYofArrayPoint(settings, indexX, indexY, targetWKT, targetPROJ):
resX, resY, minX, minY, sizeX, sizeY, wkt, proj = settings
Expand Down
2 changes: 1 addition & 1 deletion ui/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def addLevelSymbol(msg: str, level: int):
return msg

def writeToLog(msg: str = "", level: int = 2):
print("write log")
#print(msg)
from speckle.logging import logger
logger.log(msg, level)

Expand Down

0 comments on commit 480edaf

Please sign in to comment.