Fiona reads and writes spatial data files
88
Functions for transforming coordinates and geometries between different coordinate reference systems, essential for integrating data from different sources and projections.
Transform coordinate sequences between coordinate reference systems.
def transform(src_crs, dst_crs, xs, ys):
"""
Transform coordinate sequences between CRS.
Parameters:
- src_crs: CRS or CRS-like, source coordinate reference system
- dst_crs: CRS or CRS-like, destination coordinate reference system
- xs: array-like, x coordinates (longitude or easting)
- ys: array-like, y coordinates (latitude or northing)
Returns:
tuple: (transformed_xs, transformed_ys) coordinate arrays
Raises:
- TransformError: If transformation fails
"""Transform geometry objects between coordinate reference systems.
def transform_geom(src_crs, dst_crs, geom, antimeridian_cutting=False, antimeridian_offset=10.0, precision=-1):
"""
Transform geometry objects between CRS.
Parameters:
- src_crs: CRS or CRS-like, source coordinate reference system
- dst_crs: CRS or CRS-like, destination coordinate reference system
- geom: dict, GeoJSON-like geometry object
- antimeridian_cutting: bool, cut geometries at antimeridian
- antimeridian_offset: float, offset for antimeridian cutting
- precision: int, coordinate precision (-1 for no rounding)
Returns:
dict: Transformed GeoJSON-like geometry
Raises:
- TransformError: If transformation fails
"""from fiona.transform import transform, transform_geom
from fiona.crs import CRS
# Transform coordinate arrays
src_crs = CRS.from_epsg(4326) # WGS84
dst_crs = CRS.from_epsg(32610) # UTM Zone 10N
# San Francisco coordinates in WGS84
lons = [-122.4194]
lats = [37.7749]
# Transform to UTM
x_utm, y_utm = transform(src_crs, dst_crs, lons, lats)
print(f"UTM coordinates: {x_utm[0]:.2f}, {y_utm[0]:.2f}")
# Transform geometry objects
point_geom = {
'type': 'Point',
'coordinates': [-122.4194, 37.7749]
}
transformed_point = transform_geom(src_crs, dst_crs, point_geom)
print(f"Transformed point: {transformed_point}")
# Transform complex geometries
polygon_geom = {
'type': 'Polygon',
'coordinates': [[
[-122.5, 37.7], [-122.4, 37.7],
[-122.4, 37.8], [-122.5, 37.8],
[-122.5, 37.7]
]]
}
transformed_polygon = transform_geom(src_crs, dst_crs, polygon_geom)Install with Tessl CLI
npx tessl i tessl/pypi-fionadocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10