Googleマップウィキペディアレイヤー
-
03-07-2019 - |
質問
長い/緯度のポイントの半径内にあるすべてのジオタグ付きウィキペディアエントリをプログラムで一覧表示する方法はありますか?私はこれがGoogleマップAPIで可能だと思っていますが、私はどんな方法にも興味があります。注:Googleマップを表示したくありません。
解決
はい、可能です。難しい部分は次のいずれかです。
(1)ウィキペディアのスクリーンスクレイピング(ターゲットページの(小さな)リストが既にない限り、悪い考えです)
(2)大規模な Wikipediaデータセット(より良いアイデア)
Wikiページのジオタグ形式であると思われる緯度/経度座標を取得したら、大圏公式を使用して相対距離を計算し、GoogleのAPIを完全にバイパスします。
この物語の教訓は?これほど大規模なデータセットを扱う場合、できる限りオフラインでデータセットをやりたいと思うでしょう。
他のヒント
GeoNames Webサービスを使用して、わずかに類似した問題を解決しました。 。
Webサービスを使用して、都市などをリクエストできます。超えてはならないIPごとの制限があります。
もう少し詳しく調べてみると、面白いことがあります。 Webサービスは、 findNearByWikipedia
と呼ばれます。あなたが探しているものかもしれません...
別のオプションは、DbPedia SPARQLインターフェイスを使用しています。たとえば、次のSPARQLクエリは、座標で制限された境界ボックス内のウィキペディアの記事を取得します。
たとえば SPARQL Pythonへのエンドポイントインターフェイス
など、広く利用可能なSPARQLライブラリテストするには、次のクエリをこのオンラインクエリエディタに貼り付けます。
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX onto: <http://dbpedia.org/ontology/>
SELECT * WHERE {
?s a onto:Place .
?s geo:lat ?lat .
?s geo:long ?long .
FILTER ( ?long > 30.3 && ?long < 30.5 && ?lat > 50.4 && ?lat < 50.5)
}
LIMIT 100
次の結果を取得します。
"s","lat","long"
"http://dbpedia.org/resource/Kotsiubynske","50.48972320556641","30.32888793945312"
"http://dbpedia.org/resource/Akademmistechko_%28Kiev_Metro%29","50.46555709838867","30.35499954223633"
"http://dbpedia.org/resource/Zhytomyrska_%28Kiev_Metro%29","50.45583343505859","30.36416625976562"
"http://dbpedia.org/resource/Sviatoshyn_Airfield","50.47833251953125","30.38500022888184"