mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-07 10:34:08 +00:00
avoid interpreting integral numbers as coordinates
There are addresses of type '123 W 345 N, Reigh', where 'W 345 N' is the actual name of the street.
This commit is contained in:
@@ -136,10 +136,10 @@ def _deg(axis:str) -> str:
|
|||||||
return f"(?P<{axis}_deg>\\d+\\.\\d+)°?"
|
return f"(?P<{axis}_deg>\\d+\\.\\d+)°?"
|
||||||
|
|
||||||
def _deg_min(axis: str) -> str:
|
def _deg_min(axis: str) -> str:
|
||||||
return f"(?P<{axis}_deg>\\d+)[°\\s]+(?P<{axis}_min>[\\d.]+)?[′']*"
|
return f"(?P<{axis}_deg>\\d+)[°\\s]+(?P<{axis}_min>[\\d.]+)[′']*"
|
||||||
|
|
||||||
def _deg_min_sec(axis: str) -> str:
|
def _deg_min_sec(axis: str) -> str:
|
||||||
return f"(?P<{axis}_deg>\\d+)[°\\s]+(?P<{axis}_min>\\d+)[′'\\s]+(?P<{axis}_sec>[\\d.]+)?[\"″]*"
|
return f"(?P<{axis}_deg>\\d+)[°\\s]+(?P<{axis}_min>\\d+)[′'\\s]+(?P<{axis}_sec>[\\d.]+)[\"″]*"
|
||||||
|
|
||||||
COORD_REGEX = [re.compile(r'(?:(?P<pre>.*?)\s+)??' + r + r'(?:\s+(?P<post>.*))?') for r in (
|
COORD_REGEX = [re.compile(r'(?:(?P<pre>.*?)\s+)??' + r + r'(?:\s+(?P<post>.*))?') for r in (
|
||||||
r"(?P<ns>[NS])\s*" + _deg('lat') + r"[\s,]+" + r"(?P<ew>[EW])\s*" + _deg('lon'),
|
r"(?P<ns>[NS])\s*" + _deg('lat') + r"[\s,]+" + r"(?P<ew>[EW])\s*" + _deg('lon'),
|
||||||
|
|||||||
@@ -11,7 +11,11 @@ import pytest
|
|||||||
|
|
||||||
import nominatim.api.v1.helpers as helper
|
import nominatim.api.v1.helpers as helper
|
||||||
|
|
||||||
@pytest.mark.parametrize('inp', ['', 'abc', '12 23', 'abc -78.90, 12.456 def'])
|
@pytest.mark.parametrize('inp', ['',
|
||||||
|
'abc',
|
||||||
|
'12 23',
|
||||||
|
'abc -78.90, 12.456 def',
|
||||||
|
'40 N 60 W'])
|
||||||
def test_extract_coords_no_coords(inp):
|
def test_extract_coords_no_coords(inp):
|
||||||
query, x, y = helper.extract_coords_from_query(inp)
|
query, x, y = helper.extract_coords_from_query(inp)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user