ssb-sgis 1.0.3__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 (39) hide show
  1. sgis/__init__.py +10 -3
  2. sgis/debug_config.py +24 -0
  3. sgis/geopandas_tools/bounds.py +16 -21
  4. sgis/geopandas_tools/buffer_dissolve_explode.py +112 -30
  5. sgis/geopandas_tools/centerlines.py +4 -91
  6. sgis/geopandas_tools/cleaning.py +1576 -583
  7. sgis/geopandas_tools/conversion.py +24 -14
  8. sgis/geopandas_tools/duplicates.py +27 -6
  9. sgis/geopandas_tools/general.py +259 -100
  10. sgis/geopandas_tools/geometry_types.py +1 -1
  11. sgis/geopandas_tools/neighbors.py +16 -12
  12. sgis/geopandas_tools/overlay.py +2 -2
  13. sgis/geopandas_tools/point_operations.py +3 -3
  14. sgis/geopandas_tools/polygon_operations.py +505 -100
  15. sgis/geopandas_tools/polygons_as_rings.py +40 -8
  16. sgis/geopandas_tools/sfilter.py +26 -9
  17. sgis/io/dapla_functions.py +238 -19
  18. sgis/maps/examine.py +11 -10
  19. sgis/maps/explore.py +227 -155
  20. sgis/maps/legend.py +13 -4
  21. sgis/maps/map.py +22 -13
  22. sgis/maps/maps.py +100 -29
  23. sgis/maps/thematicmap.py +25 -18
  24. sgis/networkanalysis/_service_area.py +6 -1
  25. sgis/networkanalysis/cutting_lines.py +12 -5
  26. sgis/networkanalysis/finding_isolated_networks.py +13 -6
  27. sgis/networkanalysis/networkanalysis.py +10 -12
  28. sgis/parallel/parallel.py +27 -10
  29. sgis/raster/base.py +208 -0
  30. sgis/raster/cube.py +3 -3
  31. sgis/raster/image_collection.py +1419 -722
  32. sgis/raster/indices.py +10 -7
  33. sgis/raster/raster.py +7 -7
  34. sgis/raster/sentinel_config.py +33 -17
  35. {ssb_sgis-1.0.3.dist-info → ssb_sgis-1.0.4.dist-info}/METADATA +6 -7
  36. ssb_sgis-1.0.4.dist-info/RECORD +62 -0
  37. ssb_sgis-1.0.3.dist-info/RECORD +0 -61
  38. {ssb_sgis-1.0.3.dist-info → ssb_sgis-1.0.4.dist-info}/LICENSE +0 -0
  39. {ssb_sgis-1.0.3.dist-info → ssb_sgis-1.0.4.dist-info}/WHEEL +0 -0
sgis/raster/indices.py CHANGED
@@ -8,13 +8,16 @@ from .raster import Raster
8
8
 
9
9
  def ndvi(red: np.ndarray, nir: np.ndarray) -> np.ndarray:
10
10
  # normalize red and nir arrays to 0-1 scale if needed
11
- if red.max() > 1 and nir.max() > 1:
12
- red = red / 255
13
- nir = nir / 255
14
- elif red.max() > 1 or nir.max() > 1:
15
- raise ValueError()
16
-
17
- ndvi_values = np.where((red + nir) == 0, 0, (nir - red) / (nir + red))
11
+ # if red.max() > 1 and nir.max() > 1:
12
+ # red = red / 255
13
+ # nir = nir / 255
14
+ # elif red.max() > 1 or nir.max() > 1:
15
+ # raise ValueError()
16
+ red = red / 255
17
+ nir = nir / 255
18
+
19
+ ndvi_values = (nir - red) / (nir + red)
20
+ ndvi_values[(red + nir) == 0] = 0
18
21
 
19
22
  return ndvi_values
20
23
 
sgis/raster/raster.py CHANGED
@@ -135,7 +135,7 @@ class Raster:
135
135
 
136
136
  The image can also be clipped by a mask while loading.
137
137
 
138
- >>> small_circle = raster_as_polygons.unary_union.centroid.buffer(50)
138
+ >>> small_circle = raster_as_polygons.union_all().centroid.buffer(50)
139
139
  >>> raster = sg.Raster.from_path(path).clip(small_circle)
140
140
  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)
141
141
 
