Conversion¶
- coordinate_array(gdf, strict=False, include_z=False)[source]¶
Creates a 2d ndarray of coordinates from point geometries.
- Parameters:
gdf (
GeoDataFrame
|GeoSeries
) – GeoDataFrame or GeoSeries of point geometries.strict (
bool
) – If False (default), geometries without coordinates are given the value None.include_z (
bool
) – Whether to include z-coordinates. Defaults to False.
- Return type:
ndarray
[Any
,dtype
[float64
]]- Returns:
np.ndarray of np.ndarrays of coordinates.
Examples:¶
>>> import sgis as sg >>> points = sg.to_gdf( ... [ ... (0, 1), ... (1, 0), ... (1, 1), ... (0, 0), ... (0.5, 0.5), ... (0.5, 0.25), ... (0.25, 0.25), ... (0.75, 0.75), ... (0.25, 0.75), ... (0.75, 0.25), ... ] ... ) >>> points geometry 0 POINT (0.59376 0.92577) 1 POINT (0.34075 0.91650) 2 POINT (0.74841 0.10627) 3 POINT (0.00966 0.87868) 4 POINT (0.38046 0.87879) >>> sg.coordinate_array(points) array([[0.59376221, 0.92577159], [0.34074678, 0.91650446], [0.74840912, 0.10626954], [0.00965935, 0.87867915], [0.38045827, 0.87878816]]) >>> sg.coordinate_array(points.geometry) array([[0.59376221, 0.92577159], [0.34074678, 0.91650446], [0.74840912, 0.10626954], [0.00965935, 0.87867915], [0.38045827, 0.87878816]])
- crs_to_string(crs)[source]¶
Extract the string of a CRS-like object.
- Return type:
str
- Parameters:
crs (Any)
- from_4326(lon, lat, crs=25833)[source]¶
Get utm 33 N coordinates from lonlat (4326).
- Return type:
tuple
[float
,float
]- Parameters:
lon (float)
lat (float)
- get_crs_from_dict(obj)[source]¶
Try to extract the ‘crs’ attribute of the object or an object in the object.
- Return type:
CRS
|None
|Any
- Parameters:
obj (Any)
- is_bbox_like(obj)[source]¶
Returns True if the object is an iterable of 4 numbers.
- Parameters:
obj (
Any
) – Any object.- Return type:
bool
- is_nested_geojson(obj)[source]¶
Returns True if the object is an iterable of all dicts.
- Parameters:
obj (
Any
) – Any object.- Return type:
bool
- to_4326(lon, lat, crs=25833)[source]¶
Get degree coordinates 33 N coordinates from lonlat (4326).
- Return type:
tuple
[float
,float
]- Parameters:
lon (float)
lat (float)
- to_bbox(obj)[source]¶
Returns 4-length tuple of bounds if possible, else raises ValueError.
- Parameters:
obj (
GeoDataFrame
|GeoSeries
|Geometry
|Collection
|Mapping
) – Object to be converted to bounding box. Can be geopandas or shapely objects, iterables of exactly four numbers or dictionary like/class with a the keys/attributes “minx”, “miny”, “maxx”, “maxy” or “xmin”, “ymin”, “xmax”, “ymax”.- Return type:
tuple
[float
,float
,float
,float
]
- to_gdf(obj, crs=None, geometry=None, **kwargs)[source]¶
Converts geometry-like objects to a GeoDataFrame.
Constructs a GeoDataFrame from any geometry-like object (coordinates, wkt, wkb, dict, string) or any interable of such objects.
NOTE: The function is meant for convenience in testing and exploring, not for production code since it introduces unnecessary overhead and potential errors.
If obj is a DataFrame or dictionary, geometries can be in one column/key or 2-3 if coordiantes are in x and x (and z) columns. The column/key “geometry” is used by default if it exists. The index and other columns/keys are preserved.
- Parameters:
obj (
Geometry
|str
|bytes
|list
|tuple
|dict
|GeoSeries
|Series
|DataFrame
|Iterator
) – the object to be converted to a GeoDataFrame.crs (
str
|tuple
[str
] |None
) – if None (default), it uses the crs of the GeoSeries if GeoSeries is the input type. Otherwise, no crs is used.geometry (
str
|tuple
[str
] |int
|None
) – Name of column(s) or key(s) in obj with geometry-like values. If not specified, the key/column ‘geometry’ will be used if it exists. If multiple columns, can be given as e.g. “xyz” or [“x”, “y”].**kwargs – additional keyword arguments taken by the GeoDataFrame constructor.
- Return type:
GeoDataFrame
- Returns:
A GeoDataFrame with one column, the geometry column.
Examples:¶
>>> import sgis as sg >>> coords = (10, 60) >>> sg.to_gdf(coords, crs=4326) geometry 0 POINT (10.00000 60.00000)
From wkt.
>>> wkt = "POINT (10 60)" >>> sg.to_gdf(wkt, crs=4326) geometry 0 POINT (10.00000 60.00000)
From DataFrame with x, y (optionally z) coordinate columns. Index and columns are preserved.
>>> df = pd.DataFrame({"x": [10, 11], "y": [60, 59]}, index=[1,3]) x y 1 10 60 3 11 59 >>> gdf = sg.to_gdf(df, geometry=["x", "y"], crs=4326) >>> gdf x y geometry 1 10 60 POINT (10.00000 60.00000) 3 11 59 POINT (11.00000 59.00000)
For DataFrame/dict with a geometry-like column named “geometry”. If the column has another name, it must be set with the geometry parameter.
>>> df = pd.DataFrame({"col": [1, 2], "geometry": ["point (10 60)", (11, 59)]}) >>> df col geometry 0 1 point (10 60) 1 2 (11, 59) >>> gdf = sg.to_gdf(df, crs=4326) >>> gdf col geometry 0 1 POINT (10.00000 60.00000) 1 2 POINT (11.00000 59.00000)
From Series.
>>> series = Series({1: (10, 60), 3: (11, 59)}) >>> sg.to_gdf(series) geometry 1 POINT (10.00000 60.00000) 3 POINT (11.00000 59.00000)
Multiple coordinates will be converted to points, unless a line or polygon geometry is constructed beforehand.
>>> coordslist = [(10, 60), (11, 59)] >>> sg.to_gdf(coordslist, crs=4326) geometry 0 POINT (10.00000 60.00000) 1 POINT (11.00000 59.00000)
>>> from shapely.geometry import LineString >>> sg.to_gdf(LineString(coordslist), crs=4326) geometry 0 LINESTRING (10.00000 60.00000, 11.00000 59.00000)
From 2 or 3 dimensional array.
>>> arr = np.random.randint(100, size=(5, 3)) >>> sg.to_gdf(arr) geometry 0 POINT Z (82.000 88.000 82.000) 1 POINT Z (70.000 92.000 20.000) 2 POINT Z (91.000 34.000 3.000) 3 POINT Z (1.000 50.000 77.000) 4 POINT Z (58.000 49.000 46.000)