web-dev-qa-db-fra.com

Recevez une API WOEID by Lat, Long with Yahoos

j'ai cherché pendant un moment, mais rien trouvé, c'est semblable à mon problème.

j'essaie d'utiliser l'API YAHOO Weather, par exemple: http://weather.yahooapis.com/forecastrss?w=4097

je ne connais pas le WOEID dans mon cas, mais j'ai obtenu des points de latitude et de longitude.

ma question est donc la suivante: Y at-il un moyen d’obtenir le WOEID d’un lieu en utilisant des points de latitude et de longitude?

18
choise

Ceci est maintenant disponible via l'API PlaceFinder récemment publiée . Bravo à Yahoo! pour fournir encore une autre pièce importante du puzzle Geo.

18
MatsLindh

Yahoo! L'API PlaceFinder vous permet de trouver un WOEID correspondant pour un couple latitude/longitude. Considérez cet exemple d'appel de méthode de service Web:

http://where.yahooapis.com/geocode?location=37.42,-122.12&flags=J&gflags=R&appid=zHgnBS4m

Vous pouvez jouer avec les paramètres de requête en fonction de vos besoins, voir Yahoo! Documentation de l'API PlaceFinder pour plus d'informations. Et vous devez remplacer appid par votre compte Yahoo! appid, vous pouvez en créer un ici .

Cette demande renvoie une réponse comme celle-ci, qui inclut beaucoup de données utiles avec WOEID:

{
    "ResultSet": {
        "version": "1.0",
        "Error": 0,
        "ErrorMessage": "No error",
        "Locale": "us_US",
        "Quality": 99,
        "Found": 1,
        "Results": [
            {
                "quality": 99,
                "latitude": "37.420000",
                "longitude": "-122.120000",
                "offsetlat": "37.420000",
                "offsetlon": "-122.120000",
                "radius": 500,
                "name": "37.42,-122.12",
                "line1": "3589 Bryant St",
                "line2": "Palo Alto, CA  94306-4207",
                "line3": "",
                "line4": "United States",
                "house": "3589",
                "street": "Bryant St",
                "xstreet": "",
                "unittype": "",
                "unit": "",
                "postal": "94306-4207",
                "neighborhood": "",
                "city": "Palo Alto",
                "county": "Santa Clara County",
                "state": "California",
                "country": "United States",
                "countrycode": "US",
                "statecode": "CA",
                "countycode": "",
                "hash": "",
                "woeid": 12797284,
                "woetype": 11,
                "uzip": "94306"
            }
        ]
    }
}
11
Ahmet Ardal

Ceci n’utilise pas l’API de Yahoo, mais j’ai trouvé cet article: http://geomojo.org/?p=38

En mentionnant ce service: http://www.geomojo.org/cgi-bin/reversegeocoder.cgi?long=-117.699444&lat=35.4775

Peut-être que vous pouvez utiliser ça? Cela a résolu mon problème, j'espère que cela vous aidera à résoudre le vôtre.

8
salt.racer

Commencez par obtenir le nom de la ville depuis lat/long en utilisant ce code.

CLGeocoder *geocoder = [[CLGeocoder alloc] init] ;
[geocoder reverseGeocodeLocation:location
               completionHandler:^(NSArray *placemarks, NSError *error) {
                   if (error){
                       NSLog(@"Geocode failed with error: %@", error);
                       return;
                   }
                   CLPlacemark *placemark = [placemarks objectAtIndex:0];
                   NSLog(@"cityname - %@",placemark.locality);
               }];

Ensuite, utilisez ce nom de ville dans l'URL ci-dessous.

https://search.yahoo.com/sugg/gossip/gossip-gl-location/?appid=weather&output=sd1&p2=pt&command=YOURCITYNAME

Exemple - https://search.yahoo.com/sugg/gossip/gossip-gl-location/?appid=weather&output=sd1&p2=pt&command=sydney

Cela vous retournera json et vous trouverez get WOEID dans cette ...

{ "l" : { "gprid" : "eIL89mltSzSfgDWdP7uyBA" },
  "q" : "sydney",
  "r" : [ { "d" : "pt:iso=AU&woeid=1105779&lon=151.021&lat=-33.8563&s=New South Wales&c=Australia&sc=NSW&n=Sydney, Australia",
        "k" : "Sydney"
      } ]
}
3
Haider

