Question

i cherchai un certain temps, mais rien trouvé, thats Simular à mon problème.

Je suis en train d'utiliser l'API Météo YAHOO, par exemple: http: // temps. yahooapis.com/forecastrss?w=4097

Je ne sais pas WOEID dans mon cas, mais je suis arrivé points de latitude et de longitude.

Ma question est la suivante: est-il un moyen d'obtenir le WOEID d'un endroit en utilisant des points lat et long?

Était-ce utile?

La solution

Il est maintenant disponible à travers le récemment publié PlaceFinder API . Kudos à Yahoo! pour fournir une autre pièce importante du casse-tête Geo.

Autres conseils

Yahoo! API PlaceFinder vous permet de trouver un WOEID correspondant pour une paire latitude / longitude. Considérons cet exemple de méthode de service Web appel:

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

Vous pouvez jouer avec les paramètres de demande en fonction de vos besoins, consultez Yahoo! PlaceFinder documentation de l'API plus. Et vous devez remplacer appid avec votre Yahoo! appid, vous pouvez créer un .

Cette demande renvoie une réponse comme ça, qui comprend un grand nombre de données utiles ainsi que le 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"
            }
        ]
    }
}

Ce n'utilise l'API de Yahoo mais je trouve ce blog: http://geomojo.org/?p=38

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

Peut-être que vous pouvez l'utiliser? Il a résolu mon problème, je l'espère, il contribue à la vôtre résolution.

Il est un peu ridicule que Yahoo ne fournit pas une méthode de recherche pour WOEIDs via latitude / longitude - il a été sur leur liste de todo depuis 2008 - mais c'est l'état des choses

.

Je vous mets en garde contre l'utilisation de la solution proposée mise en œuvre à Geomojo. Si cela fonctionne pour vos données, grandes, mais le service Yahoo qui repose sur Geomojo est imprévisible. Geomojo utilise le Placemaker de Yahoo, qui extrait les informations de localisation du texte non structuré pour obtenir un WOEID. Elle le fait en créant un microformat contenant votre paire de latitude / longitude et de le soumettre à Placemaker. Toutefois, étant donné retourne Placemaker WOEIDs pour les codes postaux, il y a une perte de résolution et vous ne serez pas en mesure d'identifier parfois même la ville pour les coordonnées présentées. J'ai un certain nombre de exemple montre sur la côte est des États-Unis où les WOEIDs de Placemaker ne correspondent pas aux paires lat / long soumises.

Etrangement, comme l'écrit HD, seule API Flickr fournit un moyen simple de rechercher un WOEID de latitude / longitude . La méthode findByLatLon de Flickr a une grande résolution. Il retourne généralement un quartier (un niveau inférieur à la ville) pour une paire de coordonnées.

Tout d'abord obtenir le nom de la ville de 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);
               }];

Utilisez ensuite que cityname dans l'URL ci-dessous

https: // recherche .yahoo.com / sugg / potins / gossip-gl-lieu /? appid = temps & output = SD1 & p2 = pt & commande = YOURCITYNAME

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

retournera JSON et vous trouverez dans cette WOEID se ...

{ "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"
      } ]
}

On dirait que vous avez obtenu dans le mauvais sens. 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.-à-2379574

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

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

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

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

Il y a un sujet sur cette question dans les forums YDN http: // developer.yahoo.net/forum/index.php?showtopic=69

On dirait qu'il est enterré dans la liste de tâches, à partir de 2008 « La capacité de mapper un ensemble de longitude et latitude coordonnées à un WOEID, à partir de laquelle des informations telles que peut être dérivé ZIP et l'Etat, a déjà été identifié comme caractéristique précieuse et il est sur notre liste de demande d'amélioration. "

D'autres citations;

"Flickr a une méthode:. Flickr.places.findByLatLon qui retourne une WOEID, mais ils tronquer coordonnées à trois décimales"

Dans cette rubrique un dev Yahoo suggère également d'utiliser les conseils http://geomojo.org/?p = 38 comme une solution intermédiaire.

Au lieu utilisant lng & lat, vous pouvez utiliser l'adresse IP actuelle en ligne pour obtenir le nom ville puis utilisez le service Web Yahoo GeoPlanet pour obtenir le WOEID. Suivez ce tutoriel pour obtenir le détail:

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

Utilisez la chaîne de requête suivante pour obtenir des données météorologiques par la latitude et la 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"

Par exemple, - https://query.yahooapis.com/v1/ publique / YQL? q = sélectionner% 20% * 20from% 20weather.forecast% 20Lorsqu'une% 20woeid% 20in% 20 (sélectionner% 20woeid% 20from% 20geo.places (1)% 20Lorsqu'une% 20text% 3D% 22 (31,63% 2C74. 87)% 22) & format = json

Yahoo api utilise weather.com en fait, donc aller à weather.com et la recherche de la météo locale. Je suis à Chicago donc je suis entré dans Chicago, IL 'et voici le lien dans ma barre de navigateur montrant ma météo:

http://www.weather.com/weather/today/Chicago+IL+ USIL0225 ? NTEMT = Chicago,% 20il & from = searchbox_localwx

Dans le lien est le woeid - qui est USIL0225

Vous pouvez obtenir le vôtre de la même façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top