Используйте GeoNames Java API для получения координат по названию статьи в Википедии - PullRequest
0 голосов
/ 06 февраля 2012

Скажем, у меня есть заголовок статьи в Википедии, например, Филадельфия, и я хочу координаты этого места. Я не хочу получать это из Википедии, потому что, похоже, мне придется получить всю статью. И я не хочу просто свободно запрашивать у GeoNames такие места, как «Филадельфия», потому что это будет иметь много результатов, и я знаю, что мне нужны координаты конкретной статьи Википедии [[Филадельфия]].

Похоже, что API GeoNames позволяет вам делать это с классом WikipediaArticle и его методами, такими как setTitle () и getLatitude (). Но я возился с этим классом и WebService и не смог получить координаты таким образом. Я не буду утомлять вас всеми комбинациями, которые я пробовал, но я не могу найти пример того, как это сделать. Что-то вроде:

WebService.setUserName("whateveritis");
List<WikipediaArticle> wikiResults = WebService.wikipediaSearchForTitle(
                            "Philadelphia","en");
for (WikipediaArticle r : wikiResults) {
    System.out.println(r.getLatitude());
}

Это дает много ошибок, которыми я могу поделиться, но заставляет меня думать, что я просто использую это неправильно. Или, может быть:

WikipediaArticle myPlace = new WikipediaArticle();
myPlace.setTitle("Philadelphia");
Double lat = myPlace.getLatitude();

Возвращает 0.0. Кто-нибудь знаком с API и может сказать мне, где я иду не так? Я думаю, что это предназначено для таких вещей, потому что веб-версия делает это: http://api.geonames.org/wikipediaSearch?title=Philadelphia&maxRows=1&username=demo

1 Ответ

0 голосов
/ 14 февраля 2012

Первый способ, использующий WebService.wikipediaSearchForTitle, - это способ сделать это, но вы должны правильно настроить jdom в classpath, что я думал, что сделал, но не сделал.Тем не менее, обратите внимание, что функция возвращает любую статью с «Филадельфией» в заголовке, а не только «Филадельфию».Так что функция, даже когда работала, делала не совсем то, что мне было нужно.

...