i have a geoJSON
geo = {'type': 'Polygon',
'coordinates': [[[23.08437310100004, 53.15448536100007],
[23.08459767900007, 53.15448536100007],
[23.08594514600003, 53.153587050000056],
(...)
[23.08437310100004, 53.15448536100007]]]}
and i want to use these coordinates as an input to shapely.geometry.Polygon
. The problem is that Polygon only accepts tuple
values, meaning i have to convert this geojson to a polygon. When i try to input this type of data into a Polygon there's an error ValueError: A LinearRing must have at least 3 coordinate tuples
I tried this:
[tuple(l) for l in geo['coordinates']]
but this dosen't quite work since it only returns this
[([23.08437310100004, 53.15448536100007],
[23.08459767900007, 53.15448536100007],
(...)
[23.08437310100004, 53.15448536100007])]
and what i need is this (i think it's a tuple)
([(23.08437310100004, 53.15448536100007),
(23.08459767900007, 53.15448536100007),
(...)
(23.08437310100004, 53.15448536100007)])
is there a function for this?
A generic solution is to use the shape
function:
Returns a new, independent geometry with coordinates copied from the context.
This works for all geometries not just polygons.
from shapely.geometry import shape
from shapely.geometry.polygon import Polygon
geo: dict = {'type': 'Polygon',
'coordinates': [[[23.08437310100004, 53.15448536100007],
[23.08459767900007, 53.15448536100007],
[23.08594514600003, 53.153587050000056],
[23.08437310100004, 53.15448536100007]]]}
polygon: Polygon = shape(geo)