Il est quelque peu ridicule que Yahoo ne fournisse pas de méthode de recherche pour les WOEID via lat/lon - cela fait partie de leur liste de tâches depuis 2008 - mais c'est tout l’état de la situation.

Je vous prie de ne pas utiliser la solution de contournement suggérée mise en œuvre à Geomojo. Si cela fonctionne pour vos données, c'est bien, mais le service Yahoo sur lequel s'appuie Geomojo est imprévisible. Geomojo utilise le PlaceMaker de Yahoo, qui extrait les informations de localisation d'un texte non structuré pour obtenir un WOEID. Pour cela, il crée un microformat contenant votre paire lat/lon et le soumet à PlaceMaker. Cependant, étant donné que PlaceMaker renvoie les WOEID pour les codes postaux, la résolution est altérée et vous ne pourrez parfois pas identifier même la ville pour les coordonnées soumises. J'ai un certain nombre de exemples de points sur la côte est des États-Unis, où les WOEID PlaceMaker ne correspondent pas aux paires lat/lon soumises.

Étrangement, comme écrit HD, seule l’API de Flickr offre un moyen simple de rechercher un WOEID dans lat/lon . La méthode findByLatLon de Flickr offre une excellente résolution. Il retournera généralement un quartier (un niveau en dessous de la ville) pour une paire de coordonnées.

3
Ryan

Vous pouvez utiliser l'API de géocodage inverse de Flickr via YQL.

Voici un lien vers YQL avec un exemple de requête pour trouver le WOEID pour un lat/lon donné: http://developer.yahoo.com/yql/console/#h=select%20place. woeid% 20de% 20flickr.places% 20where% 20lat% 3D43% 20and% 20lon% 3D-94

La requête ci-dessus peut être appelée directement depuis votre application à l'aide de cette URL (formats XML/JSON disponibles): http://query.yahooapis.com/v1/public/yql?q=select%20place. woeid% 20de% 20flickr.places% 20where% 20lat% 3D43% 20and% 20lon% 3D-94 & format = xml

2
ejunker

On dirait que vous l'avez mal compris. Ceci est l'URL sur weather.yahoo.com: Weather.yahoo.com/united-states/illinois/chicago-2379574/Le dernier bit est le WOEID pour Chicago, c'est-à-dire 2379574

Les documents WOEID sont décrits dans les documents GeoPlanet: http://developer.yahoo.com/geo/geoplanet/guide/concepts.html#woeids

2
Walter

L'ancienne API Yahoo Weather est devenue obsolète. La nouvelle Yahoo Weather API nécessite une chaîne de requête pour obtenir la météo.

Utilisez la chaîne de requête suivante pour obtenir les données météorologiques par latitude et longitude -
"https://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\"(" + latitude + "," + longitude + ")\")&format=json"

Eg - https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places (1)% 20where% 20text% 3D% 22 (31.63% 2C74.87)% 22) & format = json

0
Shaurya

Au lieu d'utiliser lng & lat, vous pouvez utiliser l'adresse IP en ligne actuelle pour obtenir le nom de la ville, puis utiliser le service Web Yahoo GeoPlanet pour obtenir le WOEID. Suivez ce tutoriel pour obtenir les détails: http: // 4rapiddev .com/php/get-woeid-of-a-city-name-from-ip-address-with-php/ /

0
Hoan Huynh

Il existe un sujet sur ce problème sur les forums YDN http://developer.yahoo.net/forum/index.php?showtopic=69

On dirait que cela fait partie de la liste des tâches à faire de 2008 "La possibilité de mapper un ensemble de coordonnées de longitude et de latitude sur un WOEID, à partir duquel des informations telles que Zip et State peuvent être dérivées, a déjà été identifiée comme une fonctionnalité précieuse et c'est sur notre liste de demande d'amélioration. "

Autres citations;

"Flickr a une méthode: flickr.places.findByLatLon qui renvoie un WOEID, mais qui tronque les coordonnées à trois décimales."

Dans cette rubrique, un développeur de Yahoo suggère également d’utiliser les conseils de http://geomojo.org/?p=38 en tant que solution provisoire.

0
Chaoley