Skip to content

Commit

Permalink
Work around a problem with mapnik.Projection.forward returning infini…
Browse files Browse the repository at this point in the history
  • Loading branch information
asciipip committed Feb 28, 2024
1 parent 6681165 commit b087ec0
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions coords.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from env import *;

import mapnik
from mapnik import Coord, Box2d, Projection
from mapnik import Coord, Box2d, Projection, ProjTransform

__author__ = "Lars Ahlzen"
__copyright__ = "(c) Lars Ahlzen 2008-2011"
Expand Down Expand Up @@ -73,19 +73,21 @@ def envPixelToLL(self, env, zoom):
GOOGLE_PROJECTION = GoogleProjection()
LATLONG_PROJECTION = Projection(LATLONG_PROJECTION_DEF)
MERCATOR_PROJECTION = Projection(MERCATOR_PROJECTION_DEF)
LL_TO_MERC_TRANSFORM = ProjTransform(LATLONG_PROJECTION, MERCATOR_PROJECTION)
MERC_TO_LL_TRANSFORM = ProjTransform(MERCATOR_PROJECTION, LATLONG_PROJECTION)


##### Geographic coordinate transformation

def LLToMerc(coord):
"""Converts a Coord(lon,lat) or Box2d(l,b,r,t) to
OSM Mercator (x,y)."""
return MERCATOR_PROJECTION.forward(coord)
return LL_TO_MERC_TRANSFORM.forward(coord)

def mercToLL(coord):
"""Converts an OSM Mercator Coord(x,y) or Box2d(l,b,r,t)
to (lon,lat)."""
return MERCATOR_PROJECTION.inverse(coord)
return MERC_TO_LL_TRANSFORM.forward(coord)

def LLToPixel(coord, z):
"""Converts a Coord(lon,lat) or Box2d(l,b,r,t) to
Expand All @@ -111,13 +113,13 @@ def pixelToMerc(coord, z):
ll = GOOGLE_PROJECTION.pixelToLL(coord, z)
else:
ll = GOOGLE_PROJECTION.envPixelToLL(coord, z)
return MERCATOR_PROJECTION.forward(ll)
return LLToMerc(ll)

def mercToPixel(coord, z):
"""Converts an OSM Mercator Coord(x,y) or Box2d(l,b,r,t)
to OSM pixel coordinates (x,y) at the specified zoom level."""
# No direct transformation. Use merc->ll->pixel.
ll = MERCATOR_PROJECTION.inverse(coord)
ll = mercToLL(coord)
if isinstance(coord, Coord):
return GOOGLE_PROJECTION.LLToPixel(ll, z)
else:
Expand Down

0 comments on commit b087ec0

Please sign in to comment.