From c689c8ed45566f9532a5f0141126b51c516cc797 Mon Sep 17 00:00:00 2001 From: Tariq Soliman Date: Thu, 21 Dec 2023 16:21:13 -0800 Subject: [PATCH] #483 MeasureTool Fix nodata issue (#484) --- private/api/2ptsToProfile.py | 20 ++++++++++++-------- scripts/server.js | 2 +- src/essence/Basics/Formulae_/Formulae_.js | 5 +++++ src/essence/Tools/Measure/MeasureTool.js | 8 ++++++-- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/private/api/2ptsToProfile.py b/private/api/2ptsToProfile.py index ffe3e46e..0a2ee3db 100644 --- a/private/api/2ptsToProfile.py +++ b/private/api/2ptsToProfile.py @@ -25,6 +25,8 @@ # Takes in a [[x,y],[x,y],[x,y],[x,y]...[x,y],[x,y]] # and returns an array of values on the raster at those points in order +# Just temporary, script outputs them as None +NODATA_VALUE = -1100101 def getRasterDataValues(pointArray): valuesArray = [] @@ -33,8 +35,8 @@ def getRasterDataValues(pointArray): value = band.ReadAsArray( pointArray[i][0], pointArray[i][1], 1, 1)[0][0] except: - # -1100101 = (e)rror - value = -1100101 + # (e)rror + value = NODATA_VALUE noData = band.GetNoDataValue() if noData is not None: @@ -43,7 +45,7 @@ def getRasterDataValues(pointArray): if abs(noData) > 1000000000: decPlaces = 10 if abs(value) >= abs(noData / decPlaces) and abs(value) <= abs(noData * decPlaces): - value = -1100101 + value = NODATA_VALUE valuesArray.append(value) return valuesArray @@ -60,9 +62,9 @@ def getRasterDataCoords(pointArray): valueY = bandY.ReadAsArray( pointArray[i][0], pointArray[i][1], 1, 1)[0][0] except: - # -1100101 = (e)rror - valueX = -1100101 - valueY = -1100101 + # (e)rror + valueX = NODATA_VALUE + valueY = NODATA_VALUE noDataX = bandX.GetNoDataValue() if noDataX is not None: @@ -71,7 +73,7 @@ def getRasterDataCoords(pointArray): if abs(noDataX) > 1000000000: decPlaces = 10 if abs(valueX) >= abs(noDataX / decPlaces) and abs(valueX) <= abs(noDataX * decPlaces): - valueX = -1100101 + valueX = NODATA_VALUE noDataY = bandY.GetNoDataValue() if noDataY is not None: @@ -80,7 +82,7 @@ def getRasterDataCoords(pointArray): if abs(noDataY) > 1000000000: decPlaces = 10 if abs(valueY) >= abs(noDataY / decPlaces) and abs(valueY) <= abs(noDataY * decPlaces): - valueY = -1100101 + valueY = NODATA_VALUE coordsArray.append([valueX, valueY]) @@ -208,6 +210,8 @@ def latLonsToPixel(latLonPairs): # Come latlon with elevs and print for i in range(0, len(latLonElevArray)): latLonElevArray[i] = [latLonElevArray[i][1], latLonElevArray[i][0]] + if elevArray[i] == NODATA_VALUE: + elevArray[i] = None latLonElevArray[i].append(elevArray[i]) print(latLonElevArray) \ No newline at end of file diff --git a/scripts/server.js b/scripts/server.js index bd5efcef..5bbe40c2 100644 --- a/scripts/server.js +++ b/scripts/server.js @@ -660,7 +660,7 @@ setups.getBackendSetups(function (setups) { logger("warn", error); res.status(400).send(); } else { - res.send(stdout); + res.send(stdout.replace(/None/g, null)); } } ); diff --git a/src/essence/Basics/Formulae_/Formulae_.js b/src/essence/Basics/Formulae_/Formulae_.js index 9171472f..82e683e1 100644 --- a/src/essence/Basics/Formulae_/Formulae_.js +++ b/src/essence/Basics/Formulae_/Formulae_.js @@ -809,8 +809,13 @@ var Formulae_ = { return r.test(url) }, csvToJSON: function (csv) { + if (csv == null) return {} + var lines = csv.split('\n') var result = [] + + if (lines == null || lines[0] == null) return {} + var headers = lines[0].split(',') for (var i = 1; i < lines.length; i++) { var obj = {} diff --git a/src/essence/Tools/Measure/MeasureTool.js b/src/essence/Tools/Measure/MeasureTool.js index 7c52c8d7..415fdb26 100644 --- a/src/essence/Tools/Measure/MeasureTool.js +++ b/src/essence/Tools/Measure/MeasureTool.js @@ -315,7 +315,7 @@ const Measure = () => { : `rgba(255, 0, 47, ${alpha})` }, }, - spanGaps: true, + spanGaps: false, borderWidth: 1, fill: 'start', pointRadius: 0, @@ -469,7 +469,11 @@ const Measure = () => { .css({ opacity: 1 }) $('#measureInfoElev > div:last-child') - .text(`${d[4].toFixed(3)}m`) + .text( + d[4] != null + ? `${d[4].toFixed(3)}m` + : 'No Data' + ) .css({ opacity: 1 }) const text2d =