Created
May 12, 2014 22:13
-
-
Save drmalex07/5a54fc4f1db06a66679e to your computer and use it in GitHub Desktop.
Convert GeoJSON to/from WKT in Python. #python #geojson #geometry
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import geojson | |
from shapely.geometry import shape | |
o = { | |
"coordinates": [[[23.314208, 37.768469], [24.039306, 37.768469], [24.039306, 38.214372], [23.314208, 38.214372], [23.314208, 37.768469]]], | |
"type": "Polygon" | |
} | |
s = json.dumps(o) | |
# Convert to geojson.geometry.Polygon | |
g1 = geojson.loads(s) | |
# Feed to shape() to convert to shapely.geometry.polygon.Polygon | |
# This will invoke its __geo_interface__ (https://gist.github.com/sgillies/2217756) | |
g2 = shape(g1) | |
# Now it's very easy to get a WKT/WKB representation | |
g2.wkt | |
g2.wkb | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import geojson | |
import shapely.wkt | |
s = '''POLYGON ((23.314208 37.768469, 24.039306 37.768469, 24.039306 38.214372, 23.314208 38.214372, 23.314208 37.768469))''' | |
# Convert to a shapely.geometry.polygon.Polygon object | |
g1 = shapely.wkt.loads(s) | |
g2 = geojson.Feature(geometry=g1, properties={}) | |
g2.geometry |
@anottrott Instead of using ast.literal_eval(geojson_string)
, better use json.loads(geojson_string)
when converting a JSON string to a Python dictionary.
import json
from shapely.wkt import loads
from shapely.geometry import mapping
import geojson
wkt_string = "POLYGON ((23.314208 37.768469, 24.039306 37.768469, 24.039306 38.214372, 23.314208 38.214372, 23.314208 37.768469))"
geojson_string = geojson.dumps(mapping(loads(wkt_string)))
geojson_dict = json.loads(geojson_string)
print(geojson_dict)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is there a way to read in
CURVEPOLYGON
as well? Some of my strings start withCURVEPOLYGON(COMPOUNDCURVE((
instead ofPOLYGON ((
. I get the errorParseException: Unknown type: 'CURVEPOLYGON' from wkt.loads
. I see it can be done using GDAL, but installation of that package is a pain.