diff options
-rw-r--r-- | config.yml | 14 | ||||
-rw-r--r-- | webmap-download-mrr.py | 6 | ||||
-rwxr-xr-x | webmap-import | 10 |
3 files changed, 17 insertions, 13 deletions
@@ -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(): |