changeset 4667:0ddb308fed37

Reintroduced the ST_MakeValid calls when inserting the iso geometries into the database.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 14 Oct 2019 17:23:29 +0200
parents 7d2463c7b4ad
children 63c529172334
files pkg/controllers/diff.go pkg/imports/sr.go pkg/octree/areas.go pkg/wkb/data.go
diffstat 4 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/diff.go	Mon Oct 14 16:10:31 2019 +0200
+++ b/pkg/controllers/diff.go	Mon Oct 14 17:23:29 2019 +0200
@@ -76,7 +76,8 @@
     ST_Multi(
       ST_CollectionExtract(
         ST_SimplifyPreserveTopology(
-          ST_GeomFromWKB($4, $3::integer),
+          ST_Multi(ST_Collectionextract(
+            ST_MakeValid(ST_GeomFromWKB($4, $3::integer)), 3)),
           $5
         ),
         3
--- a/pkg/imports/sr.go	Mon Oct 14 16:10:31 2019 +0200
+++ b/pkg/imports/sr.go	Mon Oct 14 17:23:29 2019 +0200
@@ -176,7 +176,8 @@
     ST_Multi(
       ST_CollectionExtract(
         ST_SimplifyPreserveTopology(
-          ST_GeomFromWKB($4, $3::integer),
+          ST_Multi(ST_Collectionextract(
+            ST_MakeValid(ST_GeomFromWKB($4, $3::integer)), 3)),
           $5
         ),
         3
--- a/pkg/octree/areas.go	Mon Oct 14 16:10:31 2019 +0200
+++ b/pkg/octree/areas.go	Mon Oct 14 17:23:29 2019 +0200
@@ -212,6 +212,12 @@
 						Y: reprojY(pt.Y),
 					}
 				}
+				/*
+					if !shell.CCW() {
+						log.Println("not ccw")
+						shell.Reverse()
+					}
+				*/
 				a[i] = wkb.PolygonGeom{shell}
 			}
 
--- a/pkg/wkb/data.go	Mon Oct 14 16:10:31 2019 +0200
+++ b/pkg/wkb/data.go	Mon Oct 14 17:23:29 2019 +0200
@@ -160,3 +160,9 @@
 	}
 	return sum > 0
 }
+
+func (lr LinearRingGeom) Reverse() {
+	for i, j := 0, len(lr)-1; i < j; i, j = i+1, j-1 {
+		lr[i], lr[j] = lr[j], lr[i]
+	}
+}