api - code - codigo woeid
Recibe un WOEID por Lat, Long con Yahoos API (11)
Busqué un tiempo pero no encontré nada, eso es simular a mi problema.
Estoy tratando de usar la API de YAHOO Weather, por ejemplo: http://weather.yahooapis.com/forecastrss?w=4097
No conozco el WOEID en mi caso, pero tengo puntos de latitud y longitud.
así que mi pregunta es: ¿hay una manera de obtener el WOEID de un lugar utilizando puntos lat y largos?
Ahora está disponible a través de la developer.yahoo.com/geo/placefinder recientemente lanzada. Felicitaciones a Yahoo! por proporcionar otra pieza importante del rompecabezas Geo.
En lugar de usar lng & lat, puede usar la dirección IP en línea actual para obtener el nombre de la ciudad y luego usar el servicio web Yahoo GeoPlanet para obtener el WOEID. Siga este tutorial para obtener el detalle: http://4rapiddev.com/php/get-woeid-of-a-city-name-from-ip-address-with-php/
Es un tanto ridículo que Yahoo no proporcione un método de búsqueda para WOEIDs a través de lat / lon (ha estado en su lista de tareas desde 2008), pero ese es el estado de las cosas.
Le advierto que no utilice la solución sugerida implementada en Geomojo. Si funciona para sus datos, genial, pero el servicio de Yahoo en el que se basa Geomojo es impredecible. Geomojo utiliza PlaceMaker de Yahoo, que extrae información de ubicación de texto no estructurado para obtener un WOEID. Para ello, crea un microformato que contiene su par lat / lon y lo envía a PlaceMaker. Sin embargo, dado que PlaceMaker devuelve los WOEID para códigos postales, hay una pérdida de resolución y, a veces, no podrá identificar ni siquiera la ciudad para las coordenadas enviadas. Tengo varios puntos de ejemplo en la costa este de los EE. UU. Donde los WOEID de PlaceMaker no se corresponden con los pares de lat / lon enviados.
Extrañamente, como escribe HD, solo la API de Flickr proporciona una forma sencilla de buscar un WOEID desde lat / lon . El método findByLatLon de Flickr tiene una gran resolución. Por lo general, devolverá un vecindario (un nivel por debajo de la ciudad) para un par de coordenadas.
Esto no está usando la API de Yahoo pero encontré esta publicación de blog: http://geomojo.org/?p=38
Mencionando este servicio: http://www.geomojo.org/cgi-bin/reversegeocoder.cgi?long=-117.699444&lat=35.4775
Quizás puedas usar eso? Resolvió mi problema, espero que te ayude a resolver el tuyo.
Hay un tema sobre este problema en los foros de YDN http://developer.yahoo.net/forum/index.php?showtopic=69
Parece que está enterrado en la lista de tareas pendientes, desde 2008 "La capacidad de asignar un conjunto de coordenadas de longitud y latitud a un WOEID, del cual se puede derivar información como ZIP y estado, ya se ha identificado como una característica valiosa y está en nuestra lista de solicitud de mejora ".
Otras citas;
"Flickr tiene un método: flickr.places.findByLatLon que devuelve un WOEID, pero truncan las coordenadas en tres lugares decimales".
En este tema, un desarrollador de Yahoo también sugiere utilizar el consejo en http://geomojo.org/?p=38 como una solución provisional.
La API de Yahoo usa weather.com en realidad, así que vaya a weather.com y busque su clima local. Estoy en Chicago, así que ingresé a ''Chicago, IL'' y aquí está el enlace en la barra de mi navegador que muestra mi clima:
http://www.weather.com/weather/today/Chicago+IL+ USIL0225 ? lswe = chicago,% 20il & from = searchbox_localwx
En el enlace está el woeid - que es USIL0225
Puedes conseguir el tuyo de la misma manera.
La antigua API de Yahoo Weather ha quedado en desuso. La nueva API de Yahoo Weather requiere una cadena de consulta para obtener el clima.
Utilice la siguiente cadena de consulta para obtener datos meteorológicos por latitud y longitud:
"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"
Por ejemplo, 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 % 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 % 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 % 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 % 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 % 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 %20( 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 % 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 % 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 % 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
Parece que lo tienes al revés. Esta es la URL en weather.yahoo.com: weather.yahoo.com/united-states/illinois/chicago-2379574/ El último bit es el WOEID para Chicago, es decir, 2379574
Los WOEID se describen en los documentos de GeoPlanet: http://developer.yahoo.com/geo/geoplanet/guide/concepts.html#woeids
Primero obtén el nombre de la ciudad de lat / long usando este código.
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);
}];
Luego usa ese nombre de ciudad en la url inferior
Esto te devolverá json y encontrarás a WEID en este ...
{ "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"
} ]
}
Puede utilizar la API de geocodificación inversa de Flickr a través de YQL.
Aquí hay un enlace al YQL con una consulta de ejemplo para encontrar el WOEID para un determinado lat / lon: http://developer.yahoo.com/yql/console/#h=select%20place.woeid%20from%20flickr.places%20where%20lat%3D43%20and%20lon%3D-94
La consulta anterior se puede llamar directamente desde su aplicación con esta URL (formatos 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
Yahoo! La API de PlaceFinder le permite encontrar un WOEID correspondiente para un par de latitud / longitud. Considere este ejemplo de llamada al método de servicio web:
http://where.yahooapis.com/geocode?location=37.42,-122.12&flags=J&gflags=R&appid=zHgnBS4m
Puedes jugar con los parámetros de solicitud según tus necesidades, consulta Yahoo! Documentación de la API de PlaceFinder para más. Y deberías reemplazar appid con tu Yahoo! Appid, puedes crear uno here .
Esta solicitud devuelve una respuesta como esa, que incluye una gran cantidad de datos útiles junto con el 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"
}
]
}
}