def hasWikidata( wikidataId, l ):
responsewiki = requests.get("https://www.wikidata.org/w/api.php?action=wbgetentities&ids=" + wikidataId + "&format=json")
datawiki = responsewiki.json()
l['wiki:logs'] = ''
for label in labels:
try:
l['wiki:wikidata'] = wikidataId
wikilabels = datawiki["entities"][wikidataId]["labels"][label]["value"]
l['wiki:label:'+label] = wikilabels
l['wiki:logs'] += label + " Present,"
except:
l['wiki:logs'] += "No " + label + " label,"
try:
l['wiki:label:en'] = datawiki["entities"][wikidataId]["labels"]["en"]["value"]
except:
l['wiki:label:en'] = ""
try:
l['wiki:wikipedia:en'] = datawiki["entities"][wikidataId]["sitelinks"]["enwiki"]["title"]
except:
l['wiki:wikipedia:en'] = ""
try:
latitude = datawiki["entities"][wikidataId]["claims"]["P625"][0]["mainsnak"]["datavalue"]["value"]["latitude"]
longitude = datawiki["entities"][wikidataId]["claims"]["P625"][0]["mainsnak"]["datavalue"]["value"]["longitude"]
geom_geojson = shapely.geometry.shape({"type": "Point", "coordinates": [longitude, latitude]})
d = ast.literal_eval(l['osm:geometry'])
geom_db = shapely.geometry.shape(d)
centroid_geojson = geom_geojson.centroid
centroid_db = geom_db.centroid
distance = vincenty((centroid_geojson.x,centroid_geojson.y),(centroid_db.x, centroid_db.y)).km
l['wiki:Distance'] = distance
except Exception as e:
l['wiki:Distance'] = ""
return l
评论列表
文章目录