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 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 .raster.cube import DataCube
122
- from .raster.cube import concat_cubes
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
- # geoms_agged = many_hits.groupby(by, **dissolve_kwargs)[geom_col].agg(
274
- # lambda x: _unary_union_for_notna(x, grid_size=grid_size)
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 (coordinates, wkt, wkb),
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
- Meant for convenience in testing and exploring, not for production code since it
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
- obj = GeoSeries(_make_shapely_geoms(obj), index=index)
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
  )