From cda569635bb913c6b0c0075074a055e1bc7fece3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?= Date: Thu, 29 Jul 2021 23:27:19 +0200 Subject: [PATCH 1/3] Fix saving gis visualization with different label / column MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maximilian Krög --- .../classes/Controllers/Table/GisVisualizationController.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/classes/Controllers/Table/GisVisualizationController.php b/libraries/classes/Controllers/Table/GisVisualizationController.php index 73f8c5c00c..28982d71b7 100644 --- a/libraries/classes/Controllers/Table/GisVisualizationController.php +++ b/libraries/classes/Controllers/Table/GisVisualizationController.php @@ -88,8 +88,11 @@ final class GisVisualizationController extends AbstractController // Get settings if any posted $visualizationSettings = []; + // Download as PNG/SVG/PDF use _GET and the normal form uses _POST if (Core::isValid($_POST['visualizationSettings'], 'array')) { $visualizationSettings = $_POST['visualizationSettings']; + } elseif (Core::isValid($_GET['visualizationSettings'], 'array')) { + $visualizationSettings = $_GET['visualizationSettings']; } // Check mysql version @@ -174,6 +177,8 @@ final class GisVisualizationController extends AbstractController 'saveToFile' => true, 'session_max_rows' => $rows, 'pos' => $pos, + 'visualizationSettings[spatialColumn]' => $visualizationSettings['spatialColumn'], + 'visualizationSettings[labelColumn]' => $visualizationSettings['labelColumn'], ] )); $html = $this->template->render('table/gis_visualization/gis_visualization', [ From 6a13b5df858a0def5fb29ed6243a6f08af2cdae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?= Date: Thu, 29 Jul 2021 23:21:36 +0200 Subject: [PATCH 2/3] Fix gis visualization png export with labels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maximilian Krög --- libraries/classes/Gis/GisLineString.php | 25 +++++++++----------- libraries/classes/Gis/GisMultiLineString.php | 25 +++++++++----------- libraries/classes/Gis/GisMultiPoint.php | 16 ++++++++++--- libraries/classes/Gis/GisMultiPolygon.php | 5 ++-- libraries/classes/Gis/GisPoint.php | 9 +++---- libraries/classes/Gis/GisPolygon.php | 5 ++-- 6 files changed, 46 insertions(+), 39 deletions(-) diff --git a/libraries/classes/Gis/GisLineString.php b/libraries/classes/Gis/GisLineString.php index d39f8de64a..a6a531971e 100644 --- a/libraries/classes/Gis/GisLineString.php +++ b/libraries/classes/Gis/GisLineString.php @@ -16,6 +16,7 @@ use function imagestring; use function json_encode; use function mb_strlen; use function mb_substr; +use function round; use function trim; /** @@ -110,28 +111,26 @@ class GisLineString extends GisGeometry $points_arr = $this->extractPoints($linesrting, $scale_data); foreach ($points_arr as $point) { - if (! isset($temp_point)) { - $temp_point = $point; - } else { + if (isset($temp_point)) { // draw line section imageline( $image, - (int) $temp_point[0], - (int) $temp_point[1], - (int) $point[0], - (int) $point[1], + (int) round($temp_point[0]), + (int) round($temp_point[1]), + (int) round($point[0]), + (int) round($point[1]), $color ); - $temp_point = $point; } + $temp_point = $point; } // print label if applicable if (isset($label) && trim($label) != '') { imagestring( $image, 1, - $points_arr[1][0], - $points_arr[1][1], + (int) round($points_arr[1][0]), + (int) round($points_arr[1][1]), trim($label), $black ); @@ -178,9 +177,7 @@ class GisLineString extends GisGeometry $points_arr = $this->extractPoints($linesrting, $scale_data); foreach ($points_arr as $point) { - if (! isset($temp_point)) { - $temp_point = $point; - } else { + if (isset($temp_point)) { // draw line section $pdf->Line( $temp_point[0], @@ -189,8 +186,8 @@ class GisLineString extends GisGeometry $point[1], $line ); - $temp_point = $point; } + $temp_point = $point; } // print label if (isset($label) && trim($label) != '') { diff --git a/libraries/classes/Gis/GisMultiLineString.php b/libraries/classes/Gis/GisMultiLineString.php index 35b3730258..eec0edd397 100644 --- a/libraries/classes/Gis/GisMultiLineString.php +++ b/libraries/classes/Gis/GisMultiLineString.php @@ -17,6 +17,7 @@ use function imagestring; use function json_encode; use function mb_strlen; use function mb_substr; +use function round; use function trim; /** @@ -123,20 +124,18 @@ class GisMultiLineString extends GisGeometry foreach ($linestirngs as $linestring) { $points_arr = $this->extractPoints($linestring, $scale_data); foreach ($points_arr as $point) { - if (! isset($temp_point)) { - $temp_point = $point; - } else { + if (isset($temp_point)) { // draw line section imageline( $image, - (int) $temp_point[0], - (int) $temp_point[1], - (int) $point[0], - (int) $point[1], + (int) round($temp_point[0]), + (int) round($temp_point[1]), + (int) round($point[0]), + (int) round($point[1]), $color ); - $temp_point = $point; } + $temp_point = $point; } unset($temp_point); // print label if applicable @@ -144,8 +143,8 @@ class GisMultiLineString extends GisGeometry imagestring( $image, 1, - $points_arr[1][0], - $points_arr[1][1], + (int) round($points_arr[1][0]), + (int) round($points_arr[1][1]), trim($label), $black ); @@ -198,9 +197,7 @@ class GisMultiLineString extends GisGeometry foreach ($linestirngs as $linestring) { $points_arr = $this->extractPoints($linestring, $scale_data); foreach ($points_arr as $point) { - if (! isset($temp_point)) { - $temp_point = $point; - } else { + if (isset($temp_point)) { // draw line section $pdf->Line( $temp_point[0], @@ -209,8 +206,8 @@ class GisMultiLineString extends GisGeometry $point[1], $line ); - $temp_point = $point; } + $temp_point = $point; } unset($temp_point); // print label diff --git a/libraries/classes/Gis/GisMultiPoint.php b/libraries/classes/Gis/GisMultiPoint.php index cb6ea2921d..67a1f5ecb5 100644 --- a/libraries/classes/Gis/GisMultiPoint.php +++ b/libraries/classes/Gis/GisMultiPoint.php @@ -16,6 +16,7 @@ use function imagestring; use function json_encode; use function mb_strlen; use function mb_substr; +use function round; use function trim; /** @@ -115,7 +116,16 @@ class GisMultiPoint extends GisGeometry continue; } - imagearc($image, (int) $point[0], (int) $point[1], 7, 7, 0, 360, $color); + imagearc( + $image, + (int) round($point[0]), + (int) round($point[1]), + 7, + 7, + 0, + 360, + $color + ); } // print label for each point if ((isset($label) && trim($label) != '') @@ -124,8 +134,8 @@ class GisMultiPoint extends GisGeometry imagestring( $image, 1, - $points_arr[0][0], - $points_arr[0][1], + (int) round($points_arr[0][0]), + (int) round($points_arr[0][1]), trim($label), $black ); diff --git a/libraries/classes/Gis/GisMultiPolygon.php b/libraries/classes/Gis/GisMultiPolygon.php index 65c38dbd91..953f598ff6 100644 --- a/libraries/classes/Gis/GisMultiPolygon.php +++ b/libraries/classes/Gis/GisMultiPolygon.php @@ -21,6 +21,7 @@ use function json_encode; use function mb_strlen; use function mb_strpos; use function mb_substr; +use function round; use function trim; /** @@ -168,8 +169,8 @@ class GisMultiPolygon extends GisGeometry imagestring( $image, 1, - $points_arr[2], - $points_arr[3], + (int) round($label_point[0]), + (int) round($label_point[1]), trim((string) $label), $black ); diff --git a/libraries/classes/Gis/GisPoint.php b/libraries/classes/Gis/GisPoint.php index 1921a54f86..4d4e5b68f3 100644 --- a/libraries/classes/Gis/GisPoint.php +++ b/libraries/classes/Gis/GisPoint.php @@ -15,6 +15,7 @@ use function imagestring; use function json_encode; use function mb_strlen; use function mb_substr; +use function round; use function trim; /** @@ -112,8 +113,8 @@ class GisPoint extends GisGeometry if ($points_arr[0][0] != '' && $points_arr[0][1] != '') { imagearc( $image, - (int) $points_arr[0][0], - (int) $points_arr[0][1], + (int) round($points_arr[0][0]), + (int) round($points_arr[0][1]), 7, 7, 0, @@ -125,8 +126,8 @@ class GisPoint extends GisGeometry imagestring( $image, 1, - $points_arr[0][0], - $points_arr[0][1], + (int) round($points_arr[0][0]), + (int) round($points_arr[0][1]), trim($label), $black ); diff --git a/libraries/classes/Gis/GisPolygon.php b/libraries/classes/Gis/GisPolygon.php index 90837523c3..4018f90cd5 100644 --- a/libraries/classes/Gis/GisPolygon.php +++ b/libraries/classes/Gis/GisPolygon.php @@ -24,6 +24,7 @@ use function mb_strpos; use function mb_substr; use function min; use function pow; +use function round; use function sqrt; use function trim; @@ -150,8 +151,8 @@ class GisPolygon extends GisGeometry imagestring( $image, 1, - $points_arr[2], - $points_arr[3], + (int) round($points_arr[2]), + (int) round($points_arr[3]), trim($label), $black ); From 3798b571e2826882e3aacd15b04810212d89e84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?= Date: Fri, 30 Jul 2021 21:29:55 +0200 Subject: [PATCH 3/3] Fix displaying '0' as OpenLayers label MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maximilian Krög --- libraries/classes/Gis/GisLineString.php | 4 ++-- libraries/classes/Gis/GisMultiLineString.php | 4 ++-- libraries/classes/Gis/GisMultiPoint.php | 4 ++-- libraries/classes/Gis/GisMultiPolygon.php | 4 ++-- libraries/classes/Gis/GisPoint.php | 4 ++-- libraries/classes/Gis/GisPolygon.php | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libraries/classes/Gis/GisLineString.php b/libraries/classes/Gis/GisLineString.php index a6a531971e..28c6926c37 100644 --- a/libraries/classes/Gis/GisLineString.php +++ b/libraries/classes/Gis/GisLineString.php @@ -267,8 +267,8 @@ class GisLineString extends GisGeometry $result = 'var style = new ol.style.Style({' . 'stroke: new ol.style.Stroke(' . json_encode($stroke_style) . ')'; - if ($label) { - $text_style = ['text' => $label]; + if (trim($label) !== '') { + $text_style = ['text' => trim($label)]; $result .= ', text: new ol.style.Text(' . json_encode($text_style) . ')'; } diff --git a/libraries/classes/Gis/GisMultiLineString.php b/libraries/classes/Gis/GisMultiLineString.php index eec0edd397..f4782dd866 100644 --- a/libraries/classes/Gis/GisMultiLineString.php +++ b/libraries/classes/Gis/GisMultiLineString.php @@ -296,8 +296,8 @@ class GisMultiLineString extends GisGeometry $row = 'var style = new ol.style.Style({' . 'stroke: new ol.style.Stroke(' . json_encode($stroke_style) . ')'; - if ($label) { - $text_style = ['text' => $label]; + if (trim($label) !== '') { + $text_style = ['text' => trim($label)]; $row .= ', text: new ol.style.Text(' . json_encode($text_style) . ')'; } diff --git a/libraries/classes/Gis/GisMultiPoint.php b/libraries/classes/Gis/GisMultiPoint.php index 67a1f5ecb5..ff9558d00a 100644 --- a/libraries/classes/Gis/GisMultiPoint.php +++ b/libraries/classes/Gis/GisMultiPoint.php @@ -292,9 +292,9 @@ class GisMultiPoint extends GisGeometry . 'fill: fill,' . 'stroke: stroke'; - if ($label) { + if (trim($label) !== '') { $text_style = [ - 'text' => $label, + 'text' => trim($label), 'offsetY' => -9, ]; $result .= ',text: new ol.style.Text(' . json_encode($text_style) . ')'; diff --git a/libraries/classes/Gis/GisMultiPolygon.php b/libraries/classes/Gis/GisMultiPolygon.php index 953f598ff6..64a3fffef6 100644 --- a/libraries/classes/Gis/GisMultiPolygon.php +++ b/libraries/classes/Gis/GisMultiPolygon.php @@ -348,8 +348,8 @@ class GisMultiPolygon extends GisGeometry . 'fill: new ol.style.Fill(' . json_encode($fill_style) . '),' . 'stroke: new ol.style.Stroke(' . json_encode($stroke_style) . ')'; - if ($label) { - $text_style = ['text' => $label]; + if (trim($label) !== '') { + $text_style = ['text' => trim($label)]; $row .= ',text: new ol.style.Text(' . json_encode($text_style) . ')'; } diff --git a/libraries/classes/Gis/GisPoint.php b/libraries/classes/Gis/GisPoint.php index 4d4e5b68f3..a2ffd0b91b 100644 --- a/libraries/classes/Gis/GisPoint.php +++ b/libraries/classes/Gis/GisPoint.php @@ -283,9 +283,9 @@ class GisPoint extends GisGeometry . 'fill: fill,' . 'stroke: stroke'; - if ($label) { + if (trim($label) !== '') { $text_style = [ - 'text' => $label, + 'text' => trim($label), 'offsetY' => -9, ]; $result .= ',text: new ol.style.Text(' . json_encode($text_style) . ')'; diff --git a/libraries/classes/Gis/GisPolygon.php b/libraries/classes/Gis/GisPolygon.php index 4018f90cd5..8ceadfaf33 100644 --- a/libraries/classes/Gis/GisPolygon.php +++ b/libraries/classes/Gis/GisPolygon.php @@ -310,8 +310,8 @@ class GisPolygon extends GisGeometry $row = 'var style = new ol.style.Style({' . 'fill: new ol.style.Fill(' . json_encode($fill_style) . '),' . 'stroke: new ol.style.Stroke(' . json_encode($stroke_style) . ')'; - if ($label) { - $text_style = ['text' => $label]; + if (trim($label) !== '') { + $text_style = ['text' => trim($label)]; $row .= ',text: new ol.style.Text(' . json_encode($text_style) . ')'; } $row .= '});';