Source code for transform_coordinates
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 21 10:40:53 2018
@author: jpelda
"""
from shapely.geometry import Point, LineString, Polygon
import pyproj as pp
[docs]def transform_coords(geo, from_coord='epsg:3035', into_coord='epsg:4326'):
'''Transforms coordinates from given to requested coordinate system.
Args:
geo: [[x]], x is either Polygon, LineString, Point or (f,f)*i)
from_coord: str, coordinate system given
into_coord: str, coordinate system requested
Returns:
type(geo) transformed to into_coord
'''
geo_as_tuples = [0]*len(geo)
geo_type = type(geo[0])
'''
pp.transform needs tuples of floats to convert,
here input is converted into tuples
'''
if geo_type == Polygon:
for i, poly in enumerate(geo):
geo_as_tuples[i] = [(x, y) for x, y in
zip(poly.exterior.coords.xy[0],
poly.exterior.coords.xy[1])]
elif geo_type == LineString:
for i, line in enumerate(geo):
geo_as_tuples[i] = [(x, y) for x, y in list(line.coords)]
elif geo_type == Point:
for i, point in enumerate(geo):
geo_as_tuples[i] = [(point.coords[0][0], point.coords[0][1])]
else:
for i, item in enumerate(geo):
geo_as_tuples[i] = [(x,y) for x, y in item]
# conversion of coordinates
geo_convert = [0]*len(geo)
for i, tuples in enumerate(geo_as_tuples):
x = [x[0] for x in tuples]
y = [x[1] for x in tuples]
geo_convert[i] = pp.transform(pp.Proj(init=from_coord),
pp.Proj(init=into_coord),
x, y)
geo_convert[i] = [(x, y) for x, y in zip(geo_convert[i][0],
geo_convert[i][1])]
# type(geo) shall be the output type
ret = [0]*len(geo)
if geo_type == Polygon:
for i, item in enumerate(geo_convert):
ret[i] = Polygon(item)
elif geo_type == LineString:
for i, item in enumerate(geo_convert):
ret[i] = LineString(item)
elif geo_type == Point:
for i, item in enumerate(geo_convert):
ret[i] = Point(item)
else:
ret = geo_convert
return ret