ssb-sgis 0.3.8__py3-none-any.whl → 0.3.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sgis/__init__.py +5 -2
- sgis/geopandas_tools/buffer_dissolve_explode.py +13 -9
- sgis/geopandas_tools/centerlines.py +110 -47
- sgis/geopandas_tools/cleaning.py +331 -0
- sgis/geopandas_tools/conversion.py +9 -3
- sgis/geopandas_tools/duplicates.py +67 -49
- sgis/geopandas_tools/general.py +15 -1
- sgis/geopandas_tools/neighbors.py +12 -0
- sgis/geopandas_tools/overlay.py +26 -17
- sgis/geopandas_tools/polygon_operations.py +281 -100
- sgis/geopandas_tools/polygons_as_rings.py +72 -10
- sgis/geopandas_tools/sfilter.py +8 -8
- sgis/helpers.py +20 -3
- sgis/io/dapla_functions.py +28 -6
- sgis/io/write_municipality_data.py +11 -5
- sgis/maps/examine.py +10 -7
- sgis/maps/explore.py +102 -25
- sgis/maps/map.py +32 -6
- sgis/maps/maps.py +40 -58
- sgis/maps/tilesources.py +61 -0
- sgis/networkanalysis/closing_network_holes.py +89 -62
- sgis/networkanalysis/cutting_lines.py +1 -1
- sgis/networkanalysis/nodes.py +1 -1
- sgis/networkanalysis/traveling_salesman.py +8 -4
- sgis/parallel/parallel.py +63 -10
- sgis/raster/raster.py +29 -27
- {ssb_sgis-0.3.8.dist-info → ssb_sgis-0.3.9.dist-info}/METADATA +4 -1
- ssb_sgis-0.3.9.dist-info/RECORD +59 -0
- {ssb_sgis-0.3.8.dist-info → ssb_sgis-0.3.9.dist-info}/WHEEL +1 -1
- sgis/geopandas_tools/snap_polygons.py +0 -0
- ssb_sgis-0.3.8.dist-info/RECORD +0 -58
- {ssb_sgis-0.3.8.dist-info → ssb_sgis-0.3.9.dist-info}/LICENSE +0 -0
sgis/parallel/parallel.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import functools
|
|
2
|
+
import inspect
|
|
2
3
|
import itertools
|
|
3
4
|
import multiprocessing
|
|
4
5
|
from collections.abc import Callable, Collection, Iterable
|
|
@@ -27,6 +28,13 @@ except ImportError:
|
|
|
27
28
|
pass
|
|
28
29
|
|
|
29
30
|
|
|
31
|
+
def turn_args_into_kwargs(func: Callable, args: tuple, index_start: int):
|
|
32
|
+
if not isinstance(args, tuple):
|
|
33
|
+
raise TypeError("args should be a tuple (it should not be unpacked with *)")
|
|
34
|
+
argnames = inspect.getfullargspec(func).args[index_start:]
|
|
35
|
+
return {name: value for value, name in zip(args, argnames, strict=False)}
|
|
36
|
+
|
|
37
|
+
|
|
30
38
|
class Parallel:
|
|
31
39
|
"""Run functions in parallell.
|
|
32
40
|
|
|
@@ -52,9 +60,13 @@ class Parallel:
|
|
|
52
60
|
offered through joblib's Parallel class.
|
|
53
61
|
context: Start method for the processes. Defaults to 'spawn'
|
|
54
62
|
to avoid frozen processes.
|
|
63
|
+
maxtasksperchild: Number of tasks a worker process can complete before
|
|
64
|
+
it will exit and be replaced with a fresh worker process, to enable
|
|
65
|
+
unused resources to be freed. Defaults to 10 to
|
|
55
66
|
**kwargs: Keyword arguments to be passed to either
|
|
56
67
|
multiprocessing.Pool or joblib.Parallel, depending
|
|
57
|
-
on the backend.
|
|
68
|
+
on the backend. Not to be confused with the kwargs passed to functions in
|
|
69
|
+
the map and starmap methods.
|
|
58
70
|
"""
|
|
59
71
|
|
|
60
72
|
def __init__(
|
|
@@ -62,9 +74,11 @@ class Parallel:
|
|
|
62
74
|
processes: int,
|
|
63
75
|
backend: str = "multiprocessing",
|
|
64
76
|
context: str = "spawn",
|
|
77
|
+
maxtasksperchild: int = 10,
|
|
65
78
|
**kwargs,
|
|
66
79
|
):
|
|
67
80
|
self.processes = int(processes)
|
|
81
|
+
self.maxtasksperchild = maxtasksperchild
|
|
68
82
|
self.backend = backend
|
|
69
83
|
self.context = context
|
|
70
84
|
self.kwargs = kwargs
|
|
@@ -75,14 +89,17 @@ class Parallel:
|
|
|
75
89
|
self,
|
|
76
90
|
func: Callable,
|
|
77
91
|
iterable: Collection,
|
|
92
|
+
args: tuple | None = None,
|
|
78
93
|
kwargs: dict | None = None,
|
|
79
94
|
) -> list[Any]:
|
|
80
|
-
"""Run functions in parallel with items of an iterable as
|
|
95
|
+
"""Run functions in parallel with items of an iterable as 0th arguemnt.
|
|
81
96
|
|
|
82
97
|
Args:
|
|
83
98
|
func: Function to be run.
|
|
84
99
|
iterable: An iterable where each item will be passed to func as
|
|
85
|
-
|
|
100
|
+
0th positional argument.
|
|
101
|
+
Args: Positional arguments passed to 'func' starting from the 1st argument.
|
|
102
|
+
The 0th argument will be reserved for the values of 'iterable'.
|
|
86
103
|
kwargs: Keyword arguments passed to 'func'. Must be passed as a dict,
|
|
87
104
|
not unpacked into separate keyword arguments.
|
|
88
105
|
|
|
@@ -102,14 +119,21 @@ class Parallel:
|
|
|
102
119
|
>>> results
|
|
103
120
|
[2, 4, 6]
|
|
104
121
|
|
|
105
|
-
With kwargs.
|
|
122
|
+
With args and kwargs.
|
|
106
123
|
|
|
107
124
|
>>> iterable = [1, 2, 3]
|
|
108
125
|
>>> def x2(x, plus, minus):
|
|
109
126
|
... return x * 2 + plus - minus
|
|
110
127
|
>>> p = sg.Parallel(4, backend="loky")
|
|
111
|
-
|
|
112
|
-
>>>
|
|
128
|
+
...
|
|
129
|
+
>>> # these three are the same
|
|
130
|
+
>>> results1 = p.map(x2, iterable, args=(2, 1))
|
|
131
|
+
>>> results2 = p.map(x2, iterable, kwargs=dict(plus=2, minus=1))
|
|
132
|
+
>>> results3 = p.map(x2, iterable, args=(2,), kwargs=dict(minus=1))
|
|
133
|
+
>>> assert results1 == results2 == results3
|
|
134
|
+
...
|
|
135
|
+
>>> results1
|
|
136
|
+
[3, 5, 7]
|
|
113
137
|
|
|
114
138
|
If in Jupyter the function should be defined in another module.
|
|
115
139
|
And if using the multiprocessing backend, the code should be
|
|
@@ -123,9 +147,15 @@ class Parallel:
|
|
|
123
147
|
[2, 4, 6]
|
|
124
148
|
"""
|
|
125
149
|
|
|
150
|
+
if args:
|
|
151
|
+
# start at index 1, meaning the 0th argument (the iterable) is still available
|
|
152
|
+
args_as_kwargs = turn_args_into_kwargs(func, args, index_start=1)
|
|
153
|
+
else:
|
|
154
|
+
args_as_kwargs = {}
|
|
155
|
+
|
|
126
156
|
self.validate_execution(func)
|
|
127
157
|
|
|
128
|
-
kwargs = self._validate_kwargs(kwargs)
|
|
158
|
+
kwargs = self._validate_kwargs(kwargs) | args_as_kwargs
|
|
129
159
|
|
|
130
160
|
func_with_kwargs = functools.partial(func, **kwargs)
|
|
131
161
|
|
|
@@ -142,7 +172,7 @@ class Parallel:
|
|
|
142
172
|
|
|
143
173
|
if self.backend == "multiprocessing":
|
|
144
174
|
with multiprocessing.get_context(self.context).Pool(
|
|
145
|
-
processes, **self.kwargs
|
|
175
|
+
processes, maxtasksperchild=self.maxtasksperchild, **self.kwargs
|
|
146
176
|
) as pool:
|
|
147
177
|
return pool.map(func_with_kwargs, iterable)
|
|
148
178
|
|
|
@@ -155,6 +185,7 @@ class Parallel:
|
|
|
155
185
|
self,
|
|
156
186
|
func: Callable,
|
|
157
187
|
iterable: Collection[Iterable[Any]],
|
|
188
|
+
args: tuple | None = None,
|
|
158
189
|
kwargs: dict | None = None,
|
|
159
190
|
) -> list[Any]:
|
|
160
191
|
"""Run functions in parallel where items of the iterable are unpacked.
|
|
@@ -166,6 +197,8 @@ class Parallel:
|
|
|
166
197
|
func: Function to be run.
|
|
167
198
|
iterable: An iterable of iterables, where each item will be
|
|
168
199
|
unpacked as positional argument to the function.
|
|
200
|
+
Args: Positional arguments passed to 'func' starting at argument position
|
|
201
|
+
n + 1, where n is the length of the iterables inside the iterable.
|
|
169
202
|
kwargs: Keyword arguments passed to 'func'. Must be passed as a dict,
|
|
170
203
|
not unpacked into separate keyword arguments.
|
|
171
204
|
|
|
@@ -185,6 +218,17 @@ class Parallel:
|
|
|
185
218
|
>>> results
|
|
186
219
|
[3, 5, 7]
|
|
187
220
|
|
|
221
|
+
With args and kwargs. Since the iterables inside 'iterable' are of length 2,
|
|
222
|
+
'args' will start at argument number three, e.i. 'c'.
|
|
223
|
+
|
|
224
|
+
>>> iterable = [(1, 2), (2, 3), (3, 4)]
|
|
225
|
+
>>> def add(a, b, c, *, d):
|
|
226
|
+
... return a + b + c + d
|
|
227
|
+
>>> p = sg.Parallel(3, backend="loky")
|
|
228
|
+
>>> results = p.starmap(add, iterable, args=(1,), kwargs={"d": 0.1})
|
|
229
|
+
>>> results
|
|
230
|
+
[4.1, 6.1, 8.1]
|
|
231
|
+
|
|
188
232
|
If in Jupyter the function should be defined in another module.
|
|
189
233
|
And if using the multiprocessing backend, the code should be
|
|
190
234
|
guarded by if __name__ == "__main__".
|
|
@@ -197,9 +241,18 @@ class Parallel:
|
|
|
197
241
|
[3, 5, 7]
|
|
198
242
|
|
|
199
243
|
"""
|
|
244
|
+
if args:
|
|
245
|
+
# starting the count at the length of the iterables inside the iterables
|
|
246
|
+
iterable = list(iterable)
|
|
247
|
+
args_as_kwargs = turn_args_into_kwargs(
|
|
248
|
+
func, args, index_start=len(iterable[0])
|
|
249
|
+
)
|
|
250
|
+
else:
|
|
251
|
+
args_as_kwargs = {}
|
|
252
|
+
|
|
200
253
|
self.validate_execution(func)
|
|
201
254
|
|
|
202
|
-
kwargs = self._validate_kwargs(kwargs)
|
|
255
|
+
kwargs = self._validate_kwargs(kwargs) | args_as_kwargs
|
|
203
256
|
|
|
204
257
|
func_with_kwargs = functools.partial(func, **kwargs)
|
|
205
258
|
|
|
@@ -216,7 +269,7 @@ class Parallel:
|
|
|
216
269
|
|
|
217
270
|
if self.backend == "multiprocessing":
|
|
218
271
|
with multiprocessing.get_context(self.context).Pool(
|
|
219
|
-
processes, **self.kwargs
|
|
272
|
+
processes, maxtasksperchild=self.maxtasksperchild, **self.kwargs
|
|
220
273
|
) as pool:
|
|
221
274
|
return pool.starmap(func_with_kwargs, iterable)
|
|
222
275
|
|
sgis/raster/raster.py
CHANGED
|
@@ -2,10 +2,10 @@ import numbers
|
|
|
2
2
|
import re
|
|
3
3
|
import uuid
|
|
4
4
|
import warnings
|
|
5
|
+
from collections.abc import Callable
|
|
5
6
|
from copy import copy, deepcopy
|
|
6
7
|
from json import loads
|
|
7
8
|
from pathlib import Path
|
|
8
|
-
from collections.abc import Callable
|
|
9
9
|
|
|
10
10
|
import geopandas as gpd
|
|
11
11
|
import matplotlib.pyplot as plt
|
|
@@ -73,18 +73,18 @@ class Raster(RasterBase):
|
|
|
73
73
|
|
|
74
74
|
Read tif file.
|
|
75
75
|
|
|
76
|
-
>>> path = 'https://media.githubusercontent.com/media/statisticsnorway/ssb-sgis/main/tests/testdata/dtm_10.tif'
|
|
76
|
+
>>> path = 'https://media.githubusercontent.com/media/statisticsnorway/ssb-sgis/main/tests/testdata/raster/dtm_10.tif'
|
|
77
77
|
>>> raster = sg.Raster.from_path(path)
|
|
78
78
|
>>> raster
|
|
79
|
-
Raster(shape=(1, 201, 201), res=10, crs=ETRS89 / UTM zone 33N (N-E), path=https://media.githubusercontent.com/media/statisticsnorway/ssb-sgis/main/tests/testdata/dtm_10.tif)
|
|
79
|
+
Raster(shape=(1, 201, 201), res=10, crs=ETRS89 / UTM zone 33N (N-E), path=https://media.githubusercontent.com/media/statisticsnorway/ssb-sgis/main/tests/testdata/raster/dtm_10.tif)
|
|
80
80
|
|
|
81
81
|
Load the entire image as an numpy ndarray.
|
|
82
82
|
Operations are done in place to save memory.
|
|
83
83
|
The array is stored in the array attribute.
|
|
84
84
|
|
|
85
|
-
>>>
|
|
86
|
-
>>>
|
|
87
|
-
>>>
|
|
85
|
+
>>> raster.load()
|
|
86
|
+
>>> raster.array[raster.array < 0] = 0
|
|
87
|
+
>>> raster.array
|
|
88
88
|
[[[ 0. 0. 0. ... 158.4 155.6 152.6]
|
|
89
89
|
[ 0. 0. 0. ... 158. 154.8 151.9]
|
|
90
90
|
[ 0. 0. 0. ... 158.5 155.1 152.3]
|
|
@@ -95,41 +95,43 @@ class Raster(RasterBase):
|
|
|
95
95
|
|
|
96
96
|
Save as tif file.
|
|
97
97
|
|
|
98
|
-
>>>
|
|
98
|
+
>>> raster.write("path/to/file.tif")
|
|
99
99
|
|
|
100
100
|
Convert to GeoDataFrame.
|
|
101
101
|
|
|
102
|
-
>>> gdf =
|
|
102
|
+
>>> gdf = raster.to_gdf(column="elevation")
|
|
103
103
|
>>> gdf
|
|
104
|
-
elevation geometry
|
|
105
|
-
0 1.9 POLYGON ((-25665.000 6676005.000, -25665.000 6...
|
|
106
|
-
1 11.0 POLYGON ((-25655.000 6676005.000, -25655.000 6...
|
|
107
|
-
2 18.1 POLYGON ((-25645.000 6676005.000, -25645.000 6...
|
|
108
|
-
3 15.8 POLYGON ((-25635.000 6676005.000, -25635.000 6...
|
|
109
|
-
4 11.6 POLYGON ((-25625.000 6676005.000, -25625.000 6...
|
|
110
|
-
... ... ...
|
|
111
|
-
25096 13.4 POLYGON ((-24935.000 6674005.000, -24935.000 6...
|
|
112
|
-
25097 9.4 POLYGON ((-24925.000 6674005.000, -24925.000 6...
|
|
113
|
-
25098 5.3 POLYGON ((-24915.000 6674005.000, -24915.000 6...
|
|
114
|
-
25099 2.3 POLYGON ((-24905.000 6674005.000, -24905.000 6...
|
|
115
|
-
25100 0.1 POLYGON ((-24895.000 6674005.000, -24895.000 6...
|
|
104
|
+
elevation geometry band_index
|
|
105
|
+
0 1.9 POLYGON ((-25665.000 6676005.000, -25665.000 6... 1
|
|
106
|
+
1 11.0 POLYGON ((-25655.000 6676005.000, -25655.000 6... 1
|
|
107
|
+
2 18.1 POLYGON ((-25645.000 6676005.000, -25645.000 6... 1
|
|
108
|
+
3 15.8 POLYGON ((-25635.000 6676005.000, -25635.000 6... 1
|
|
109
|
+
4 11.6 POLYGON ((-25625.000 6676005.000, -25625.000 6... 1
|
|
110
|
+
... ... ... ...
|
|
111
|
+
25096 13.4 POLYGON ((-24935.000 6674005.000, -24935.000 6... 1
|
|
112
|
+
25097 9.4 POLYGON ((-24925.000 6674005.000, -24925.000 6... 1
|
|
113
|
+
25098 5.3 POLYGON ((-24915.000 6674005.000, -24915.000 6... 1
|
|
114
|
+
25099 2.3 POLYGON ((-24905.000 6674005.000, -24905.000 6... 1
|
|
115
|
+
25100 0.1 POLYGON ((-24895.000 6674005.000, -24895.000 6... 1
|
|
116
116
|
|
|
117
117
|
The image can also be clipped by a mask while loading.
|
|
118
118
|
|
|
119
|
-
>>> small_circle =
|
|
120
|
-
>>> raster = sg.Raster.from_path(path).clip(small_circle
|
|
121
|
-
Raster(shape=(1,
|
|
119
|
+
>>> small_circle = raster_as_polygons.unary_union.centroid.buffer(50)
|
|
120
|
+
>>> raster = sg.Raster.from_path(path).clip(small_circle)
|
|
121
|
+
Raster(shape=(1, 10, 10), res=10, crs=ETRS89 / UTM zone 33N (N-E), path=https://media.githubusercontent.com/media/statisticsnorway/ssb-sgis/main/tests/testdata/raster/dtm_10.tif)
|
|
122
122
|
|
|
123
123
|
Construct raster from GeoDataFrame.
|
|
124
124
|
The arrays are put on top of each other in a 3 dimensional array.
|
|
125
125
|
|
|
126
|
-
>>>
|
|
127
|
-
>>>
|
|
128
|
-
|
|
126
|
+
>>> raster_as_polygons["elevation_x2"] = raster_as_polygons["elevation"] * 2
|
|
127
|
+
>>> raster_from_polygons = sg.Raster.from_gdf(raster_as_polygons, columns=["elevation", "elevation_x2"], res=20)
|
|
128
|
+
>>> raster_from_polygons
|
|
129
|
+
Raster(shape=(2, 100, 100), res=20, raster_id=-260056673995, crs=ETRS89 / UTM zone 33N (N-E), path=None)
|
|
129
130
|
|
|
130
131
|
Calculate zonal statistics for each polygon in 'gdf'.
|
|
131
132
|
|
|
132
|
-
>>> zonal =
|
|
133
|
+
>>> zonal = raster.zonal(raster_as_polygons, aggfunc=["sum", np.mean])
|
|
134
|
+
>>> zonal
|
|
133
135
|
sum mean geometry
|
|
134
136
|
0 1.9 1.9 POLYGON ((-25665.000 6676005.000, -25665.000 6...
|
|
135
137
|
1 11.0 11.0 POLYGON ((-25655.000 6676005.000, -25655.000 6...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ssb-sgis
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.9
|
|
4
4
|
Summary: GIS functions used at Statistics Norway.
|
|
5
5
|
Home-page: https://github.com/statisticsnorway/ssb-sgis
|
|
6
6
|
License: MIT
|
|
@@ -12,6 +12,7 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
16
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
16
17
|
Requires-Dist: branca (>=0.6.0)
|
|
17
18
|
Requires-Dist: folium (>=0.14.0)
|
|
@@ -44,6 +45,8 @@ Description-Content-Type: text/markdown
|
|
|
44
45
|
|
|
45
46
|
GIS Python tools used in [Statistics Norway](https://www.ssb.no/en).
|
|
46
47
|
|
|
48
|
+
See documentation [here](https://statisticsnorway.github.io/ssb-sgis/reference/index.html).
|
|
49
|
+
|
|
47
50
|
[][pypi_]
|
|
48
51
|
[][status]
|
|
49
52
|
[][python version]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
sgis/__init__.py,sha256=L27d20iJn8LBWwmE7raQy8DWKr8b6eAuTdj22QAVIww,3601
|
|
2
|
+
sgis/exceptions.py,sha256=ztMp4sB9xxPvwj2IEsO5kOaB4FmHuU_7-M2pZ7qaxTs,576
|
|
3
|
+
sgis/geopandas_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
sgis/geopandas_tools/bounds.py,sha256=7REImJZQq35BmvznCcih92mzrVYmX43pIznA8PTeU6Y,17616
|
|
5
|
+
sgis/geopandas_tools/buffer_dissolve_explode.py,sha256=5y6tZlp2-4uYHylD2BBqY95BVRi5-y6H3RIf-jGUCvc,12166
|
|
6
|
+
sgis/geopandas_tools/centerlines.py,sha256=96jZpORHm-As4MoT8ImHPCoq2UDyBhKKw98a84Qes-A,14142
|
|
7
|
+
sgis/geopandas_tools/cleaning.py,sha256=QMG4m3itM0GSwR3QsSOhD_eHhzC-yVFa7JuS85aDAdo,11548
|
|
8
|
+
sgis/geopandas_tools/conversion.py,sha256=xogsnMDOrlMj2fS1mYEpYLOXvDT6UC993Dd_yfnHIqw,17242
|
|
9
|
+
sgis/geopandas_tools/duplicates.py,sha256=GuplKTQ7lRz0jtzWyTGVcSDieX6i8Aswt9Kh_W_DR4g,10422
|
|
10
|
+
sgis/geopandas_tools/general.py,sha256=M0Axq4GDRuxuAlZjZTNF2DQVp7dN9uquI6LZ-1q_bYw,18649
|
|
11
|
+
sgis/geopandas_tools/geocoding.py,sha256=n47aFQMm4yX1MsPnTM4dFjwegCA1ZmGUDj1uyu7OJV4,691
|
|
12
|
+
sgis/geopandas_tools/geometry_types.py,sha256=9kv-CZFDp98QJykhkY1ZTT7gaH3s1-Q3FcozEFk4mvk,7147
|
|
13
|
+
sgis/geopandas_tools/neighbors.py,sha256=7jtO1ZWv71Gj0sI5OdbrfqhVqAHiHkkzxvBUZEn8M80,15047
|
|
14
|
+
sgis/geopandas_tools/overlay.py,sha256=iLI92P_ZN7OIWkSmFLzoJPs_RkiTMdM4zWwjwhu2hFQ,14693
|
|
15
|
+
sgis/geopandas_tools/point_operations.py,sha256=Cpa02sf_W8nI6FvzJGO9jNM_ZOwIz8nDhKxNdQTqom4,6897
|
|
16
|
+
sgis/geopandas_tools/polygon_operations.py,sha256=VIZaHvxL-ucV5xaXLbDdZP9JMOM1qFWQ_91_KP24N2A,35737
|
|
17
|
+
sgis/geopandas_tools/polygons_as_rings.py,sha256=4NzdEuGD9BXKuXxcDEMt-qIoxmdq-nuwKqfjxdW3fJA,10276
|
|
18
|
+
sgis/geopandas_tools/sfilter.py,sha256=LVTWRPbY2TNngubSTmdNpZjdP-E9CbMKU1oDrBYnhYQ,8513
|
|
19
|
+
sgis/helpers.py,sha256=JG6Px77gNH7p3GqCyGQlu1z0wuUcxdho4VtfCfcr1-s,6066
|
|
20
|
+
sgis/io/_is_dapla.py,sha256=TZhVjrSfNmpNSRbt2C7L8OHXWnlmJ2euNX8IUY7xAjI,459
|
|
21
|
+
sgis/io/dapla_functions.py,sha256=16-1WzKqa2l3hWL2uJOLHnhOLdm_iIPkH6rN44SO0ek,7622
|
|
22
|
+
sgis/io/opener.py,sha256=Y5CzWFCJz_XweBTEHVysLOKhSEEXdrPsBk_7a63XmBg,538
|
|
23
|
+
sgis/io/read_parquet.py,sha256=GSW2NDy4-XosbamPEzB1xhWxFAPHuGEJZglfQ-V6DzY,3774
|
|
24
|
+
sgis/io/write_municipality_data.py,sha256=-EDUP6TcQCVEUT8XVwYVcqhYkzoltu9PpbjTTf8-afE,6457
|
|
25
|
+
sgis/maps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
sgis/maps/examine.py,sha256=UwGOuVnmO0nmnQm-7TSJQQs1AT1YW7RVA7w-kh56O7c,8073
|
|
27
|
+
sgis/maps/explore.py,sha256=_YhRF6PiwQcfmVrYZr0Lk4rKKq_2Dz3Cv7Txlk-C4kQ,27857
|
|
28
|
+
sgis/maps/httpserver.py,sha256=z9D66SizO9GIZKaSLIqpFWnwOZZh-kiuVPjFt3WZr8o,1902
|
|
29
|
+
sgis/maps/legend.py,sha256=buHo_UwzPYHIs7kS6H_xETekIR8m9R4PACXfTTMYQWE,20680
|
|
30
|
+
sgis/maps/map.py,sha256=Ba0xp_DJhT9QYTIfwsMphEyrd2oL_ReDEAt-s6tcfm0,22806
|
|
31
|
+
sgis/maps/maps.py,sha256=p8ksh-pkUxGtDwkVKq8zVghGokXLapqbencMi1YGlOg,18197
|
|
32
|
+
sgis/maps/thematicmap.py,sha256=6aVPciftW1YjxjRVQDipxayl3aI3tHpYiZ3HfpnSavc,14132
|
|
33
|
+
sgis/maps/tilesources.py,sha256=gGqNJ4d0PkIP72lZe2c5OMJsxJHz2DVsczw7QSjn96M,2733
|
|
34
|
+
sgis/networkanalysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
sgis/networkanalysis/_get_route.py,sha256=qWnMabeyIdCKOlnFYNYQUrnl_iBdSSequtsbWAbPIM4,6308
|
|
36
|
+
sgis/networkanalysis/_od_cost_matrix.py,sha256=6plN-cpGib8RL7_LhMxo09RJOMR2mjj7M02T4NgLnCA,2151
|
|
37
|
+
sgis/networkanalysis/_points.py,sha256=aQzn_E_-N-hbtoWMxOzm3PFiwO3O0_AUk9-EOoay_24,4206
|
|
38
|
+
sgis/networkanalysis/_service_area.py,sha256=7bOf1I6yzDJMQxYFCtjQw9lpW7YNStVbX8z-QS8Nyec,5336
|
|
39
|
+
sgis/networkanalysis/closing_network_holes.py,sha256=L7g5Z7qr9oH8JaJ8oqDNrkg2bwAcgh0tuXZCB_1MfGg,13329
|
|
40
|
+
sgis/networkanalysis/cutting_lines.py,sha256=SiEJXIBMJvBBsHgT_FwV5h97i0Z2TFNwSh1dMS93KQQ,14267
|
|
41
|
+
sgis/networkanalysis/directednetwork.py,sha256=2l_qBH7wyEd3HMBfMG_0i_xyHUFKbyB1vTDRYI3olnA,11217
|
|
42
|
+
sgis/networkanalysis/finding_isolated_networks.py,sha256=IZWWotvnvxSgK5lXtByiynL13aWJRPl1HhNpyf0ddSU,3370
|
|
43
|
+
sgis/networkanalysis/network.py,sha256=UvPPIEfZCjoLBIyHFuSsWXYarku2l3CHrkhX3iiGkl4,7686
|
|
44
|
+
sgis/networkanalysis/networkanalysis.py,sha256=raz5T5Va5xvnLJC7tNkPx57ZUIdm1aEeqMMpOZPGDqQ,67276
|
|
45
|
+
sgis/networkanalysis/networkanalysisrules.py,sha256=UMSo5-a8OF-0yzDgjxNcU0TpMjOpVrqrejgHikMRsXU,12607
|
|
46
|
+
sgis/networkanalysis/nodes.py,sha256=p87X0JRrxL7XGEDWe4K6meWqKqZMD2f_jM6zptuBRRQ,6844
|
|
47
|
+
sgis/networkanalysis/traveling_salesman.py,sha256=UBa4ZPwcAgUeqgYt-Uvr_2g3BKsOvNfTfvKMGjoRuTY,5558
|
|
48
|
+
sgis/parallel/parallel.py,sha256=sE6SPKb0-Wo9trn769N9kLc_WOYWxUSl7lAdSQidumk,16050
|
|
49
|
+
sgis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
+
sgis/raster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
+
sgis/raster/base.py,sha256=FOXdHl6yT9ge-Ofk4UreeN6LUBL6inNIExGGD1OHF0s,5385
|
|
52
|
+
sgis/raster/elevationraster.py,sha256=yrE6dg0NgJp0KmrJqdygF74tKbnnwgLQ4rfwBELCYSY,2867
|
|
53
|
+
sgis/raster/raster.py,sha256=ZwtHpG86xwy83tz3Xhi72ZGuAX0_hIo6FAL_8j4VvYo,40862
|
|
54
|
+
sgis/raster/sentinel.py,sha256=0x1HwebRRTCExmsMAXwnct23eMXDBj_KHz8CoP0NOxI,1025
|
|
55
|
+
sgis/raster/zonal.py,sha256=P2bJ8Uvnrc4U1JbyBsKEhjGNaU4FOvRNmxOOF9EzM34,3249
|
|
56
|
+
ssb_sgis-0.3.9.dist-info/LICENSE,sha256=lL2h0dNKGTKAE0CjTy62SDbRennVD1xPgM5LzGqhKeo,1074
|
|
57
|
+
ssb_sgis-0.3.9.dist-info/METADATA,sha256=2ovVu6h0d07YqCoDVaPVvXzA2xEBico1uOzhuGMDs8I,9163
|
|
58
|
+
ssb_sgis-0.3.9.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
59
|
+
ssb_sgis-0.3.9.dist-info/RECORD,,
|
|
File without changes
|
ssb_sgis-0.3.8.dist-info/RECORD
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
sgis/__init__.py,sha256=tvuaGwGVI201QWHb5YWF8QlZ3yVMwatieIRkDWjK6ow,3458
|
|
2
|
-
sgis/exceptions.py,sha256=ztMp4sB9xxPvwj2IEsO5kOaB4FmHuU_7-M2pZ7qaxTs,576
|
|
3
|
-
sgis/geopandas_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
sgis/geopandas_tools/bounds.py,sha256=7REImJZQq35BmvznCcih92mzrVYmX43pIznA8PTeU6Y,17616
|
|
5
|
-
sgis/geopandas_tools/buffer_dissolve_explode.py,sha256=8cyI6Hdc6n2k0wNKN4l5wHJ1k_UUjbNy-aMberXh9Kw,11997
|
|
6
|
-
sgis/geopandas_tools/centerlines.py,sha256=9pejh7K34MfANTGxt2Lk4Ras1SJChWS20VuyZCPZ1aA,11762
|
|
7
|
-
sgis/geopandas_tools/conversion.py,sha256=SiTJPdS7_Nm41431XJns3oQoFOnXw3hcgYXd4uF0jcI,17082
|
|
8
|
-
sgis/geopandas_tools/duplicates.py,sha256=HO-AeZzG95hJvoNVlx7G8IvzB_jfoJpnXDhbVqKbfhU,9741
|
|
9
|
-
sgis/geopandas_tools/general.py,sha256=TD9zY3Ogn0GbBQyUHlYddt8P8aL1_nY0wuaCDbf80mI,18181
|
|
10
|
-
sgis/geopandas_tools/geocoding.py,sha256=n47aFQMm4yX1MsPnTM4dFjwegCA1ZmGUDj1uyu7OJV4,691
|
|
11
|
-
sgis/geopandas_tools/geometry_types.py,sha256=9kv-CZFDp98QJykhkY1ZTT7gaH3s1-Q3FcozEFk4mvk,7147
|
|
12
|
-
sgis/geopandas_tools/neighbors.py,sha256=NfxWGA_itbs0vaqhCefqyhEKsS4uf-f6TZERPN9KJrM,14735
|
|
13
|
-
sgis/geopandas_tools/overlay.py,sha256=x-kQ3V_SEzcivYHUYIYAviheD637jXaK-7dqeEwyQao,14423
|
|
14
|
-
sgis/geopandas_tools/point_operations.py,sha256=Cpa02sf_W8nI6FvzJGO9jNM_ZOwIz8nDhKxNdQTqom4,6897
|
|
15
|
-
sgis/geopandas_tools/polygon_operations.py,sha256=OxKuMqlvpHmFX5fRB9anx_8szK8-UuJEoWPyUyDN_Y0,28679
|
|
16
|
-
sgis/geopandas_tools/polygons_as_rings.py,sha256=Om0VJZVr1Kafzd8YeEIoiLhUCRpzAwNaJZ0vyajJ72I,8219
|
|
17
|
-
sgis/geopandas_tools/sfilter.py,sha256=kN7Pdrm6-xFknrnH5YbS4sTBT7EEIjcR5ts7EE4sbms,8434
|
|
18
|
-
sgis/geopandas_tools/snap_polygons.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
-
sgis/helpers.py,sha256=vcJCYIe35keVQdNqYjGz57f06a2Qs61YC3LbBceDTfE,5580
|
|
20
|
-
sgis/io/_is_dapla.py,sha256=TZhVjrSfNmpNSRbt2C7L8OHXWnlmJ2euNX8IUY7xAjI,459
|
|
21
|
-
sgis/io/dapla_functions.py,sha256=N9JX4tFVcDmqQj5rwkM7B5zXiETgBsl1nTWGCwP7NTE,6970
|
|
22
|
-
sgis/io/opener.py,sha256=Y5CzWFCJz_XweBTEHVysLOKhSEEXdrPsBk_7a63XmBg,538
|
|
23
|
-
sgis/io/read_parquet.py,sha256=GSW2NDy4-XosbamPEzB1xhWxFAPHuGEJZglfQ-V6DzY,3774
|
|
24
|
-
sgis/io/write_municipality_data.py,sha256=zn_AFLHB6mrAgyWEGVuDvRe2e9C2rQfaSvV164DzT4g,6228
|
|
25
|
-
sgis/maps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
-
sgis/maps/examine.py,sha256=fLLA7NfHql-mj_45oQkyPSqS0Gw1O_25v1tlreUn65c,7996
|
|
27
|
-
sgis/maps/explore.py,sha256=wsYRw5Qro1Ok9zMAl2zs95AHcE4kIC25y075nfWvWDE,25518
|
|
28
|
-
sgis/maps/httpserver.py,sha256=z9D66SizO9GIZKaSLIqpFWnwOZZh-kiuVPjFt3WZr8o,1902
|
|
29
|
-
sgis/maps/legend.py,sha256=buHo_UwzPYHIs7kS6H_xETekIR8m9R4PACXfTTMYQWE,20680
|
|
30
|
-
sgis/maps/map.py,sha256=CAFnnqHt2IxdygNiTZNOPqLm6iIbXErhMCFw8wDDvUQ,21690
|
|
31
|
-
sgis/maps/maps.py,sha256=aWfn3ssqpy-7c0uFd7R4bcjCMw5Klvnp7Jz_zcH2Bds,18424
|
|
32
|
-
sgis/maps/thematicmap.py,sha256=6aVPciftW1YjxjRVQDipxayl3aI3tHpYiZ3HfpnSavc,14132
|
|
33
|
-
sgis/networkanalysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
|
-
sgis/networkanalysis/_get_route.py,sha256=qWnMabeyIdCKOlnFYNYQUrnl_iBdSSequtsbWAbPIM4,6308
|
|
35
|
-
sgis/networkanalysis/_od_cost_matrix.py,sha256=6plN-cpGib8RL7_LhMxo09RJOMR2mjj7M02T4NgLnCA,2151
|
|
36
|
-
sgis/networkanalysis/_points.py,sha256=aQzn_E_-N-hbtoWMxOzm3PFiwO3O0_AUk9-EOoay_24,4206
|
|
37
|
-
sgis/networkanalysis/_service_area.py,sha256=7bOf1I6yzDJMQxYFCtjQw9lpW7YNStVbX8z-QS8Nyec,5336
|
|
38
|
-
sgis/networkanalysis/closing_network_holes.py,sha256=u-aKPd1p7u3AmnI2ryCksWAP6BHRqZdu80J8TxVQ9sU,12413
|
|
39
|
-
sgis/networkanalysis/cutting_lines.py,sha256=BX4GOuF63UqMxz8yXWZUz7-VBUkKRI_GuVnhHsOwezo,14264
|
|
40
|
-
sgis/networkanalysis/directednetwork.py,sha256=2l_qBH7wyEd3HMBfMG_0i_xyHUFKbyB1vTDRYI3olnA,11217
|
|
41
|
-
sgis/networkanalysis/finding_isolated_networks.py,sha256=IZWWotvnvxSgK5lXtByiynL13aWJRPl1HhNpyf0ddSU,3370
|
|
42
|
-
sgis/networkanalysis/network.py,sha256=UvPPIEfZCjoLBIyHFuSsWXYarku2l3CHrkhX3iiGkl4,7686
|
|
43
|
-
sgis/networkanalysis/networkanalysis.py,sha256=raz5T5Va5xvnLJC7tNkPx57ZUIdm1aEeqMMpOZPGDqQ,67276
|
|
44
|
-
sgis/networkanalysis/networkanalysisrules.py,sha256=UMSo5-a8OF-0yzDgjxNcU0TpMjOpVrqrejgHikMRsXU,12607
|
|
45
|
-
sgis/networkanalysis/nodes.py,sha256=YVN9N3YJFoO3Zu8sF0sP4vynSNYzy1YN9sBdH1vM86M,6854
|
|
46
|
-
sgis/networkanalysis/traveling_salesman.py,sha256=5m_Lf5En99Q8hnvAZAvN7RWZjBP1Tzdaz97DhZNkCZ0,5426
|
|
47
|
-
sgis/parallel/parallel.py,sha256=1oHitvYaRZuGh-3F-yd_j9fMOUTNyDZoP47ovqJUqJU,13520
|
|
48
|
-
sgis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
-
sgis/raster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
-
sgis/raster/base.py,sha256=FOXdHl6yT9ge-Ofk4UreeN6LUBL6inNIExGGD1OHF0s,5385
|
|
51
|
-
sgis/raster/elevationraster.py,sha256=yrE6dg0NgJp0KmrJqdygF74tKbnnwgLQ4rfwBELCYSY,2867
|
|
52
|
-
sgis/raster/raster.py,sha256=vWwLwr2lg5j0GBfU0g9KZoIqOPd5klGWfHxGHExZbpg,40524
|
|
53
|
-
sgis/raster/sentinel.py,sha256=0x1HwebRRTCExmsMAXwnct23eMXDBj_KHz8CoP0NOxI,1025
|
|
54
|
-
sgis/raster/zonal.py,sha256=P2bJ8Uvnrc4U1JbyBsKEhjGNaU4FOvRNmxOOF9EzM34,3249
|
|
55
|
-
ssb_sgis-0.3.8.dist-info/LICENSE,sha256=lL2h0dNKGTKAE0CjTy62SDbRennVD1xPgM5LzGqhKeo,1074
|
|
56
|
-
ssb_sgis-0.3.8.dist-info/METADATA,sha256=fTzpYpf1gNt-IvwlhzN5Y3FfoxiodwECUZLznI_mBE8,9019
|
|
57
|
-
ssb_sgis-0.3.8.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
58
|
-
ssb_sgis-0.3.8.dist-info/RECORD,,
|
|
File without changes
|