ssb-sgis 1.0.4__py3-none-any.whl → 1.0.6__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 -5
- sgis/debug_config.py +1 -0
- sgis/geopandas_tools/buffer_dissolve_explode.py +3 -40
- sgis/geopandas_tools/conversion.py +37 -9
- sgis/geopandas_tools/general.py +330 -106
- sgis/geopandas_tools/geometry_types.py +38 -33
- sgis/geopandas_tools/overlay.py +5 -1
- sgis/io/dapla_functions.py +33 -17
- sgis/maps/explore.py +16 -5
- sgis/maps/map.py +3 -0
- sgis/maps/maps.py +0 -1
- sgis/networkanalysis/closing_network_holes.py +100 -22
- sgis/networkanalysis/cutting_lines.py +4 -147
- sgis/networkanalysis/finding_isolated_networks.py +6 -0
- sgis/networkanalysis/nodes.py +4 -110
- sgis/parallel/parallel.py +267 -182
- sgis/raster/image_collection.py +789 -836
- sgis/raster/indices.py +0 -90
- sgis/raster/regex.py +146 -0
- sgis/raster/sentinel_config.py +9 -0
- {ssb_sgis-1.0.4.dist-info → ssb_sgis-1.0.6.dist-info}/METADATA +1 -1
- {ssb_sgis-1.0.4.dist-info → ssb_sgis-1.0.6.dist-info}/RECORD +24 -26
- sgis/raster/cube.py +0 -1274
- sgis/raster/cubebase.py +0 -25
- sgis/raster/raster.py +0 -1475
- {ssb_sgis-1.0.4.dist-info → ssb_sgis-1.0.6.dist-info}/LICENSE +0 -0
- {ssb_sgis-1.0.4.dist-info → ssb_sgis-1.0.6.dist-info}/WHEEL +0 -0
sgis/__init__.py
CHANGED
|
@@ -4,9 +4,6 @@ config = {
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import sgis.raster.indices as indices
|
|
7
|
-
from sgis.raster.raster import Raster
|
|
8
|
-
from sgis.raster.raster import get_shape_from_bounds
|
|
9
|
-
from sgis.raster.raster import get_transform_from_bounds
|
|
10
7
|
|
|
11
8
|
from .geopandas_tools.bounds import Gridlooper
|
|
12
9
|
from .geopandas_tools.bounds import bounds_to_points
|
|
@@ -45,6 +42,7 @@ from .geopandas_tools.general import drop_inactive_geometry_columns
|
|
|
45
42
|
from .geopandas_tools.general import get_common_crs
|
|
46
43
|
from .geopandas_tools.general import get_grouped_centroids
|
|
47
44
|
from .geopandas_tools.general import get_line_segments
|
|
45
|
+
from .geopandas_tools.general import make_lines_between_points
|
|
48
46
|
from .geopandas_tools.general import points_in_bounds
|
|
49
47
|
from .geopandas_tools.general import random_points
|
|
50
48
|
from .geopandas_tools.general import random_points_in_polygons
|
|
@@ -52,6 +50,7 @@ from .geopandas_tools.general import sort_large_first
|
|
|
52
50
|
from .geopandas_tools.general import sort_long_first
|
|
53
51
|
from .geopandas_tools.general import sort_short_first
|
|
54
52
|
from .geopandas_tools.general import sort_small_first
|
|
53
|
+
from .geopandas_tools.general import split_out_circles
|
|
55
54
|
from .geopandas_tools.general import to_lines
|
|
56
55
|
from .geopandas_tools.geocoding import address_to_coords
|
|
57
56
|
from .geopandas_tools.geocoding import address_to_gdf
|
|
@@ -102,6 +101,7 @@ from .maps.tilesources import kartverket as kartverket_tiles
|
|
|
102
101
|
from .maps.tilesources import xyz as xyztiles
|
|
103
102
|
from .networkanalysis.closing_network_holes import close_network_holes
|
|
104
103
|
from .networkanalysis.closing_network_holes import close_network_holes_to_deadends
|
|
104
|
+
from .networkanalysis.closing_network_holes import get_k_nearest_points_for_deadends
|
|
105
105
|
from .networkanalysis.cutting_lines import cut_lines
|
|
106
106
|
from .networkanalysis.cutting_lines import cut_lines_once
|
|
107
107
|
from .networkanalysis.cutting_lines import split_lines_by_nearest_point
|
|
@@ -118,8 +118,8 @@ from .networkanalysis.nodes import make_node_ids
|
|
|
118
118
|
from .networkanalysis.traveling_salesman import traveling_salesman_problem
|
|
119
119
|
from .parallel.parallel import Parallel
|
|
120
120
|
from .parallel.parallel import parallel_overlay
|
|
121
|
-
from .
|
|
122
|
-
from .
|
|
121
|
+
from .parallel.parallel import parallel_overlay_rowwise
|
|
122
|
+
from .parallel.parallel import parallel_sjoin
|
|
123
123
|
from .raster.image_collection import Band
|
|
124
124
|
from .raster.image_collection import Image
|
|
125
125
|
from .raster.image_collection import ImageCollection
|
sgis/debug_config.py
CHANGED
|
@@ -9,6 +9,7 @@ _DEBUG_CONFIG = {
|
|
|
9
9
|
# "center": (5.3719398, 59.00999914, 0.01),
|
|
10
10
|
# "center": (5.27306727, 59.44232754, 200),
|
|
11
11
|
# "center": (5.85575588, 62.33991158, 200),
|
|
12
|
+
# "center": (12.11270809, 66.55499008, 10),
|
|
12
13
|
# "center": (26.02870514, 70.68108478, 200),
|
|
13
14
|
"center": _NoExplore(),
|
|
14
15
|
"print": False,
|
|
@@ -24,7 +24,6 @@ from geopandas import GeoSeries
|
|
|
24
24
|
from shapely import get_num_geometries
|
|
25
25
|
|
|
26
26
|
from ..parallel.parallel import Parallel
|
|
27
|
-
from .general import _grouped_unary_union
|
|
28
27
|
from .general import _parallel_unary_union
|
|
29
28
|
from .general import _unary_union_for_notna
|
|
30
29
|
from .geometry_types import make_all_singlepart
|
|
@@ -252,8 +251,6 @@ def _dissolve(
|
|
|
252
251
|
aggfunc
|
|
253
252
|
)
|
|
254
253
|
|
|
255
|
-
# dissolved = gdf.groupby(by, **dissolve_kwargs)[other_cols].agg(aggfunc)
|
|
256
|
-
|
|
257
254
|
if n_jobs > 1:
|
|
258
255
|
try:
|
|
259
256
|
agged = _parallel_unary_union(
|
|
@@ -270,48 +267,14 @@ def _dissolve(
|
|
|
270
267
|
print(e, dissolved, agged, many_hits)
|
|
271
268
|
raise e
|
|
272
269
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
# print("\n\n\ngeomsagged\n", geoms_agged, geoms_agged.shape)
|
|
277
|
-
geoms_agged = _grouped_unary_union(many_hits, by, as_index=True, **dissolve_kwargs)
|
|
278
|
-
# print(geoms_agged, geoms_agged.shape)
|
|
279
|
-
|
|
280
|
-
# if not as_index:
|
|
281
|
-
# try:
|
|
282
|
-
# geoms_agged = geoms_agged[geom_col]
|
|
283
|
-
# except KeyError:
|
|
284
|
-
# pass
|
|
270
|
+
geoms_agged = many_hits.groupby(by, **dissolve_kwargs)[geom_col].agg(
|
|
271
|
+
lambda x: _unary_union_for_notna(x, grid_size=grid_size)
|
|
272
|
+
)
|
|
285
273
|
|
|
286
274
|
dissolved[geom_col] = geoms_agged
|
|
287
275
|
|
|
288
276
|
if not as_index:
|
|
289
277
|
dissolved = dissolved.reset_index()
|
|
290
|
-
# else:
|
|
291
|
-
# one_hit = one_hit.set
|
|
292
|
-
# dissolved = dissolved.reset_index()
|
|
293
|
-
|
|
294
|
-
# from ..maps.maps import explore, explore_locals
|
|
295
|
-
# from .conversion import to_gdf
|
|
296
|
-
|
|
297
|
-
# try:
|
|
298
|
-
# explore(
|
|
299
|
-
# dissolved=to_gdf(dissolved, 25833),
|
|
300
|
-
# geoms_agged=to_gdf(geoms_agged, 25833),
|
|
301
|
-
# gdf=gdf,
|
|
302
|
-
# column="ARTYPE",
|
|
303
|
-
# )
|
|
304
|
-
# except Exception:
|
|
305
|
-
# explore(
|
|
306
|
-
# dissolved=to_gdf(dissolved, 25833),
|
|
307
|
-
# geoms_agged=to_gdf(geoms_agged, 25833),
|
|
308
|
-
# gdf=gdf,
|
|
309
|
-
# )
|
|
310
|
-
|
|
311
|
-
# from ..maps.maps import explore_locals
|
|
312
|
-
# from .conversion import to_gdf
|
|
313
|
-
|
|
314
|
-
# explore_locals()
|
|
315
278
|
|
|
316
279
|
try:
|
|
317
280
|
return GeoDataFrame(
|
|
@@ -12,9 +12,7 @@ import geopandas as gpd
|
|
|
12
12
|
import numpy as np
|
|
13
13
|
import pandas as pd
|
|
14
14
|
import pyproj
|
|
15
|
-
import rasterio
|
|
16
15
|
import shapely
|
|
17
|
-
from affine import Affine
|
|
18
16
|
from geopandas import GeoDataFrame
|
|
19
17
|
from geopandas import GeoSeries
|
|
20
18
|
from numpy.typing import NDArray
|
|
@@ -22,7 +20,6 @@ from pandas.api.types import is_array_like
|
|
|
22
20
|
from pandas.api.types import is_dict_like
|
|
23
21
|
from pandas.api.types import is_list_like
|
|
24
22
|
from pyproj import CRS
|
|
25
|
-
from rasterio import features
|
|
26
23
|
from shapely import Geometry
|
|
27
24
|
from shapely import box
|
|
28
25
|
from shapely import wkb
|
|
@@ -32,6 +29,20 @@ from shapely.geometry import Point
|
|
|
32
29
|
from shapely.geometry import shape
|
|
33
30
|
from shapely.ops import unary_union
|
|
34
31
|
|
|
32
|
+
try:
|
|
33
|
+
import rasterio
|
|
34
|
+
from rasterio import features
|
|
35
|
+
except ImportError:
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
try:
|
|
39
|
+
from affine import Affine
|
|
40
|
+
except ImportError:
|
|
41
|
+
|
|
42
|
+
class Affine:
|
|
43
|
+
"""Placeholder."""
|
|
44
|
+
|
|
45
|
+
|
|
35
46
|
try:
|
|
36
47
|
from torchgeo.datasets.geo import RasterDataset
|
|
37
48
|
except ImportError:
|
|
@@ -275,11 +286,12 @@ def to_gdf(
|
|
|
275
286
|
) -> GeoDataFrame:
|
|
276
287
|
"""Converts geometry-like objects to a GeoDataFrame.
|
|
277
288
|
|
|
278
|
-
Constructs a GeoDataFrame from any geometry-like object
|
|
279
|
-
or any interable of such objects.
|
|
289
|
+
Constructs a GeoDataFrame from any geometry-like object
|
|
290
|
+
(coordinates, wkt, wkb, dict, string) or any interable of such objects.
|
|
280
291
|
|
|
281
|
-
|
|
282
|
-
introduces unnecessary overhead
|
|
292
|
+
NOTE: The function is meant for convenience in testing and exploring,
|
|
293
|
+
not for production code since it introduces unnecessary overhead
|
|
294
|
+
and potential errors.
|
|
283
295
|
|
|
284
296
|
If obj is a DataFrame or dictionary, geometries can be in one column/key or 2-3
|
|
285
297
|
if coordiantes are in x and x (and z) columns. The column/key "geometry" is used
|
|
@@ -462,9 +474,25 @@ def to_gdf(
|
|
|
462
474
|
if index is not None:
|
|
463
475
|
obj.index = index
|
|
464
476
|
return GeoDataFrame({geom_col: obj}, geometry=geom_col, crs=crs, **kwargs)
|
|
465
|
-
# list etc.
|
|
466
477
|
else:
|
|
467
|
-
|
|
478
|
+
if isinstance(obj, str):
|
|
479
|
+
if (
|
|
480
|
+
obj.replace(" ", "")
|
|
481
|
+
.replace(",", "")
|
|
482
|
+
.replace(".", "")
|
|
483
|
+
.replace("(", "")
|
|
484
|
+
.replace(")", "")
|
|
485
|
+
.isnumeric()
|
|
486
|
+
):
|
|
487
|
+
# string of coordinates
|
|
488
|
+
obj = eval(obj)
|
|
489
|
+
obj = GeoSeries([_make_one_shapely_geom(obj)], index=index)
|
|
490
|
+
else:
|
|
491
|
+
# wkt
|
|
492
|
+
obj = GeoSeries([_make_one_shapely_geom(obj)], index=index)
|
|
493
|
+
else:
|
|
494
|
+
# list etc.
|
|
495
|
+
obj = GeoSeries(_make_shapely_geoms(obj), index=index)
|
|
468
496
|
return GeoDataFrame(
|
|
469
497
|
{geom_col: obj}, geometry=geom_col, index=index, crs=crs, **kwargs
|
|
470
498
|
)
|