sgspy 1.0.1__cp311-cp311-win_amd64.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 (91) hide show
  1. sgspy/__init__.py +82 -0
  2. sgspy/_sgs.cp311-win_amd64.lib +0 -0
  3. sgspy/_sgs.cp311-win_amd64.pyd +0 -0
  4. sgspy/calculate/__init__.py +18 -0
  5. sgspy/calculate/pca/__init__.py +2 -0
  6. sgspy/calculate/pca/pca.py +152 -0
  7. sgspy/calculate/representation/__init__.py +2 -0
  8. sgspy/calculate/representation/representation.py +3 -0
  9. sgspy/sample/__init__.py +30 -0
  10. sgspy/sample/ahels/__init__.py +2 -0
  11. sgspy/sample/ahels/ahels.py +3 -0
  12. sgspy/sample/clhs/__init__.py +2 -0
  13. sgspy/sample/clhs/clhs.py +198 -0
  14. sgspy/sample/nc/__init__.py +2 -0
  15. sgspy/sample/nc/nc.py +3 -0
  16. sgspy/sample/srs/__init__.py +2 -0
  17. sgspy/sample/srs/srs.py +224 -0
  18. sgspy/sample/strat/__init__.py +2 -0
  19. sgspy/sample/strat/strat.py +390 -0
  20. sgspy/sample/systematic/__init__.py +2 -0
  21. sgspy/sample/systematic/systematic.py +229 -0
  22. sgspy/stratify/__init__.py +27 -0
  23. sgspy/stratify/breaks/__init__.py +2 -0
  24. sgspy/stratify/breaks/breaks.py +218 -0
  25. sgspy/stratify/kmeans/__init__.py +2 -0
  26. sgspy/stratify/kmeans/kmeans.py +3 -0
  27. sgspy/stratify/map/__init__.py +2 -0
  28. sgspy/stratify/map/map_stratifications.py +240 -0
  29. sgspy/stratify/poly/__init__.py +2 -0
  30. sgspy/stratify/poly/poly.py +166 -0
  31. sgspy/stratify/quantiles/__init__.py +2 -0
  32. sgspy/stratify/quantiles/quantiles.py +272 -0
  33. sgspy/utils/__init__.py +18 -0
  34. sgspy/utils/plot.py +143 -0
  35. sgspy/utils/raster.py +602 -0
  36. sgspy/utils/vector.py +262 -0
  37. sgspy-1.0.1.data/data/sgspy/Lerc.dll +0 -0
  38. sgspy-1.0.1.data/data/sgspy/aec.dll +0 -0
  39. sgspy-1.0.1.data/data/sgspy/charset-1.dll +0 -0
  40. sgspy-1.0.1.data/data/sgspy/freexl-1.dll +0 -0
  41. sgspy-1.0.1.data/data/sgspy/gdal.dll +0 -0
  42. sgspy-1.0.1.data/data/sgspy/geos.dll +0 -0
  43. sgspy-1.0.1.data/data/sgspy/geos_c.dll +0 -0
  44. sgspy-1.0.1.data/data/sgspy/geotiff.dll +0 -0
  45. sgspy-1.0.1.data/data/sgspy/gif.dll +0 -0
  46. sgspy-1.0.1.data/data/sgspy/hdf5.dll +0 -0
  47. sgspy-1.0.1.data/data/sgspy/hdf5_cpp.dll +0 -0
  48. sgspy-1.0.1.data/data/sgspy/hdf5_hl.dll +0 -0
  49. sgspy-1.0.1.data/data/sgspy/hdf5_hl_cpp.dll +0 -0
  50. sgspy-1.0.1.data/data/sgspy/iconv-2.dll +0 -0
  51. sgspy-1.0.1.data/data/sgspy/jpeg62.dll +0 -0
  52. sgspy-1.0.1.data/data/sgspy/json-c.dll +0 -0
  53. sgspy-1.0.1.data/data/sgspy/legacy.dll +0 -0
  54. sgspy-1.0.1.data/data/sgspy/libcrypto-3-x64.dll +0 -0
  55. sgspy-1.0.1.data/data/sgspy/libcurl.dll +0 -0
  56. sgspy-1.0.1.data/data/sgspy/libecpg.dll +0 -0
  57. sgspy-1.0.1.data/data/sgspy/libecpg_compat.dll +0 -0
  58. sgspy-1.0.1.data/data/sgspy/libexpat.dll +0 -0
  59. sgspy-1.0.1.data/data/sgspy/liblzma.dll +0 -0
  60. sgspy-1.0.1.data/data/sgspy/libpgtypes.dll +0 -0
  61. sgspy-1.0.1.data/data/sgspy/libpng16.dll +0 -0
  62. sgspy-1.0.1.data/data/sgspy/libpq.dll +0 -0
  63. sgspy-1.0.1.data/data/sgspy/libsharpyuv.dll +0 -0
  64. sgspy-1.0.1.data/data/sgspy/libssl-3-x64.dll +0 -0
  65. sgspy-1.0.1.data/data/sgspy/libwebp.dll +0 -0
  66. sgspy-1.0.1.data/data/sgspy/libwebpdecoder.dll +0 -0
  67. sgspy-1.0.1.data/data/sgspy/libwebpdemux.dll +0 -0
  68. sgspy-1.0.1.data/data/sgspy/libwebpmux.dll +0 -0
  69. sgspy-1.0.1.data/data/sgspy/libxml2.dll +0 -0
  70. sgspy-1.0.1.data/data/sgspy/lz4.dll +0 -0
  71. sgspy-1.0.1.data/data/sgspy/minizip.dll +0 -0
  72. sgspy-1.0.1.data/data/sgspy/netcdf.dll +0 -0
  73. sgspy-1.0.1.data/data/sgspy/openjp2.dll +0 -0
  74. sgspy-1.0.1.data/data/sgspy/pcre2-16.dll +0 -0
  75. sgspy-1.0.1.data/data/sgspy/pcre2-32.dll +0 -0
  76. sgspy-1.0.1.data/data/sgspy/pcre2-8.dll +0 -0
  77. sgspy-1.0.1.data/data/sgspy/pcre2-posix.dll +0 -0
  78. sgspy-1.0.1.data/data/sgspy/proj.db +0 -0
  79. sgspy-1.0.1.data/data/sgspy/proj_9.dll +0 -0
  80. sgspy-1.0.1.data/data/sgspy/qhull_r.dll +0 -0
  81. sgspy-1.0.1.data/data/sgspy/spatialite.dll +0 -0
  82. sgspy-1.0.1.data/data/sgspy/sqlite3.dll +0 -0
  83. sgspy-1.0.1.data/data/sgspy/szip.dll +0 -0
  84. sgspy-1.0.1.data/data/sgspy/tiff.dll +0 -0
  85. sgspy-1.0.1.data/data/sgspy/turbojpeg.dll +0 -0
  86. sgspy-1.0.1.data/data/sgspy/uriparser.dll +0 -0
  87. sgspy-1.0.1.data/data/sgspy/zlib1.dll +0 -0
  88. sgspy-1.0.1.data/data/sgspy/zstd.dll +0 -0
  89. sgspy-1.0.1.dist-info/METADATA +13 -0
  90. sgspy-1.0.1.dist-info/RECORD +91 -0
  91. sgspy-1.0.1.dist-info/WHEEL +4 -0
