ssb-sgis 1.0.2__py3-none-any.whl → 1.0.4__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.
Files changed (50) hide show
  1. sgis/__init__.py +20 -9
  2. sgis/debug_config.py +24 -0
  3. sgis/exceptions.py +2 -2
  4. sgis/geopandas_tools/bounds.py +33 -36
  5. sgis/geopandas_tools/buffer_dissolve_explode.py +136 -35
  6. sgis/geopandas_tools/centerlines.py +4 -91
  7. sgis/geopandas_tools/cleaning.py +1576 -583
  8. sgis/geopandas_tools/conversion.py +38 -19
  9. sgis/geopandas_tools/duplicates.py +29 -8
  10. sgis/geopandas_tools/general.py +263 -100
  11. sgis/geopandas_tools/geometry_types.py +4 -4
  12. sgis/geopandas_tools/neighbors.py +19 -15
  13. sgis/geopandas_tools/overlay.py +2 -2
  14. sgis/geopandas_tools/point_operations.py +5 -5
  15. sgis/geopandas_tools/polygon_operations.py +510 -105
  16. sgis/geopandas_tools/polygons_as_rings.py +40 -8
  17. sgis/geopandas_tools/sfilter.py +29 -12
  18. sgis/helpers.py +3 -3
  19. sgis/io/dapla_functions.py +238 -19
  20. sgis/io/read_parquet.py +1 -1
  21. sgis/maps/examine.py +27 -12
  22. sgis/maps/explore.py +450 -65
  23. sgis/maps/legend.py +177 -76
  24. sgis/maps/map.py +206 -103
  25. sgis/maps/maps.py +178 -105
  26. sgis/maps/thematicmap.py +243 -83
  27. sgis/networkanalysis/_service_area.py +6 -1
  28. sgis/networkanalysis/closing_network_holes.py +2 -2
  29. sgis/networkanalysis/cutting_lines.py +15 -8
  30. sgis/networkanalysis/directednetwork.py +1 -1
  31. sgis/networkanalysis/finding_isolated_networks.py +15 -8
  32. sgis/networkanalysis/networkanalysis.py +17 -19
  33. sgis/networkanalysis/networkanalysisrules.py +1 -1
  34. sgis/networkanalysis/traveling_salesman.py +1 -1
  35. sgis/parallel/parallel.py +64 -27
  36. sgis/raster/__init__.py +0 -6
  37. sgis/raster/base.py +208 -0
  38. sgis/raster/cube.py +54 -8
  39. sgis/raster/image_collection.py +3257 -0
  40. sgis/raster/indices.py +17 -5
  41. sgis/raster/raster.py +138 -243
  42. sgis/raster/sentinel_config.py +120 -0
  43. sgis/raster/zonal.py +0 -1
  44. {ssb_sgis-1.0.2.dist-info → ssb_sgis-1.0.4.dist-info}/METADATA +6 -7
  45. ssb_sgis-1.0.4.dist-info/RECORD +62 -0
  46. sgis/raster/methods_as_functions.py +0 -0
  47. sgis/raster/torchgeo.py +0 -171
  48. ssb_sgis-1.0.2.dist-info/RECORD +0 -61
  49. {ssb_sgis-1.0.2.dist-info → ssb_sgis-1.0.4.dist-info}/LICENSE +0 -0
  50. {ssb_sgis-1.0.2.dist-info → ssb_sgis-1.0.4.dist-info}/WHEEL +0 -0
sgis/maps/examine.py CHANGED
@@ -3,6 +3,10 @@ import numpy as np
3
3
 
4
4
  from ..geopandas_tools.bounds import get_total_bounds
5
5
  from ..helpers import unit_is_degrees
6
+ from ..raster.image_collection import Band
7
+ from ..raster.image_collection import Image
8
+ from ..raster.image_collection import ImageCollection
9
+ from .explore import Explore
6
10
  from .map import Map
7
11
  from .maps import clipmap
8
12
  from .maps import explore
@@ -22,7 +26,7 @@ class Examine:
22
26
  can then be repeated.
23
27
 
24
28
  Examples:
25
- --------
29
+ ---------
26
30
  Create the examiner.
27
31
 
28
32
  >>> import sgis as sg
@@ -86,18 +90,22 @@ class Examine:
86
90
  **kwargs: Additional keyword arguments passed to sgis.clipmap.
87
91
 