@@ -535,16 +535,16 @@ class Raster:
535
535
 
536
536
  def intersects(self, other: Any) -> bool:
537
537
  """Returns True if the image bounds intersect with 'other'."""
538
- return self.unary_union.intersects(to_shapely(other))
538
+ return self.union_all().intersects(to_shapely(other))
539
539
 
540
540
  def sample(
541
541
  self, n: int = 1, size: int = 20, mask: Any = None, copy: bool = True, **kwargs
542
542
  ) -> Self:
543
543
  """Take a random spatial sample of the image."""
544
544
  if mask is not None:
545
- points = GeoSeries(self.unary_union).clip(mask).sample_points(n)
545
+ points = GeoSeries(self.union_all()).clip(mask).sample_points(n)
546
546
  else:
547
- points = GeoSeries(self.unary_union).sample_points(n)
547
+ points = GeoSeries(self.union_all()).sample_points(n)
548
548
  buffered = points.buffer(size / self.res)
549
549
  boxes = to_gdf(
550
550
  [shapely.box(*arr) for arr in buffered.bounds.values], crs=self.crs
@@ -1026,12 +1026,12 @@ class Raster:
1026
1026
  @property
1027
1027
  def area(self) -> float:
1028
1028
  """Get the area of the image."""
1029
- return shapely.area(self.unary_union)
1029
+ return shapely.area(self.union_all())
1030
1030
 
1031
1031
  @property
1032
1032
  def length(self) -> float:
1033
1033
  """Get the circumfence of the image."""
1034
- return shapely.length(self.unary_union)
1034
+ return shapely.length(self.union_all())
1035
1035
 
1036
1036
  @property
1037
1037
  def unary_union(self) -> Polygon:
@@ -1078,7 +1078,7 @@ class Raster:
1078
1078
  """Check if the Raster is equal to another Raster."""
1079
1079
  if not isinstance(other, Raster):
1080
1080
  raise NotImplementedError("other must be of type Raster")
1081
- if type(other) != type(self):
1081
+ if type(other) is not type(self):
1082
1082
  return False
1083
1083
  if self.values is None and other.values is not None:
1084
1084
  return False
@@ -1,28 +1,18 @@
1
+ import re
2
+
1
3
  SENTINEL2_FILENAME_REGEX = r"""
2
4
  ^(?P<tile>T\d{2}[A-Z]{3})
3
5
  _(?P<date>\d{8})T\d{6}
4
- # _(?P<date>\d{8}T\d{6})
5
6
  _(?P<band>B[018][\dA])
6
7
  (?:_(?P<resolution>\d+)m)?
7
8
  .*
8
9
  \..*$
9
10
  """
10
11
 
11
- SENTINEL2_MOSAIC_FILENAME_REGEX = r"""
12
- ^SENTINEL2X_
13
- (?P<date>\d{8})
14
- .*T(?P<tile>\d{2}[A-Z]{3})
15
- .*(?:_(?P<resolution>{}m))?
16
- .*(?P<band>B\d{1,2}A|B\d{1,2})
17
- .*
18
- .*\..*$
19
- """
20
-
21
12
 
22
13
  SENTINEL2_CLOUD_FILENAME_REGEX = r"""
23
14
  ^(?P<tile>T\d{2}[A-Z]{3})
24
15
  _(?P<date>\d{8})T\d{6}
25
- # _(?P<date>\d{8}T\d{6})
26
16
  _(?P<band>SCL)
27
17
  (?:_(?P<resolution>\d+)m)?
28
18
  .*
@@ -33,7 +23,6 @@ SENTINEL2_IMAGE_REGEX = r"""
33
23
  ^(?P<mission_id>S2[AB])
34
24
  _MSI(?P<level>[A-Z]\d{1}[A-Z])
35
25
  _(?P<date>\d{8})T\d{6}
36
- # _(?P<date>\d{8}T\d{6})
37
26
  _(?P<baseline>N\d{4})
38
27
  _(?P<orbit>R\d{3})
39
28
  _(?P<tile>T\d{2}[A-Z]{3})
@@ -42,28 +31,55 @@ SENTINEL2_IMAGE_REGEX = r"""
42
31
  .*$
43
32
  """
44
33
 
34
+ SENTINEL2_MOSAIC_FILENAME_REGEX = r"""
35
+ ^SENTINEL2X_
36
+ (?P<date>\d{8})
37
+ .*?
38
+ (?P<tile>T\d{2}[A-Z]{3})
39
+ .*?
40
+ _(?P<band>B\d{1,2}A?)_
41
+ .*?
42
+ (?:_(?P<resolution>\d+m))?
43
+ .*?\.tif$
44
+ """
45
+
45
46
  SENTINEL2_MOSAIC_IMAGE_REGEX = r"""
46
47
  ^SENTINEL2X_
47
48
  (?P<date>\d{8})
48
49
  -\d{6}
49
50
  -\d{3}
50
51
  _(?P<level>[A-Z]\d{1}[A-Z])
51
- .*T(?P<tile>\d{2}[A-Z]{3})
52
+ .*(?P<tile>T\d{2}[A-Z]{3})
52
53
  .*.*$
53
54
  """
54
55
 
56
+
55
57
  # multiple regex searches because there are different xml files with same info, but different naming
56
58
  CLOUD_COVERAGE_REGEXES: tuple[str] = (
57
59
  r"<Cloud_Coverage_Assessment>([\d.]+)</Cloud_Coverage_Assessment>",
58
60
  r"<CLOUDY_PIXEL_OVER_LAND_PERCENTAGE>([\d.]+)</CLOUDY_PIXEL_OVER_LAND_PERCENTAGE>",
59
61
  )
60
62
 
61
- CRS_REGEX: tuple[str] = (r"<HORIZONTAL_CS_CODE>EPSG:(\d+)</HORIZONTAL_CS_CODE>",)
63
+ CRS_REGEXES: tuple[str] = (r"<HORIZONTAL_CS_CODE>EPSG:(\d+)</HORIZONTAL_CS_CODE>",)
62
64
 
63
- BOUNDS_REGEX: tuple[dict[str, str]] = (
65
+ BOUNDS_REGEXES: tuple[dict[str, str]] = (
64
66
  {"minx": r"<ULX>(\d+)</ULX>", "maxy": r"<ULY>(\d+)</ULY>"},
65
67
  )
66
-
68
+ BOUNDS_REGEXES: tuple[re.Pattern] = (
69
+ re.compile(r"<ULX>(?P<minx>\d+)</ULX>"),
70
+ re.compile(r"<ULY>(?P<maxy>\d+)</ULY>"),
71
+ # )
72
+ # SHAPE_PATTERNS: tuple[re.Pattern] = (
73
+ re.compile(
74
+ r'<Size resolution="(?P<resolution>\d+)">\s*<NROWS>(?P<nrows>\d+)</NROWS>\s*<NCOLS>(?P<ncols>\d+)</NCOLS>\s*</Size>'
75
+ ),
76
+ re.compile(
77
+ r"<Cloud_Coverage_Assessment>(?P<cloud_coverage_percentage>[\d.]+)</Cloud_Coverage_Assessment>"
78
+ ),
79
+ re.compile(
80
+ r"<CLOUDY_PIXEL_OVER_LAND_PERCENTAGE>(?P<cloud_coverage_percentage>[\d.]+)</CLOUDY_PIXEL_OVER_LAND_PERCENTAGE>"
81
+ ),
82
+ )
67
83
 
68
84
  SENTINEL2_L2A_BANDS = {
69
85
  "B01": 60,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ssb-sgis
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: GIS functions used at Statistics Norway.
5
5
  Home-page: https://github.com/statisticsnorway/ssb-sgis
6
6
  License: MIT
@@ -21,12 +21,10 @@ Provides-Extra: torch
21
21
  Provides-Extra: xarray
22
22
  Requires-Dist: affine (>=2.4.0)
23
23
  Requires-Dist: branca (>=0.6.0)
24
- Requires-Dist: dapla-toolbelt (>=2.0.12) ; extra == "all" or extra == "bucket"
25
- Requires-Dist: dask (>=2024.1.1)
26
- Requires-Dist: dask-geopandas (>=0.3.0)
24
+ Requires-Dist: dapla-toolbelt (>=3.0.1) ; extra == "all" or extra == "bucket"
25
+ Requires-Dist: dask (>=2024.1.1) ; extra == "all" or extra == "test"
27
26
  Requires-Dist: folium (>=0.14.0)
28
27
  Requires-Dist: gcsfs (>=2024.3.1) ; extra == "all" or extra == "bucket"
29
- Requires-Dist: geocoder (>=1.38.1)
30
28
  Requires-Dist: geopandas (>=0.14.0)
31
29
  Requires-Dist: igraph (>=0.11.2)
32
30
  Requires-Dist: ipython (>=8.13.2)
@@ -36,7 +34,8 @@ Requires-Dist: joblib (>=1.4.0)
36
34
  Requires-Dist: mapclassify (>=2.5.0)
37
35
  Requires-Dist: matplotlib (>=3.7.0)
38
36
  Requires-Dist: networkx (>=3.0)
39
- Requires-Dist: numpy (>=1.24.2)
37
+ Requires-Dist: numba (>=0.60.0)
38
+ Requires-Dist: numpy (>=1.26.4)
40
39
  Requires-Dist: pandas (>=2.2.1)
41
40
  Requires-Dist: pyarrow (>=11.0.0)
42
41
  Requires-Dist: pyproj (>=3.6.1)
@@ -46,7 +45,7 @@ Requires-Dist: rioxarray (>=0.15.5) ; extra == "all" or extra == "xarray" or ext
46
45
  Requires-Dist: rtree (>=1.0.1)
47
46
  Requires-Dist: scikit-learn (>=1.2.1)
48
47
  Requires-Dist: shapely (>=2.0.1)
49
- Requires-Dist: torch (==2.2.2) ; extra == "all" or extra == "torch" or extra == "test"
48
+ Requires-Dist: torch (>=2.4.0) ; extra == "all" or extra == "torch" or extra == "test"
50
49
  Requires-Dist: torchgeo (>=0.5.2) ; extra == "all" or extra == "torch" or extra == "test"
51
50
  Requires-Dist: typing-extensions (>=4.11.0)
52
51
  Requires-Dist: xarray (>=2024.3.0) ; extra == "all" or extra == "xarray" or extra == "test"
@@ -0,0 +1,62 @@
1
+ sgis/__init__.py,sha256=wuANmvvdEus5xumwqVXC1xUUDajThjYuS5jBwfPYCeI,7266
2
+ sgis/debug_config.py,sha256=hIJEz3cIDjoxrtRMuVcNQSXZHCRTbh63Tri4IR7iVFM,545
3
+ sgis/exceptions.py,sha256=WNaEBPNNx0rmz-YDzlFX4vIE7ocJQruUTqS2RNAu2zU,660
4
+ sgis/geopandas_tools/__init__.py,sha256=bo8lFMcltOz7TtWAi52_ekR2gd3mjfBfKeMDV5zuqFY,28
5
+ sgis/geopandas_tools/bounds.py,sha256=iIIqacQafn4XrWDaJtaffLrW72z3ce_-YYwdTtWmA8E,23673
6
+ sgis/geopandas_tools/buffer_dissolve_explode.py,sha256=_0XgfC4DSUEKF4sbGr2KpMSngCrPrZt_d7siy0vILLU,21083
7
+ sgis/geopandas_tools/centerlines.py,sha256=Q65Sx01SeAlulBEd9oaZkB2maBBNdLcJwAbTILg4SPU,11848
8
+ sgis/geopandas_tools/cleaning.py,sha256=I3tpn5uzsLjRYi-TybUe3QuNns0CseuxkfBSmSMer0I,60208
9
+ sgis/geopandas_tools/conversion.py,sha256=TkfSu-DRHicH8LSR7ygMN84ggxP_zzmFk54iLNv1ftg,24660
10
+ sgis/geopandas_tools/duplicates.py,sha256=LG8-BG8LdA2zjWauuloslIZHvMGND6Fja0MtXIPZ1wo,14301
11
+ sgis/geopandas_tools/general.py,sha256=5ZD7CXGIvJmWDN-V-RlG0K_mWiT6iVNvP_UL8cufk2A,31651
12
+ sgis/geopandas_tools/geocoding.py,sha256=n47aFQMm4yX1MsPnTM4dFjwegCA1ZmGUDj1uyu7OJV4,691
13
+ sgis/geopandas_tools/geometry_types.py,sha256=hSlN8n4pJZPkEfOdKL1DRux757kl81DciIH7ZXiHEdE,7587
14
+ sgis/geopandas_tools/neighbors.py,sha256=vduQlHeoZjHyD5pxDbjfonQ3-LAHGfPETxV7-L6Sg4M,16634
15
+ sgis/geopandas_tools/overlay.py,sha256=IADAh-U9EUgDLSsyYcblL3Qbjxi89xRHtP20KdhlYaA,25543
16
+ sgis/geopandas_tools/point_operations.py,sha256=JM4hvfIVxZaZdGNlGzcCurrKzkgC_b9hzbFYN42f9WY,6972
17
+ sgis/geopandas_tools/polygon_operations.py,sha256=FJ-dXCxLHRsmp0oXsmBOFRprFFwmhrxqOPZkW2WWWQM,50088
18
+ sgis/geopandas_tools/polygons_as_rings.py,sha256=BX_GZS6F9I4NbEpiOlNBd7zywJjdfdJVi_MkeONBuiM,14941
19
+ sgis/geopandas_tools/sfilter.py,sha256=SLcMYprQwnY5DNo0R7TGXk4m6u26H8o4PRn-RPhmeZY,9345
20
+ sgis/helpers.py,sha256=dscvGAbZyyncZbTL9qdsAHN6tb_T7SbNH7vM4ZrTeJw,8326
21
+ sgis/io/_is_dapla.py,sha256=o_qFD5GOi3dsSGOKmW6R8wZU0htVwFgRbGX7ppJCqT4,431
22
+ sgis/io/dapla_functions.py,sha256=Y69aSjnw6rOpH8yIquNor-JoTXcUfjbx2FcduT72-1A,17654
23
+ sgis/io/opener.py,sha256=BHyH7L8Ubh9C4Lsb8eBzGI6FLWg8UQFu-1bg3NEy_2k,862
24
+ sgis/io/read_parquet.py,sha256=FvZYv1rLkUlrSaUY6QW6E1yntmntTeQuZ9ZRgCDO4IM,3776
25
+ sgis/maps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ sgis/maps/examine.py,sha256=Pb0dH8JazU5E2svfQrzHO1Bi-sjy5SeyY6zoeMO34jE,9369
27
+ sgis/maps/explore.py,sha256=K-iJ07v_srUB_Z6hTuSRSKqgljKewY9A_j14bSrs0Yg,45916
28
+ sgis/maps/httpserver.py,sha256=7Od9JMCtntcIQKk_TchetojMHzFHT9sPw7GANahI97c,1982
29
+ sgis/maps/legend.py,sha256=1ZOhzftq1HRKlHphhfqUm82U-Kjx_xkACieLRevxke8,26232
30
+ sgis/maps/map.py,sha256=LHXFl_f5OWcPesKvwr-4L91Hd0VFFXNSGMQXaqmszMg,29276
31
+ sgis/maps/maps.py,sha256=GgvxwRY0Sz2e432Emj6i8hAp6sFduKt9VhsWw9HgKI4,23147
32
+ sgis/maps/thematicmap.py,sha256=bFlZy2xSKmEOHhvM0d1pv8O9JuNjR3P_9colTJnduvE,20729
33
+ sgis/maps/tilesources.py,sha256=aSci-0JURxnqqirIXQS5bHfNEIg3xfCM_B4gXs7GslM,2772
34
+ sgis/networkanalysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ sgis/networkanalysis/_get_route.py,sha256=9I3t9pnccUPr4mozy3TJCOpGCCf3UOIojmsbifubZbA,6368
36
+ sgis/networkanalysis/_od_cost_matrix.py,sha256=zkyPX7ObT996ahaFJ2oI0D0SqQWbWyfy_qLtXwValPg,3434
37
+ sgis/networkanalysis/_points.py,sha256=ajCy17dAmRq3bWRkNu_0LHreCVJ5Uh8DzAKWxyw7ipw,4481
38
+ sgis/networkanalysis/_service_area.py,sha256=jE0X54yS4eMfZYJXeKe_NgMKPDpau-05xWZaxDi_c6Y,5546
39
+ sgis/networkanalysis/closing_network_holes.py,sha256=EyhsLnjD6omTVgH9HIznukIX-vIOTtkv8_pwUnR6Pvk,12095
40
+ sgis/networkanalysis/cutting_lines.py,sha256=Uo6sGdC1xhkWwO69wgQYgGdT1JS6ZfZzHm8JrM1GmZM,15420
41
+ sgis/networkanalysis/directednetwork.py,sha256=Mrc2zHip4P5RNxnyffKm-xU832AVQeSHz-YZueAc0pM,11413
42
+ sgis/networkanalysis/finding_isolated_networks.py,sha256=s7knwQJeNqU6wJ9gIwwYnSAwGyKH98zZ2NroxZnTQxI,3637
43
+ sgis/networkanalysis/network.py,sha256=zV9bAbVdTgTohg2o2RFGy2uhOJrd3Ma57hwIAStxMAQ,7847
44
+ sgis/networkanalysis/networkanalysis.py,sha256=-g7slZLFNxUZSUMvVmf7zax-9IOXz1NGCtR6LcsBzBQ,68476
45
+ sgis/networkanalysis/networkanalysisrules.py,sha256=9sXigaCzvKhXFwpeVNMtOiIK3_Hzp9yDpFklmEEAPak,12956
46
+ sgis/networkanalysis/nodes.py,sha256=Yo0oWlsZO0Ex2_7lzGGUEiS2Ltfnm5kuCl5MkE2qJhA,6863
47
+ sgis/networkanalysis/traveling_salesman.py,sha256=Jjo6bHY4KJ-eK0LycyTy0sWxZjgITs5MBllZ_G9FhTE,5655
48
+ sgis/parallel/parallel.py,sha256=4Juv3oepguP4XryrgfbX-ipbYunKmbxvzM0jj8kYpCE,37296
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=8J6y9k-YuCAUpE83yTkg26RF2YCp9aieVvWrPi_GfUc,7697
52
+ sgis/raster/cube.py,sha256=P9baGN03Mwdi_LJ5a3F9_PROVYGCbjopQSxwQnr1LvE,41764
53
+ sgis/raster/cubebase.py,sha256=nao5huLer-nzy792PTZc0CKAMlmedZCe3siWnOf7Duw,639
54
+ sgis/raster/image_collection.py,sha256=ZLjoBIvSSLfKhgEm1GstbLsDPLhIUGPEbdE0GkngrtM,106271
55
+ sgis/raster/indices.py,sha256=bb0ItG8ePoFsrc5-XSupnMzJ6EwoALGh-lscM81Gpfo,3010
56
+ sgis/raster/raster.py,sha256=I8Af6gRIexvrNWTGBfZX6WC0Eug07Vykam4EaP1ZUws,50576
57
+ sgis/raster/sentinel_config.py,sha256=zcw24T9RBqix85QGK35LAYWuEkHJEwMcDRcnApRpLHs,3019
58
+ sgis/raster/zonal.py,sha256=st2mWiUcdxeEiHBOZSgFOnVcP6pc4EMPJBPw537Z4V8,3837
59
+ ssb_sgis-1.0.4.dist-info/LICENSE,sha256=np3IfD5m0ZUofn_kVzDZqliozuiO6wrktw3LRPjyEiI,1073
60
+ ssb_sgis-1.0.4.dist-info/METADATA,sha256=rtQ7B_Zrir7NlamabCImSEhhzSm_nMTbr4eqZhyWXHE,11772
61
+ ssb_sgis-1.0.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
62
+ ssb_sgis-1.0.4.dist-info/RECORD,,
@@ -1,61 +0,0 @@
1
- sgis/__init__.py,sha256=QwGvKuOVhblqA7Vqy6haMJKl7Yjkbmzb8UnTaIY6pcU,6964
2
- sgis/exceptions.py,sha256=WNaEBPNNx0rmz-YDzlFX4vIE7ocJQruUTqS2RNAu2zU,660
3
- sgis/geopandas_tools/__init__.py,sha256=bo8lFMcltOz7TtWAi52_ekR2gd3mjfBfKeMDV5zuqFY,28
4
- sgis/geopandas_tools/bounds.py,sha256=F1w0V50iMYoBkFmDqyZsOsls2KMeM5DbYWdtEoNkqLI,23975
5
- sgis/geopandas_tools/buffer_dissolve_explode.py,sha256=w2xApXs8sZoZ9U2FF_4kpQJYZWrgBQ20O2Cw7dXEIFg,18814
6
- sgis/geopandas_tools/centerlines.py,sha256=qTLUWOAgLT_E7ow4cZjWgwgH2BqaEh-hSQivXQbxWcc,14435
7
- sgis/geopandas_tools/cleaning.py,sha256=w0puDL7RfIZwWy_wRxXkgfYTHQKZVBxKvAhbjsnAqSY,23772
8
- sgis/geopandas_tools/conversion.py,sha256=stfaJwRsatF_kyC43NExBSh6h8ChDoM4M7DUc8PIolM,24248
9
- sgis/geopandas_tools/duplicates.py,sha256=tOepI3dC2fc2N7jJjIESmpgTJtIGGKwTaZwHF1zESFg,13599
10
- sgis/geopandas_tools/general.py,sha256=ibIaHI6gB3g5ur7FEBKIB-aSv9IbJJ9nO6Fd8d8-vkU,25987
11
- sgis/geopandas_tools/geocoding.py,sha256=n47aFQMm4yX1MsPnTM4dFjwegCA1ZmGUDj1uyu7OJV4,691
12
- sgis/geopandas_tools/geometry_types.py,sha256=8iN6bvLOvT8yxfq85hlYBk6OAgTE-sy7N75ZpqjSYKI,7589
13
- sgis/geopandas_tools/neighbors.py,sha256=6nzuD2A2-Zb8eTlSk1MMt70MH2n7ue_Moa_LEATlGeo,16366
14
- sgis/geopandas_tools/overlay.py,sha256=yAIpM1Yq9JBjRMhoetxiJXdwpjHF_q4tkYNhatYJQS0,25509
15
- sgis/geopandas_tools/point_operations.py,sha256=6bzJNJREJFrAVoS8IyjYVOhyjqCakCoBo17v_CDC6sc,6961
16
- sgis/geopandas_tools/polygon_operations.py,sha256=59Bg4OzbShJD6Ry2To8g_nis1RcW4T5PeS__ctX2XxU,37229
17
- sgis/geopandas_tools/polygons_as_rings.py,sha256=26_TSB3dyzsPHc4h2RVzhwFVBa9qG1mw9xLGZbNKOMU,13558
18
- sgis/geopandas_tools/sfilter.py,sha256=Memz45Yqyx2ZeWacYxIbUJyHYdno7v1amVLDhBJXDHo,8656
19
- sgis/helpers.py,sha256=dscvGAbZyyncZbTL9qdsAHN6tb_T7SbNH7vM4ZrTeJw,8326
20
- sgis/io/_is_dapla.py,sha256=o_qFD5GOi3dsSGOKmW6R8wZU0htVwFgRbGX7ppJCqT4,431
21
- sgis/io/dapla_functions.py,sha256=IHB8Nhg90ui_o6IvKx-BjAS3mciruCClL-v-JQNfg4M,8807
22
- sgis/io/opener.py,sha256=BHyH7L8Ubh9C4Lsb8eBzGI6FLWg8UQFu-1bg3NEy_2k,862
23
- sgis/io/read_parquet.py,sha256=FvZYv1rLkUlrSaUY6QW6E1yntmntTeQuZ9ZRgCDO4IM,3776
24
- sgis/maps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- sgis/maps/examine.py,sha256=En5EdNLle88_Sx3uA0VibMApHFZipezH4sMVP5cqwlc,9263
26
- sgis/maps/explore.py,sha256=gWBnQCUTQtHK9rkWHErlT4_JjdKdom99i-KLh8otNKc,42853
27
- sgis/maps/httpserver.py,sha256=7Od9JMCtntcIQKk_TchetojMHzFHT9sPw7GANahI97c,1982
28
- sgis/maps/legend.py,sha256=pNJ2e_yzoIli69ciggvO6rl6EWf7u7aR3B9TsJokBCA,25974
29
- sgis/maps/map.py,sha256=RfSoq14PxlYH4Zj6o6HXhRauSrqkrcBat-7cuuNiD1Y,28932
30
- sgis/maps/maps.py,sha256=7XWm3aEQZl0k9ttMsXULnyHyTldTLlvPWCVPmU0JApo,20497
31
- sgis/maps/thematicmap.py,sha256=ixogDK_AvBnX87zMtJKqOac4vfEYYl1gVC5BMah5zbs,20568
32
- sgis/maps/tilesources.py,sha256=aSci-0JURxnqqirIXQS5bHfNEIg3xfCM_B4gXs7GslM,2772
33
- sgis/networkanalysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- sgis/networkanalysis/_get_route.py,sha256=9I3t9pnccUPr4mozy3TJCOpGCCf3UOIojmsbifubZbA,6368
35
- sgis/networkanalysis/_od_cost_matrix.py,sha256=zkyPX7ObT996ahaFJ2oI0D0SqQWbWyfy_qLtXwValPg,3434
36
- sgis/networkanalysis/_points.py,sha256=ajCy17dAmRq3bWRkNu_0LHreCVJ5Uh8DzAKWxyw7ipw,4481
37
- sgis/networkanalysis/_service_area.py,sha256=BzqB8X5X5CGexUwbpP379jEj-ad4mgCzFr8mOa-BsnY,5385
38
- sgis/networkanalysis/closing_network_holes.py,sha256=EyhsLnjD6omTVgH9HIznukIX-vIOTtkv8_pwUnR6Pvk,12095
39
- sgis/networkanalysis/cutting_lines.py,sha256=_IHopMhdRgyRKijNZttF07H6rsZoiHzlVBTRO7HJK2Q,15194
40
- sgis/networkanalysis/directednetwork.py,sha256=Mrc2zHip4P5RNxnyffKm-xU832AVQeSHz-YZueAc0pM,11413
41
- sgis/networkanalysis/finding_isolated_networks.py,sha256=9WGV7ABv1GE8NFxCUU08wziotjoFUV5Xf_MmTIh1wz4,3384
42
- sgis/networkanalysis/network.py,sha256=zV9bAbVdTgTohg2o2RFGy2uhOJrd3Ma57hwIAStxMAQ,7847
43
- sgis/networkanalysis/networkanalysis.py,sha256=hGfjLULCA6VDrabGoKv1_a_wooX4FM0v-27Bqzu6Lv4,68451
44
- sgis/networkanalysis/networkanalysisrules.py,sha256=9sXigaCzvKhXFwpeVNMtOiIK3_Hzp9yDpFklmEEAPak,12956
45
- sgis/networkanalysis/nodes.py,sha256=Yo0oWlsZO0Ex2_7lzGGUEiS2Ltfnm5kuCl5MkE2qJhA,6863
46
- sgis/networkanalysis/traveling_salesman.py,sha256=Jjo6bHY4KJ-eK0LycyTy0sWxZjgITs5MBllZ_G9FhTE,5655
47
- sgis/parallel/parallel.py,sha256=aK624cE-auJV6dOMBfueBjxiFBXIDC3O5GBGW_02HY8,36711
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=POu3uZJqygubLGh9t_lQJe8pNKQ9MD9wHubFHC8_nck,1192
51
- sgis/raster/cube.py,sha256=-GTFS_wJciXoooz8JvqReBdNboqmJIytLeHFonXCn1A,41768
52
- sgis/raster/cubebase.py,sha256=nao5huLer-nzy792PTZc0CKAMlmedZCe3siWnOf7Duw,639
53
- sgis/raster/image_collection.py,sha256=yEXvnR4vDTHN_7w7gEzoEnes7k6nzBNmu6q3UBCb8K4,85395
54
- sgis/raster/indices.py,sha256=AqV3m1qy_sFr6wQKmETatjO6rD68KV1m9WLzx82U4I0,2953
55
- sgis/raster/raster.py,sha256=kf93A3NIymT4thBQhD5JZ7aPjdchcSfm93pXu4DESPc,50572
56
- sgis/raster/sentinel_config.py,sha256=-9gL-00uRQkp9-F-PcKLSThDR4TV4hx2iRbVj3DWUaI,2483
57
- sgis/raster/zonal.py,sha256=st2mWiUcdxeEiHBOZSgFOnVcP6pc4EMPJBPw537Z4V8,3837
58
- ssb_sgis-1.0.3.dist-info/LICENSE,sha256=np3IfD5m0ZUofn_kVzDZqliozuiO6wrktw3LRPjyEiI,1073
59
- ssb_sgis-1.0.3.dist-info/METADATA,sha256=XRHE7esl_qnQOw6XZvhlZfuF72cNaRmLVedLvDwqJDg,11780
60
- ssb_sgis-1.0.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
61
- ssb_sgis-1.0.3.dist-info/RECORD,,