parent
29426e2462
commit
d001ec1155
|
@ -102,18 +102,14 @@ def wd_uri_to_qid(value: str) -> str:
|
||||||
return value[len(wd_entity) - 1 :]
|
return value[len(wd_entity) - 1 :]
|
||||||
|
|
||||||
|
|
||||||
def geosearch_query(lat: str | float, lon: str | float) -> list[Row]:
|
def geosearch_query(lat: float, lon: float) -> list[Row]:
|
||||||
"""Geosearch via WDQS."""
|
"""Geosearch via WDQS."""
|
||||||
if isinstance(lat, float):
|
lat_str, lon_str = f"{lat:f}", f"{lon:f}"
|
||||||
lat = f"{lat:f}"
|
query = render_template("sparql/geosearch.sparql", lat=lat_str, lon=lon_str)
|
||||||
if isinstance(lon, float):
|
|
||||||
lon = f"{lon:f}"
|
|
||||||
|
|
||||||
query = render_template("sparql/geosearch.sparql", lat=lat, lon=lon)
|
|
||||||
return wdqs(query)
|
return wdqs(query)
|
||||||
|
|
||||||
|
|
||||||
def geosearch(lat: str | float, lon: str | float) -> Row | None:
|
def geosearch(lat: float, lon: float) -> Row | None:
|
||||||
"""Geosearch."""
|
"""Geosearch."""
|
||||||
default_max_dist = 1
|
default_max_dist = 1
|
||||||
rows = geosearch_query(lat, lon)
|
rows = geosearch_query(lat, lon)
|
||||||
|
@ -157,7 +153,7 @@ def lookup_gss_in_wikidata(gss: str) -> list[Row]:
|
||||||
return wdqs(render_template("sparql/lookup_gss.sparql", gss=gss))
|
return wdqs(render_template("sparql/lookup_gss.sparql", gss=gss))
|
||||||
|
|
||||||
|
|
||||||
def lookup_wikidata_by_name(name: str, lat: float | str, lon: float | str) -> list[Row]:
|
def lookup_wikidata_by_name(name: str, lat: float, lon: float) -> list[Row]:
|
||||||
"""Lookup place in Wikidata by name."""
|
"""Lookup place in Wikidata by name."""
|
||||||
query = render_template(
|
query = render_template(
|
||||||
"sparql/lookup_by_name.sparql", name=repr(name), lat=str(lat), lon=str(lon)
|
"sparql/lookup_by_name.sparql", name=repr(name), lat=str(lat), lon=str(lon)
|
||||||
|
@ -195,11 +191,12 @@ def get_commons_cat_from_gss(gss: str) -> Hit | None:
|
||||||
WikidataDict = dict[str, None | bool | str | int | dict[str, typing.Any]]
|
WikidataDict = dict[str, None | bool | str | int | dict[str, typing.Any]]
|
||||||
|
|
||||||
|
|
||||||
def build_dict(hit: Hit | None, lat: str | float, lon: str | float) -> WikidataDict:
|
def build_dict(hit: Hit | None, lat: float, lon: float) -> WikidataDict:
|
||||||
"""Build dict."""
|
"""Build dict."""
|
||||||
coords = {"lat": lat, "lon": lon}
|
coords = {"lat": lat, "lon": lon}
|
||||||
if hit is None:
|
if hit is None:
|
||||||
return {"commons_cat": None, "missing": True, "coords": coords}
|
return {"commons_cat": None, "missing": True, "coords": coords}
|
||||||
|
assert isinstance(hit["commons_cat"], str)
|
||||||
commons_cat = hit["commons_cat"]
|
commons_cat = hit["commons_cat"]
|
||||||
ret: WikidataDict = {
|
ret: WikidataDict = {
|
||||||
"coords": coords,
|
"coords": coords,
|
||||||
|
|
|
@ -73,7 +73,7 @@ def get_random_lat_lon() -> tuple[float, float]:
|
||||||
|
|
||||||
|
|
||||||
def do_lookup(
|
def do_lookup(
|
||||||
elements: "Query[model.Polygon]", lat: str | float, lon: str | float
|
elements: "Query[model.Polygon]", lat: float, lon: float
|
||||||
) -> wikidata.WikidataDict:
|
) -> wikidata.WikidataDict:
|
||||||
"""Do lookup."""
|
"""Do lookup."""
|
||||||
try:
|
try:
|
||||||
|
@ -167,9 +167,7 @@ def hit_from_ref_gss_tag(tags: Tags) -> wikidata.Hit | None:
|
||||||
return wikidata.get_commons_cat_from_gss(gss) if gss else None
|
return wikidata.get_commons_cat_from_gss(gss) if gss else None
|
||||||
|
|
||||||
|
|
||||||
def hit_from_name(
|
def hit_from_name(tags: Tags, lat: float, lon: float) -> wikidata.Hit | None:
|
||||||
tags: Tags, lat: str | float, lon: str | float
|
|
||||||
) -> wikidata.Hit | None:
|
|
||||||
"""Use name to look for hit."""
|
"""Use name to look for hit."""
|
||||||
if not (name := tags.get("name")):
|
if not (name := tags.get("name")):
|
||||||
return None
|
return None
|
||||||
|
@ -181,10 +179,9 @@ def hit_from_name(
|
||||||
|
|
||||||
|
|
||||||
def osm_lookup(
|
def osm_lookup(
|
||||||
elements: "Query[model.Polygon]", lat: str | float, lon: str | float
|
elements: "Query[model.Polygon]", lat: float, lon: float
|
||||||
) -> wikidata.Hit | None:
|
) -> wikidata.Hit | None:
|
||||||
"""OSM lookup."""
|
"""OSM lookup."""
|
||||||
ret: wikidata.Hit | None
|
|
||||||
for e in elements:
|
for e in elements:
|
||||||
assert isinstance(e, model.Polygon)
|
assert isinstance(e, model.Polygon)
|
||||||
assert e.tags
|
assert e.tags
|
||||||
|
|
Loading…
Reference in a new issue