From 949a226180b726b114ad5dd47f4eba1c0ff15f11 Mon Sep 17 00:00:00 2001 From: Hartmut Holzgraefe Date: Sat, 30 Mar 2024 13:58:39 +0000 Subject: [PATCH] work around ProjTransform crash with older Proj library See also python-mapnik issue #273 https://github.com/mapnik/python-mapnik/issues/273 --- ocitysmap/coords.py | 32 +++++++++++-------- .../single_page_renderer/no_index.py | 3 ++ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ocitysmap/coords.py b/ocitysmap/coords.py index 8de57f63..d0350930 100644 --- a/ocitysmap/coords.py +++ b/ocitysmap/coords.py @@ -33,6 +33,11 @@ "Mapnik module version %s is too old, see ocitysmap's INSTALL " \ "for more details." % mapnik.mapnik_version_string() +import logging + +LOG = logging.getLogger('ocitysmap') + + EARTH_RADIUS = 6370986 # meters def dd2dms(value): @@ -44,20 +49,21 @@ def dd2dms(value): return (degrees, minutes, seconds) -def get_proj_transformation(): - try: - # new Proj library versions (e.g. v9 on Debian 12) - proj_wgs84 = mapnik.Projection("epsg:4326") - proj_google = mapnik.Projection("epsg:3857") - except: - # old Proj libraray versions (e.g. v7 on Debian 11) - proj_wgs84 = mapnik.Projection("+init=epsg:4326") - proj_google = mapnik.Projection( "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 " \ - "+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m " \ - "+nadgrids=@null +no_defs +over") - - return mapnik.ProjTransform(proj_wgs84, proj_google) +try: + # new Proj library versions (e.g. v9 on Debian 12) + _proj_wgs84 = mapnik.Projection("epsg:4326") + _proj_google = mapnik.Projection("epsg:3857") +except: + # old Proj libraray versions (e.g. v7 on Debian 11) + _proj_wgs84 = mapnik.Projection("+init=epsg:4326") + _proj_google = mapnik.Projection( "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 " \ + "+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m " \ + "+nadgrids=@null +no_defs +over") + +def get_proj_transformation(): + return mapnik.ProjTransform(_proj_wgs84, _proj_google) + class Point: def __init__(self, lat, long_): self._lat, self._long = float(lat), float(long_) diff --git a/ocitysmap/layoutlib/single_page_renderer/no_index.py b/ocitysmap/layoutlib/single_page_renderer/no_index.py index b1fa969c..b5efb0b8 100644 --- a/ocitysmap/layoutlib/single_page_renderer/no_index.py +++ b/ocitysmap/layoutlib/single_page_renderer/no_index.py @@ -1,5 +1,8 @@ from gettext import gettext +import logging +LOG = logging.getLogger('ocitysmap') + import ocitysmap from ocitysmap.layoutlib.abstract_renderer import Renderer from ocitysmap.layoutlib.single_page_renderers import SinglePageRenderer