]> marstr Code Repo - marstr/orthographic.git/commitdiff
Fixed critical issue at which all natural:water was removed, which does not need...
authorMarcus Str. <marcus@marstr.online>
Sun, 2 Feb 2025 12:32:35 +0000 (13:32 +0100)
committerMarcus Str. <marcus@marstr.online>
Sun, 2 Feb 2025 13:16:38 +0000 (14:16 +0100)
photogen.py

index 7535edb6fa72970e61dfc15bc88785cf64b48ee1..3792f4ae60462209e1863dbcb90e50045ad48624 100644 (file)
@@ -531,59 +531,61 @@ class mstr_photogen:
         # At ZL16 there seems to be an issue with water bodies, especially rivers (natural:water).\r
         # Let's see if we can correct that\r
 \r
-        # natural:water\r
-        ntrl_water = False\r
-        ntrl_idx = 0\r
-        for lyr in self._lyrnames:\r
-            if lyr[0] == "natural" and lyr[1] == "water":\r
-                ntrl_water = True\r
-                break\r
-            ntrl_idx = ntrl_idx + 1\r
-\r
-        if ntrl_water == True:\r
-            \r
-            # We'll go through all layers and "shavve off" excess.\r
-            # This way we can hopefully correct incorrect line and polygon renders.\r
-            for l in range(0, len(layers)):\r
-                if l < ntrl_idx: # <- We don't want to load the target layer itself\r
-                    lyrpix = layers[l].load()\r
-                    wtr_pix = layers[ntrl_idx].load()\r
-                    for y in range(0, self._tile.height):\r
-                        for x in range(0, self._tile.width):\r
-                            lp = lyrpix[x,y]\r
-                            wp = wtr_pix[x,y]\r
-                            if lp[3] > 0:\r
-                                a = 255 - lp[3]\r
-                                if a < wp[3]:\r
-                                    c = (wp[0], wp[1], wp[2], a)\r
-                                    wtr_pix[x,y] = c\r
-\r
-        # water:river\r
-        river_water = False\r
-        river_idx = 0\r
-        for lyr in self._lyrnames:\r
-            if lyr[0] == "water" and lyr[1] == "river":\r
-                river_water = True\r
-                break\r
-            river_idx = river_idx + 1\r
-\r
-        if river_water == True:\r
-            \r
-            # We'll go through all layers and "shavve off" excess.\r
-            # This way we can hopefully correct incorrect line and polygon renders.\r
-            for l in range(0, len(layers)):\r
-                if l < river_idx and l != ntrl_idx: # <- We don't want to load the target layer itself\r
-                    lyrpix = layers[l].load()\r
-                    wtr_pix = layers[river_idx].load()\r
-                    for y in range(0, self._tile.height):\r
-                        for x in range(0, self._tile.width):\r
-                            lp = lyrpix[x,y]\r
-                            wp = wtr_pix[x,y]\r
-                            if lp[3] > 0:\r
-                                a = 255 - lp[3]\r
-                                if a < wp[3]:\r
-                                    c = (wp[0], wp[1], wp[2], a)\r
-                                    wtr_pix[x,y] = c\r
+        # These files will need to be generated after manual check of the orthos\r
+        if os.path.isfile(mstr_datafolder + "z_orthographic/data" + self._latlngfld + "/water/" + str(self._ty) + "_" + str(self._tx)) == True:\r
+            # natural:water\r
+            ntrl_water = False\r
+            ntrl_idx = 0\r
+            for lyr in self._lyrnames:\r
+                if lyr[0] == "natural" and lyr[1] == "water":\r
+                    ntrl_water = True\r
+                    break\r
+                ntrl_idx = ntrl_idx + 1\r
+\r
+            if ntrl_water == True:\r
+                \r
+                # We'll go through all layers and "shavve off" excess.\r
+                # This way we can hopefully correct incorrect line and polygon renders.\r
+                for l in range(0, len(layers)):\r
+                    if l < ntrl_idx: # <- We don't want to load the target layer itself\r
+                        lyrpix = layers[l].load()\r
+                        wtr_pix = layers[ntrl_idx].load()\r
+                        for y in range(0, self._tile.height):\r
+                            for x in range(0, self._tile.width):\r
+                                lp = lyrpix[x,y]\r
+                                wp = wtr_pix[x,y]\r
+                                if lp[3] > 0:\r
+                                    a = 255 - lp[3]\r
+                                    if a < wp[3]:\r
+                                        c = (wp[0], wp[1], wp[2], a)\r
+                                        wtr_pix[x,y] = c\r
+\r
+            # water:river\r
+            river_water = False\r
+            river_idx = 0\r
+            for lyr in self._lyrnames:\r
+                if lyr[0] == "water" and lyr[1] == "river":\r
+                    river_water = True\r
+                    break\r
+                river_idx = river_idx + 1\r
+\r
+            if river_water == True:\r
+                \r
+                # We'll go through all layers and "shavve off" excess.\r
+                # This way we can hopefully correct incorrect line and polygon renders.\r
+                for l in range(0, len(layers)):\r
+                    if l < river_idx and l != ntrl_idx: # <- We don't want to load the target layer itself\r
+                        lyrpix = layers[l].load()\r
+                        wtr_pix = layers[river_idx].load()\r
+                        for y in range(0, self._tile.height):\r
+                            for x in range(0, self._tile.width):\r
+                                lp = lyrpix[x,y]\r
+                                wp = wtr_pix[x,y]\r
+                                if lp[3] > 0:\r
+                                    a = 255 - lp[3]\r
+                                    if a < wp[3]:\r
+                                        c = (wp[0], wp[1], wp[2], a)\r
+                                        wtr_pix[x,y] = c\r
 \r
         return layers\r
 \r