88
92
  """
89
- gdfs, column, kwargs = Map._separate_args(gdfs, column, kwargs)
90
-
91
93
  if mask_gdf is None:
92
94
  self.mask_gdf = gdfs[0]
93
95
  else:
94
96
  self.mask_gdf = mask_gdf
95
97
 
96
- m = Map(*gdfs, column=column, **kwargs)
98
+ gdfs, column, kwargs = Map._separate_args(gdfs, column, kwargs)
99
+
100
+ m = Explore(*gdfs, column=column, **kwargs)
101
+
102
+ # m = Map(*gdfs, column=column, **kwargs)
97
103
  self._gdfs: dict[str, gpd.GeoDataFrame] = dict(
98
104
  zip(m.labels, m.gdfs, strict=False)
99
105
  )
100
106
 
107
+ self.rasters: dict[str, ImageCollection | Image | Band] = m.rasters
108
+
101
109
  self.indices = list(range(len(self.mask_gdf)))
102
110
  self.i = 0
103
111
  self.column = column
@@ -151,13 +159,15 @@ class Examine:
151
159
  print("All rows are shown.")
152
160
  return
153
161
 
154
- print(f"i == {self.i} (of {len(self.mask_gdf)})")
155
- clipmap(
162
+ print(f"i == {self.i} (max. {len(self.mask_gdf)- 1})")
163
+ self.explorer = clipmap(
156
164
  self.column,
165
+ *list(self.rasters.values()),
157
166
  **self._gdfs,
158
167
  mask=self.mask_gdf.iloc[[self.i]].buffer(self.size),
159
168
  **self.kwargs,
160
169
  )
170
+
161
171
  self.i += 1
162
172
 
163
173
  def sample(self, **kwargs) -> None:
@@ -173,8 +183,9 @@ class Examine:
173
183
  i = np.random.randint(0, len(self.mask_gdf))
174
184
 
175
185
  print(f"Showing index {i}")
176
- clipmap(
186
+ self.explorer = clipmap(
177
187
  self.column,
188
+ *list(self.rasters.values()),
178
189
  **self._gdfs,
179
190
  mask=self.mask_gdf.iloc[[i]].buffer(self.size),
180
191
  **self.kwargs,
@@ -192,8 +203,9 @@ class Examine:
192
203
  self.i = i
193
204
 
194
205
  print(f"{self.i + 1} of {len(self.mask_gdf)}")
195
- clipmap(
206
+ self.explorer = clipmap(
196
207
  self.column,
208
+ *list(self.rasters.values()),
197
209
  **self._gdfs,
198
210
  mask=self.mask_gdf.iloc[[self.i]].buffer(self.size),
199
211
  **self.kwargs,
@@ -205,7 +217,8 @@ class Examine:
205
217
  kwargs = self._fix_kwargs(kwargs)
206
218
  self.kwargs = self.kwargs | kwargs
207
219
 
208
- explore(
220
+ self.explorer = explore(
221
+ *list(self.rasters.values()),
209
222
  **self._gdfs,
210
223
  column=self.column,
211
224
  **self.kwargs,
@@ -217,7 +230,8 @@ class Examine:
217
230
  kwargs = self._fix_kwargs(kwargs)
218
231
  self.kwargs = self.kwargs | kwargs
219
232
 
220
- clipmap(
233
+ self.explorer = clipmap(
234
+ *list(self.rasters.values()),
221
235
  **self._gdfs,
222
236
  column=self.column,
223
237
  **self.kwargs,
@@ -229,7 +243,8 @@ class Examine:
229
243
  kwargs = self._fix_kwargs(kwargs)
230
244
  self.kwargs = self.kwargs | kwargs
231
245
 
232
- samplemap(
246
+ self.explorer = samplemap(
247
+ *list(self.rasters.values()),
233
248
  **self._gdfs,
234
249
  column=self.column,
235
250
  **self.kwargs,
@@ -238,7 +253,7 @@ class Examine:
238
253
  @property
239
254
  def mask(self) -> gpd.GeoDataFrame:
240
255
  """Returns a GeoDataFrame of the last shown mask geometry."""
241
- return self.mask_gdf.iloc[[self.i]]
256
+ return self.mask_gdf.iloc[[self.i - 1]]
242
257
 
243
258
  @property
244
259
  def gdfs(self) -> dict[str, gpd.GeoDataFrame]: