opengis: force coordinates precision to six digits (#39197)
This commit is contained in:
parent
7e58546c3a
commit
498a704c3d
|
@ -204,12 +204,12 @@ class OpenGIS(BaseResource):
|
|||
def get_bbox(self, lon1, lat1, lon2, lat2):
|
||||
if self.projection == 'EPSG:4326':
|
||||
# send as is but invert coordinates
|
||||
return '%s,%s,%s,%s' % (lat1, lon1, lat2, lon2)
|
||||
return '%.6f,%.6f,%.6f,%.6f' % (lat1, lon1, lat2, lon2)
|
||||
wgs84 = pyproj.Proj(init='EPSG:4326')
|
||||
target_projection = pyproj.Proj(init=self.projection)
|
||||
x1, y1 = pyproj.transform(wgs84, target_projection, lon1, lat1)
|
||||
x2, y2 = pyproj.transform(wgs84, target_projection, lon2, lat2)
|
||||
return '%s,%s,%s,%s' % (x1, y1, x2, y2)
|
||||
return '%.6f,%.6f,%.6f,%.6f' % (x1, y1, x2, y2)
|
||||
|
||||
@endpoint(perm='can_access',
|
||||
description=_('Get feature info'),
|
||||
|
@ -292,7 +292,7 @@ class OpenGIS(BaseResource):
|
|||
def reverse(self, request, lat, lon, **kwargs):
|
||||
lon, lat = self.convert_coordinates(lon, lat)
|
||||
|
||||
cql_filter = 'DWITHIN(the_geom,Point(%s %s),%s,meters)' % (lon, lat, self.search_radius)
|
||||
cql_filter = 'DWITHIN(the_geom,Point(%.6f %.6f),%s,meters)' % (lon, lat, self.search_radius)
|
||||
params = {
|
||||
'VERSION': self.get_wfs_service_version(),
|
||||
'SERVICE': 'WFS',
|
||||
|
@ -324,8 +324,8 @@ class OpenGIS(BaseResource):
|
|||
point_lon = closest_feature['geometry']['coordinates'][0]
|
||||
point_lat = closest_feature['geometry']['coordinates'][1]
|
||||
point_lon, point_lat = self.convert_coordinates(point_lon, point_lat, reverse=True)
|
||||
result['lon'] = str(point_lon)
|
||||
result['lat'] = str(point_lat)
|
||||
result['lon'] = "%.6f" % point_lon
|
||||
result['lat'] = "%.6f" % point_lat
|
||||
result['address'] = {}
|
||||
|
||||
for attribute, properties in self.attributes_mapping:
|
||||
|
|
|
@ -246,7 +246,7 @@ def test_feature_info(mocked_get, app, connector):
|
|||
assert endpoint == '/opengis/test/feature_info'
|
||||
mocked_get.return_value = utils.FakedResponse(content=FAKE_FEATURE_INFO, status_code=200)
|
||||
resp = app.get(endpoint, params={'lat': '45.796890', 'lon': '4.784140'})
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '532556.896735,5747844.26121,532579.160633,5747876.19433'
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '532556.896735,5747844.261214,532579.160633,5747876.194333'
|
||||
assert mocked_get.call_args[1]['params']['CRS'] == 'EPSG:3857'
|
||||
assert (resp.json['data']
|
||||
['cad_cadastrecadparcelle_layer']
|
||||
|
@ -256,7 +256,7 @@ def test_feature_info(mocked_get, app, connector):
|
|||
connector.projection = 'EPSG:4326'
|
||||
connector.save()
|
||||
resp = app.get(endpoint, params={'lat': '45.796890', 'lon': '4.784140'})
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '45.79679,4.78404,45.79699,4.78424'
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '45.796790,4.784040,45.796990,4.784240'
|
||||
assert mocked_get.call_args[1]['params']['CRS'] == 'EPSG:4326'
|
||||
|
||||
|
||||
|
@ -281,13 +281,13 @@ def test_tile(mocked_get, app, connector):
|
|||
mocked_get.return_value = utils.FakedResponse(content='\x89PNG\r\n\x1a\n\x00\x00...', status_code=200)
|
||||
resp = app.get(endpoint + '/16/33650/23378.png')
|
||||
assert mocked_get.call_args[1]['params']['CRS'] == 'EPSG:3857'
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '539339.67158,5741338.06856,539951.167806,5741949.56478'
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '539339.671580,5741338.068556,539951.167806,5741949.564782'
|
||||
connector.projection = 'EPSG:4326'
|
||||
connector.save()
|
||||
resp = app.get(endpoint + '/16/33650/23378.png')
|
||||
assert mocked_get.call_args[1]['params']['CRS'] == 'EPSG:4326'
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '45.7560261559,4.84497070312,45.7598586879,4.85046386719'
|
||||
assert resp.content == '\x89PNG\r\n\x1a\n\x00\x00...'
|
||||
assert mocked_get.call_args[1]['params']['BBOX'] == '45.756026,4.844971,45.759859,4.850464'
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
|
@ -415,9 +415,9 @@ def test_reverse_geocoding(mocked_get, app, connector):
|
|||
'lon': '5.72462060798'
|
||||
})
|
||||
assert (mocked_get.call_args[1]['params']['CQL_FILTER']
|
||||
== 'DWITHIN(the_geom,Point(1914061.48604 4224640.45779),45,meters)')
|
||||
assert resp.json['lon'] == '5.72407744145'
|
||||
assert resp.json['lat'] == '45.1893972656'
|
||||
== 'DWITHIN(the_geom,Point(1914061.486036 4224640.457791),45,meters)')
|
||||
assert resp.json['lon'] == '5.724077'
|
||||
assert resp.json['lat'] == '45.189397'
|
||||
assert resp.json['address']['house_number'] == '4'
|
||||
assert resp.json['address']['road'] == 'place victor hugo'
|
||||
assert resp.json['address']['postcode'] == '38000'
|
||||
|
|
Loading…
Reference in New Issue