opengis: upgrading to pyproj-2 (#55285)
gitea-wip/passerelle/pipeline/head There was a failure building this commit Details
gitea/passerelle/pipeline/head Something is wrong with the build of this commit Details

https://pyproj4.github.io/pyproj/stable/gotchas.html#upgrading-to-pyproj-2-from-pyproj-1
This commit is contained in:
Nicolas Roche 2021-06-30 18:21:51 +02:00
parent 48d23784e0
commit 6832591ca7
1 changed files with 12 additions and 9 deletions

View File

@ -18,7 +18,6 @@ import html
import math
import xml.etree.ElementTree as ET
import pyproj
import six
from django.contrib.postgres.fields import JSONField
from django.core.cache import cache
@ -30,6 +29,7 @@ from django.urls import reverse
from django.utils import timezone
from django.utils.text import slugify
from django.utils.translation import ugettext_lazy as _
from pyproj import CRS, Transformer
from passerelle.base.models import BaseQuery, BaseResource
from passerelle.utils.api import endpoint
@ -250,22 +250,25 @@ class OpenGIS(BaseResource):
def convert_coordinates(self, lon, lat, reverse=False):
lon, lat = float(lon), float(lat)
if self.projection != 'EPSG:4326':
wgs84 = pyproj.Proj('EPSG:4326')
target_projection = pyproj.Proj(self.projection)
wgs84 = CRS('EPSG:4326')
target_projection = CRS(self.projection)
if reverse:
lat, lon = pyproj.transform(target_projection, wgs84, lon, lat)
transformer = Transformer.from_crs(target_projection, wgs84)
lat, lon = transformer.transform(lon, lat)
else:
lon, lat = pyproj.transform(wgs84, target_projection, lat, lon)
transformer = Transformer.from_crs(wgs84, target_projection)
lon, lat = transformer.transform(lat, lon)
return lon, lat
def get_bbox(self, lon1, lat1, lon2, lat2):
if self.projection == 'EPSG:4326':
# send as is but invert coordinates
return '%.6f,%.6f,%.6f,%.6f' % (lat1, lon1, lat2, lon2)
wgs84 = pyproj.Proj('EPSG:4326')
target_projection = pyproj.Proj(self.projection)
x1, y1 = pyproj.transform(wgs84, target_projection, lat1, lon1)
x2, y2 = pyproj.transform(wgs84, target_projection, lat2, lon2)
wgs84 = CRS('EPSG:4326')
target_projection = CRS(self.projection)
transformer = Transformer.from_crs(wgs84, target_projection)
x1, y1 = transformer.transform(lat1, lon1)
x2, y2 = transformer.transform(lat2, lon2)
return '%.6f,%.6f,%.6f,%.6f' % (x1, y1, x2, y2)
@endpoint(