aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.yml14
-rw-r--r--webmap-download-mrr.py6
-rwxr-xr-xwebmap-import10
3 files changed, 17 insertions, 13 deletions
diff --git a/config.yml b/config.yml
index c2186a2..b23496b 100644
--- a/config.yml
+++ b/config.yml
@@ -759,9 +759,9 @@ layers:
unar:
format: zip
patterns:
- - 'LST.vbk_vindkraftverk.*'
+ - 'lst.vbk_vindkraftverk.*'
import:
- path: LST.vbk_vindkraftverk.shp
+ path: lst.vbk_vindkraftverk.shp
format: ESRI Shapefile
layername: LST.vbk_vindkraftverk
field-map:
@@ -826,16 +826,6 @@ layers:
- replace: '([0-9]{4})([0-9]{2})([0-9]{2})'
with: '{0}-{1}-{2}'
type: regex
- EJAKTUELL:
- - replace: 'Yes'
- with: '1'
- - replace: 'No'
- with: '0'
- RADERAD:
- - replace: 'Yes'
- with: '1'
- - replace: 'No'
- with: '0'
'vbk:projekteringsomraden':
description: Vindbrukskollen landbaserade projekteringsområden (Länsstyrelsen)
diff --git a/webmap-download-mrr.py b/webmap-download-mrr.py
index 2477f8a..f839ac0 100644
--- a/webmap-download-mrr.py
+++ b/webmap-download-mrr.py
@@ -422,7 +422,11 @@ def triangulate(geom):
triangle = triangulation.GetGeometryRef(i)
if geom.Contains(triangle):
triangulation2.AddGeometry(triangle)
- return triangulation2
+ if triangulation2.IsEmpty():
+ # can happen in some degenerate cases
+ return triangulation
+ else:
+ return triangulation2
# Return the centroid (modulo rounding) if is within the input geometry,
# and None, None otherwise
diff --git a/webmap-import b/webmap-import
index 37826cf..bfee9dc 100755
--- a/webmap-import
+++ b/webmap-import
@@ -18,7 +18,9 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#----------------------------------------------------------------------
+from os import O_WRONLY, O_CREAT, O_TRUNC, O_CLOEXEC
import os
+from fcntl import flock, LOCK_EX
import logging
import argparse
import tempfile
@@ -1193,6 +1195,8 @@ if __name__ == '__main__':
help=f'cache directory (default: {os.curdir})')
parser.add_argument('--debug', action='count', default=0,
help=argparse.SUPPRESS)
+ parser.add_argument('--lockfile', default=None,
+ help=f'obtain an exclusive lock before starting unpacking and importing')
parser.add_argument('groupname', nargs='*', help='group layer name(s) to process')
args = parser.parse_args()
@@ -1244,6 +1248,12 @@ if __name__ == '__main__':
srs = getSRS(common.config.get('SRS', None))
extent = getExtent(common.config.get('extent', None), srs=srs)
+ if args.lockfile is not None:
+ # obtain an exclusive lock and don't release it until exiting the program
+ lock_fd = os.open(args.lockfile, O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, mode=0o644)
+ logging.debug('flock("%s", LOCK_EX)', args.lockfile)
+ flock(lock_fd, LOCK_EX)
+
cachedir = Path(args.cachedir) if args.cachedir is not None else None
rv = 0
for layername, layerdef in layers.items():