sgspy/utils/vector.py ADDED
@@ -0,0 +1,262 @@
1
+ # ******************************************************************************
2
+ #
3
+ # Project: sgs
4
+ # Purpose: GDALDataset wrapper for vector operations
5
+ # Author: Joseph Meyer
6
+ # Date: June, 2025
7
+ #
8
+ # ******************************************************************************
9
+
10
+ import sys
11
+ import os
12
+ import tempfile
13
+ from typing import Optional
14
+ import warnings
15
+
16
+ import matplotlib.pyplot as plt
17
+ import matplotlib #fpr type checking matplotlib.axes.Axes
18
+
19
+ from.import plot
20
+ from .plot import plot_vector
21
+
22
+ sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
23
+ from _sgs import GDALVectorWrapper
24
+
25
+ try:
26
+ import geopandas as gpd
27
+ GEOPANDAS = True
28
+ except ImportError as e:
29
+ GEOPANDAS = False
30
+
31
+ PROJDB_PATH = os.path.join(sys.prefix, "sgspy")
32
+
33
+ ##
34
+ # @ingroup user_utils
35
+ # This class represents a spatial vector, and is used as an input to many sgs functions.
36
+ #
37
+ # It has a number of additional uses, including displaying info about the vector, converting
38
+ # to a GDAL or GeoPandas object.
39
+ #
40
+ # Accessing vector info:
41
+ #
42
+ # vector metadata can be displayed using the info() function. All layers
43
+ # are displayed unless a specific layer is specified. The per-layer info
44
+ # includes: name, number of features, number of fields, geomtype, and bounds.
45
+ #
46
+ # Public Attributes:
47
+ # --------------------
48
+ # layer_names : list[str] @n
49
+ # a list of layer names
50
+ #
51
+ # Public Methods:
52
+ # --------------------
53
+ # info() @n
54
+ # takes an optional argument specify the band, and prints vector metadata to console
55
+ class SpatialVector:
56
+
57
+ def __init__(self,
58
+ image: str | GDALVectorWrapper):
59
+ """
60
+ Constructing method for the SpatialVector class.
61
+
62
+ Has one required parameter to specify a gdal dataset. The following
63
+ attributes are populated:
64
+ self.cpp_vector
65
+ self.layer_names
66
+
67
+ Parameters
68
+ --------------------
69
+ image: str | GDALVectorWrapper
70
+ specifies a path to a vector file or the C++ class object itself
71
+ """
72
+ if type(image) is str:
73
+ self.cpp_vector = GDALVectorWrapper(image, PROJDB_PATH)
74
+ elif type(image) is GDALVectorWrapper:
75
+ self.cpp_vector = image
76
+ else:
77
+ raise TypeError("'image' parameter to SpatialVector constructor must be of type str or GDALVectorWrapper.")
78
+
79
+ self.layers = self.cpp_vector.get_layer_names()
80
+
81
+ def print_info(self,
82
+ layer_name: str,
83
+ layer_info: dict):
84
+ """
85
+ prints layer information using the layer_info from self.cpp_vector.
86
+
87
+ This is an internal function not meant to be used by the end user.
88
+
89
+ Parameters
90
+ --------------------
91
+ name : str
92
+ str containing the layer name
93
+ layer_info : dict
94
+ dict containing 'feature_count', 'field_count', 'geometry_type', 'xmax', 'xmin', 'ymax', and 'ymin' items
95
+ """
96
+ print("{} layer info:".format(layer_name))
97
+ print("feature count: {}".format(layer_info['feature_count']))
98
+ print("field count: {}".format(layer_info['field_count']))
99
+ print("geometry type: {}".format(layer_info['geometry_type']))
100
+ print("bounds (xmin, xmax, ymin, ymax): ({}, {}, {}, {})".format(
101
+ layer_info['xmin'],
102
+ layer_info['xmax'],
103
+ layer_info['ymin'],
104
+ layer_info['ymax']
105
+ ))
106
+ if layer_info['crs']: print("crs: {}".format(layer_info['crs']))
107
+ print()
108
+
109
+ def info(self,
110
+ layer: Optional[int | str] = None):
111
+ """
112
+ calls self.print_info depending on layer parameter. If no layer is given,
113
+ print all layers. A layer may be specified by either a str or an int.
114
+
115
+ Parameters
116
+ --------------------
117
+ layer : str or int
118
+ specifies the layer to print information on
119
+ """
120
+ if layer is not None and type(layer) not in [int, str]:
121
+ raise TypeError("'layer' parameter, if given, must be of type int or str.")
122
+
123
+ if type(layer) == str:
124
+ self.print_info(layer, self.cpp_vector.get_layer_info(layer))
125
+ elif type(layer) == int:
126
+ self.print_info(self.layers[layer], self.cpp_vector.get_layer_info(self.layers[layer]))
127
+ else:
128
+ for layer in self.layers:
129
+ self.print_info(layer, self.cpp_vector.get_layer_info(layer))
130
+
131
+ def samples_as_wkt(self):
132
+ """
133
+ Calls get_wkt_points on the underlying cpp class, to return
134
+ the samples as wkt strings.
135
+
136
+ This function requires that there be a layer named 'samples' which
137
+ is comprised entirely of Points or MultiPoints. These conditions
138
+ will be satisfied if this SpatialVector is the output of one of the
139
+ sampling functions in the sgs package.
140
+ """
141
+ if "samples" not in self.layers:
142
+ print("this vector does not have a layer 'samples'")
143
+ else:
144
+ return self.cpp_vector.get_wkt_points('samples')
145
+
146
+ def plot(self,
147
+ geomtype: str,
148
+ ax: Optional[matplotlib.axes.Axes] = None,
149
+ layer: Optional[int | str] = None,
150
+ **kwargs):
151
+ """
152
+ Calls plot_vector on self.
153
+
154
+ Paramters
155
+ --------------------
156
+ ax : matplotlib.axes.Axes
157
+ axes to plot the raster on
158
+ geomtype : str
159
+ the geometry type to try to print
160
+ layer : None | int | str
161
+ specification of which layer to print
162
+ **kwargs
163
+ any parameter which may be passed ot matplotlib.pyplot.plot
164
+ """
165
+
166
+ if ax is not None:
167
+ plot_vector(self, ax, geomtype, layer, **kwargs)
168
+ else:
169
+ fig, ax = plt.subplots()
170
+ plot_vector(self, ax, geomtype, layer, **kwargs)
171
+ plt.show()
172
+
173
+ @classmethod
174
+ def from_geopandas(cls, obj, layer_name: str=None):
175
+ """
176
+ This function is used to convert a geopandas object into an sgspy.SpatialVector. The geopandas object
177
+ may either by of type GeoDataFrame or GeoSeries.
178
+
179
+ If a particular layer name is desired, it can be passed as a parameter.
180
+
181
+ Examples:
182
+
183
+ gdf = gpd.read_file("access.shp")
184
+ access = sgspy.SpatialVector.from_geopandas(gdf)
185
+
186
+
187
+ gs = gpd['geometry'] #geometry column is a geoseries
188
+ access = sgspy.SpatialVector.from_geopandas(gs)
189
+
190
+
191
+ gdf = gpd.read_file("access.shp")
192
+ gdf = gdf[gdf == "LineString"]
193
+ access = sgspy.SpatialVector.from_geopandas(gdf)
194
+ """
195
+ if layer_name is not None and type(layer_name) is not str:
196
+ raise TypeError("layer_name, if given, must be of type 'str'.")
197
+
198
+ if not GEOPANDAS:
199
+ raise RuntimeError("from_geopandas() can only be called if geopandas was successfully imported, but it wasn't.")
200
+
201
+ if type(obj) is not gpd.geodataframe.GeoDataFrame and type(obj) is not gpd.geoseries.GeoSeries:
202
+ raise TypeError("the object passed must be of type geopandas GeoDataFrame or GeoSeries")
203
+
204
+ #get a the geopandas object as a geoseries
205
+ if type(obj) is gpd.geodataframe.GeoDataFrame:
206
+ if 'geometry' not in obj.columns:
207
+ raise RuntimeError("'geometry' must be a column in the geodataframe passed")
208
+ gdf = obj
209
+ gs = gdf['geometry']
210
+ else:
211
+ gs = obj
212
+ gdf = gpd.GeoDataFrame(gs)
213
+
214
+ if layer_name is None: layer_name = 'geopandas_geodataframe'
215
+ projection = gs.crs.to_wkt()
216
+
217
+ # the conversion to geojson may raise a warning about how the projection is unable to be converted to the new format correctly
218
+ #
219
+ # however, we have the projection from the geodataframes geoseries crs, so it won't be an issue
220
+ with warnings.catch_warnings():
221
+ warnings.simplefilter("ignore")
222
+ geojson = gdf.to_json().encode('utf-8')
223
+
224
+ cpp_vector = GDALVectorWrapper(geojson, projection, layer_name, PROJDB_PATH)
225
+ return cls(cpp_vector)
226
+
227
+ def to_geopandas(self):
228
+ """
229
+ This function is used to convert an sgspy.SpatialVector into a geopandas geodataframe.
230
+
231
+ Examples:
232
+
233
+ access = sgspy.SpatialVector("access.shp")
234
+ gdf = access.to_geopandas()
235
+ """
236
+ if not GEOPANDAS:
237
+ raise RuntimeError("to_geopandas() can only be called if geopandas was successfully imported, but it wasn't.")
238
+
239
+ tempdir = tempfile.gettempdir()
240
+ file = os.path.join(tempdir, "temp.geojson")
241
+
242
+ #get the projection info
243
+ projection = self.cpp_vector.get_projection()
244
+
245
+ #write the dataset to a tempfile
246
+ self.cpp_vector.write(file)
247
+
248
+ # This method of writing to a file then reading from that file is definitely clunky,
249
+ # however it's easy. Theres the possiblity of iterating through every field within
250
+ # every feature, and needing to then call a different function depending on the data
251
+ # type of the field (because C++ types are rigid). That may still be done in the future,
252
+ # but for now this works.
253
+
254
+ #have geopandas read the tempfile
255
+ gdf = gpd.read_file(file)
256
+ if projection != "": gdf.set_crs(projection, inplace=True, allow_override=True)
257
+
258
+ #remove the geojson file
259
+ os.remove(file)
260
+
261
+ return gdf
262
+
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,13 @@
1
+ Metadata-Version: 2.1
2
+ Name: sgspy
3
+ Version: 1.0.1
4
+ Requires-Dist: numpy
5
+ Requires-Dist: matplotlib
6
+ Requires-Dist: daal==2025.9.0
7
+ Requires-Dist: tbb==2022.*
8
+ Requires-Dist: mkl==2025.3.0
9
+ Requires-Dist: onemkl-license==2025.3.0
10
+ Provides-Extra: test
11
+ Requires-Dist: pytest; extra == "test"
12
+ Requires-Dist: geopandas; extra == "test"
13
+
@@ -0,0 +1,91 @@
1
+ sgspy-1.0.1.dist-info/METADATA,sha256=ApiRB7L0MnAaLiAo3bdBDg2hunTrd_lrGDhIn1hMmhw,325
2
+ sgspy-1.0.1.dist-info/WHEEL,sha256=JdLTWhc73oJ-lqTBYGgiVontr_vhzwzbpAOin_2bxTI,85
3
+ sgspy/_sgs.cp311-win_amd64.pyd,sha256=GajwoshSbW8mQtmk8WKG7F0lgoZfdVISuYcFnmDEaWw,685568
4
+ sgspy/_sgs.cp311-win_amd64.lib,sha256=s5MvpxEOdoCzapWHaYoeDxsW9-Llbm8B88Fp1M-nGPY,1960
5
+ sgspy/__init__.py,sha256=uqAO-GSTtBLP3CMJBkpFaJLgPG94HGQI0QgSPxAHqz4,2664
6
+ sgspy/calculate/__init__.py,sha256=CcPyrCad1eV9b2Ea9aYd5yhkyBNaWs9iWCs7mlnhksY,349
7
+ sgspy/calculate/pca/__init__.py,sha256=2GYqQC7nUo61tHN_e_8AOA3svLnTm5-doi_NHQYHdEg,41
8
+ sgspy/calculate/pca/pca.py,sha256=YFi7qmANvWQGC71XUkRmWCIUEz2Em8bAlJKUhQkeSGw,5324
9
+ sgspy/calculate/representation/__init__.py,sha256=iYBZOIn_k5jDiR_kO2Xwnoxts9g0iObdu25cg3tEMNc,74
10
+ sgspy/calculate/representation/representation.py,sha256=ROXglH8cGmJLPn9GkgAGxKCF6QLig4S81ALAAme9p5Q,75
11
+ sgspy/sample/__init__.py,sha256=kCh9fhhcpCZZW64OhFvTgYWGI0lLRJOz1xYBTYqqg_I,452
12
+ sgspy/sample/ahels/__init__.py,sha256=v7ENL_oQBWJ7M61E0Nlj36h7tYRNZv6fHU5-zsJsfPs,47
13
+ sgspy/sample/ahels/ahels.py,sha256=-4dcaJBSNeb2I2FCC7JatW_TU2hPsoQE16Rv5mfTvXQ,66
14
+ sgspy/sample/clhs/__init__.py,sha256=sdmpXqseVzuPOyh5A3HOjGZe7D2wHdYF8FKPk94zGso,44
15
+ sgspy/sample/clhs/clhs.py,sha256=n_ABXekJoZEaHe7Dw-8iZkXnXbd9pYFyzuqsQHvfJ1Y,7544
16
+ sgspy/sample/nc/__init__.py,sha256=tm-uL2iBDJ3Zyw6PrD1EP4UY64HHxXqAVFuaZcf1CXI,38
17
+ sgspy/sample/nc/nc.py,sha256=icufIsixrZc4EEn2RsG7Jr2yJI6_8diMiBlvWParaA4,63
18
+ sgspy/sample/srs/__init__.py,sha256=WWGlguqIEub30aqTSBlb8G3LRLvsX-ygKP5vLQZe-0o,41
19
+ sgspy/sample/srs/srs.py,sha256=8IgtzOy8wQg6Z2qPw8nvfUUEd1UPcr8_8Vm3EkeU9LI,8016
20
+ sgspy/sample/strat/__init__.py,sha256=7SWBSdFxPQ5G-ywQ3Icj7m-jc9K3IBsmggLL9mNpK5k,47
21
+ sgspy/sample/strat/strat.py,sha256=qj4KmlC_ON2nZY5WX8KAYqkXd1DRjhtkGzIcTIuY-eM,16379
22
+ sgspy/sample/systematic/__init__.py,sha256=XgmBuxpo9eP1b9Ve9wTQZjIifq_be9kX0IuzKELVp9s,62
23
+ sgspy/sample/systematic/systematic.py,sha256=hodkoyXVUGlKQz3R4P7ZSfW_B464VP3i_yyYF9qiuEU,8383
24
+ sgspy/stratify/__init__.py,sha256=prfl-btAw9MtSx204ZkIlsD86osX4VLZJ-n5zWtPESA,426
25
+ sgspy/stratify/breaks/__init__.py,sha256=SUne6xWHPeSmhuMfTjYj_5ldS15fJb_GQTzZ2kB_I9I,50
26
+ sgspy/stratify/breaks/breaks.py,sha256=k_CUGuOvxBbmCpuek3X3l5hq-eDflKI4B5r1sFp3OuI,9135
27
+ sgspy/stratify/kmeans/__init__.py,sha256=wVys62WNxn9aNwCoLUkySc-N5HS-X1l31zD284pMgdU,50
28
+ sgspy/stratify/kmeans/kmeans.py,sha256=fd-ADfnDsQd8JQtTTEuLC2b9jl58tMsPHZ45xoiAQk8,67
29
+ sgspy/stratify/map/__init__.py,sha256=rfeZi0LdaiYBLyWNaAf8Yh31Ji91yL31jYnWHm4c-1E,73
30
+ sgspy/stratify/map/map_stratifications.py,sha256=Xr8qoxlkeMGveI61UX579--9k0RVhbF7evlZu0yUUKI,10710
31
+ sgspy/stratify/poly/__init__.py,sha256=inI-7iYAYDwx-7kENoyjIR8T3GyQhNwoZQm-SdwLi-4,44
32
+ sgspy/stratify/poly/poly.py,sha256=CEgjrx_LV_ntFb2nhuHnak5Rage4sz0IsvKJjpwYnXo,6217
33
+ sgspy/stratify/quantiles/__init__.py,sha256=1JLFpu2r2V085ycORrL8wCQZdYabI9JwPSX9e887CDI,59
34
+ sgspy/stratify/quantiles/quantiles.py,sha256=0IMXVdnO2s4arwVBtakkLWOcjEyCizLj5Z8e3n39I0E,12285
35
+ sgspy/utils/__init__.py,sha256=D6HJrfcK2qlUirrwkTLH9GpbjSoWZZz7RLbLxvp8K-0,305
36
+ sgspy/utils/raster.py,sha256=kRDNaXcAh3v2kuydU4q_uPT_2ZLbEm4r5eW2RMf-wjE,23412
37
+ sgspy/utils/vector.py,sha256=0qC_T7tP8uhITSxBhGhxujif9kIfKZFNVttcLhoDTpI,9614
38
+ sgspy/utils/plot.py,sha256=zaZoEtmbkWpl6eHe_5OeuEG_fGR9tb1W9ULMOAshXuM,5671
39
+ sgspy-1.0.1.data/data/sgspy/aec.dll,sha256=PBiZhSIMWGL9Fupr-tjBTnwqOkEvM1gkyFyXlRRqlb4,32256
40
+ sgspy-1.0.1.data/data/sgspy/charset-1.dll,sha256=dzcZ_zQ4Shw12p2-rw5K9D_AIDNmW0zDJRTZ99r96q8,11776
41
+ sgspy-1.0.1.data/data/sgspy/freexl-1.dll,sha256=z1KCYIQmXlMUtYFm9e5bYvAoik1LptzpFarJG-shziU,67584
42
+ sgspy-1.0.1.data/data/sgspy/gdal.dll,sha256=Mleo_5tDHeyjSRPlxt1cxvqEScjHBd26a7d9d7DYWWo,21217280
43
+ sgspy-1.0.1.data/data/sgspy/geos.dll,sha256=l5ak0jKNxrxu5chqRGw-4eDT560Ll9hPjbLCoFhgojQ,2564096
44
+ sgspy-1.0.1.data/data/sgspy/geos_c.dll,sha256=JWD3XvNBe1KL99F-9W01Ds6wkiYeDYf-fnHSX6vldJs,451072
45
+ sgspy-1.0.1.data/data/sgspy/geotiff.dll,sha256=1jCNxqKUX-_5pho8_fZ49D1TWkSY9g5KoNehZT67uwI,161792
46
+ sgspy-1.0.1.data/data/sgspy/gif.dll,sha256=71SfrYYUWdA28AwgSLZYmAKOmfAvG3cKx7bw01nBNeo,36864
47
+ sgspy-1.0.1.data/data/sgspy/hdf5.dll,sha256=hXU_Yj-qfwIwM6OKpYtZ9zqqi9d2OmQrTw_CIElXZEE,3348992
48
+ sgspy-1.0.1.data/data/sgspy/hdf5_cpp.dll,sha256=3RHjF0Xs2WbtCsWn2mHtsUGwx2w433UBMHjECc0D2tY,297984
49
+ sgspy-1.0.1.data/data/sgspy/hdf5_hl.dll,sha256=1M6hqXBbW356R6VndRSolWSQ6ZTbSkhpatiOZFOxOfo,120832
50
+ sgspy-1.0.1.data/data/sgspy/hdf5_hl_cpp.dll,sha256=iirTPW2DQfFs6-7IHLNrSg9p0tfjEB4jwL2r2iBVUYM,15872
51
+ sgspy-1.0.1.data/data/sgspy/iconv-2.dll,sha256=z9ru3C2GI1UdAYxN6jyxSLXK51rln56I3yThf6geKHQ,1089024
52
+ sgspy-1.0.1.data/data/sgspy/jpeg62.dll,sha256=cgrEpzbUrcAQGGJBfxnVKp_7Ri1mh9nnHRzR18hydV0,684544
53
+ sgspy-1.0.1.data/data/sgspy/json-c.dll,sha256=CQi-k-Citgj0OdpgD6L-4f4tryXFkzvacMDuAWzn64g,58880
54
+ sgspy-1.0.1.data/data/sgspy/legacy.dll,sha256=7cmgwo20feOhB22PnGwt_HKbQ7K5Gpt5GWxnMXwVjM0,103424
55
+ sgspy-1.0.1.data/data/sgspy/Lerc.dll,sha256=Si5LtIrVkgSA2UFjp8SbR3QqXj6xrrG0EzT2stNe014,543744
56
+ sgspy-1.0.1.data/data/sgspy/libcrypto-3-x64.dll,sha256=VHsz3yOSsWmx1WdMN38lLPlIbN2kE_lwxK-dPI9QdnE,5241856
57
+ sgspy-1.0.1.data/data/sgspy/libcurl.dll,sha256=s4HRC6uQT4P4HIYO8ZMltPvEN6HiUwiwIq1Q7U__heI,630784
58
+ sgspy-1.0.1.data/data/sgspy/libecpg.dll,sha256=htQw8pibsV9nvDBtIDk2TeNK9lqfGzXL5fVpdzBlMsI,82944
59
+ sgspy-1.0.1.data/data/sgspy/libecpg_compat.dll,sha256=_DQuf-kI7Uuhu6sA90zjVOQ4CRmTBIKQlz-orB0fDzE,22016
60
+ sgspy-1.0.1.data/data/sgspy/libexpat.dll,sha256=PofN8EjeN-5zrxMcdmuMNatzMS4QcnNodmrG7Z8mwyo,159232
61
+ sgspy-1.0.1.data/data/sgspy/liblzma.dll,sha256=CJ5iuL2YfQ_6SPtkEM8G_Xplfy-cgpERNFXd9eHjqbI,188928
62
+ sgspy-1.0.1.data/data/sgspy/libpgtypes.dll,sha256=C8yQNJAwCvFCY386riD-gVkAvn_o-LPAqZYYmb3viBk,74240
63
+ sgspy-1.0.1.data/data/sgspy/libpng16.dll,sha256=VrOBxA6EkSulCsuOQNTDJyF3dBuqjH17KK9AbI8LYlU,196608
64
+ sgspy-1.0.1.data/data/sgspy/libpq.dll,sha256=A-kDA4qA7NHBWG8Jo7eo6lvyZqzKkTNAWEagpWsY8bE,305664
65
+ sgspy-1.0.1.data/data/sgspy/libsharpyuv.dll,sha256=Q-r-BQTrDV0XvaEYqspeByoaL8pcF9MvdPbaZqNxMsQ,25600
66
+ sgspy-1.0.1.data/data/sgspy/libssl-3-x64.dll,sha256=JYxjD3FnflCiBulJ6UtlawwdpG1sSkMnNt8u6RndZ5A,863744
67
+ sgspy-1.0.1.data/data/sgspy/libwebp.dll,sha256=bzllL_9RwlXHQImEzREWg0v_LSCaRNDPFJ2ZlcZw7rY,373760
68
+ sgspy-1.0.1.data/data/sgspy/libwebpdecoder.dll,sha256=jI9Izkt6ELNiIVr-8U_fQ-DC5jkLimaX-tzw5jB5qik,162304
69
+ sgspy-1.0.1.data/data/sgspy/libwebpdemux.dll,sha256=b_bQdXt4I-sUKpcAj6nqX1rpk9qEXtBUUc5sYX-lH-4,20480
70
+ sgspy-1.0.1.data/data/sgspy/libwebpmux.dll,sha256=V4oANiPNu6Rs3iOFhQPpUjdfQnwlK7on1Jz-cNG8mmQ,41472
71
+ sgspy-1.0.1.data/data/sgspy/libxml2.dll,sha256=2-J11hjORFHypqg0KXMYNDMgvg8FGq-uBDSxMqN8Q0o,1284096
72
+ sgspy-1.0.1.data/data/sgspy/lz4.dll,sha256=w063v_s99FT_GnvulVpUknqUSpIf6yDW6srFfjsMznA,127488
73
+ sgspy-1.0.1.data/data/sgspy/minizip.dll,sha256=CDfjah4sxYLWI74nrc3JSHUrpvyIhFSd-qJCcCsFT2s,48128
74
+ sgspy-1.0.1.data/data/sgspy/netcdf.dll,sha256=lAyIdfI5xoTkw04TnhUTv_dZsmOymk8e_5mjht3RER8,1103360
75
+ sgspy-1.0.1.data/data/sgspy/openjp2.dll,sha256=Pz6LRdyszV5tdFfc04HUK-8vLOVS7MzsunERzNT2cNQ,360448
76
+ sgspy-1.0.1.data/data/sgspy/pcre2-16.dll,sha256=e4hwrqNvF6ik1wMsJKKj2TUIi7bOKn8eOGPy9F3PfY0,560640
77
+ sgspy-1.0.1.data/data/sgspy/pcre2-32.dll,sha256=-XA-WHirdbgRBwgWIIknFicJPv0_Qx-2B3YA6GRrIzI,540160
78
+ sgspy-1.0.1.data/data/sgspy/pcre2-8.dll,sha256=tNlyftg-2Yyu4sn6077kah9zZ3VAlHB2dzO7I-p-KMs,600064
79
+ sgspy-1.0.1.data/data/sgspy/pcre2-posix.dll,sha256=Yx1untbfpv9dDvUi0Am4hC0deFCiaqI_Umh8OIrSMH4,14336
80
+ sgspy-1.0.1.data/data/sgspy/proj_9.dll,sha256=KHmioNBFfrDOQ36vl4CZBX--rInCEE6R2Fet77i2urI,3453440
81
+ sgspy-1.0.1.data/data/sgspy/qhull_r.dll,sha256=NHrwjOr-XMpppYnQOE3Cp9WFNMLQIuGaHjj46r0NJZU,451072
82
+ sgspy-1.0.1.data/data/sgspy/spatialite.dll,sha256=86JKKRfvQcLkQrQDYhTR4erW_8KsXeMxsW2phN2W9i4,7559680
83
+ sgspy-1.0.1.data/data/sgspy/sqlite3.dll,sha256=BqhHQ1bJZKLAMt1ZIQ77NbaO8zfzurcfYLL5rLBeicA,1120768
84
+ sgspy-1.0.1.data/data/sgspy/szip.dll,sha256=EfXlJjyDbhmJ_h3xG5uNi_n4C0Xmyszv54vnPWWpqsA,33792
85
+ sgspy-1.0.1.data/data/sgspy/tiff.dll,sha256=M3n-yQaXeOhvZAP1oiBpErfgossTzEI1TN6gtxGzkSI,467968
86
+ sgspy-1.0.1.data/data/sgspy/turbojpeg.dll,sha256=BStLfPl4xdTvAuztengNJpvEA68LTpGdfdf_wVn70dU,827904
87
+ sgspy-1.0.1.data/data/sgspy/uriparser.dll,sha256=THjHI_gf-EZCrofNt4S96AQNK1CQcJMFUFDXsDDMLf8,108032
88
+ sgspy-1.0.1.data/data/sgspy/zlib1.dll,sha256=jG1s53Zbunc6AUYSwJSjlM0cbiUh7rmoe-ohvhhNXpg,90112
89
+ sgspy-1.0.1.data/data/sgspy/zstd.dll,sha256=yWp6yOMsyaskO_zx-KQiBvZmrNHiEy6VECoFp2Rhag4,658944
90
+ sgspy-1.0.1.data/data/sgspy/proj.db,sha256=sGOmBu2wzZwqDJ9V5yu9mez2dvZCrqH4izR1mp9Q0Lk,9359360
91
+ sgspy-1.0.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: meson
3
+ Root-Is-Purelib: false
4
+ Tag: cp311-cp311-win_amd64