Pergunta

Eu procurei um pouco, mas não encontrei nada, isso é simular ao meu problema.

Estou tentando usar a API climática do Yahoo, por exemplo: http://weather.yahooapis.com/forecastrss?w=4097

Não conheço o afloramento no meu caso, mas recebi pontos de latitude e longitude.

Então, minha pergunta é: existe uma maneira de obter o aflição de um lugar usando Lat e Long Points?

Foi útil?

Solução

Isso agora está disponível através do lançado recentemente Placefinder API. Parabéns ao Yahoo! por fornecer mais uma peça importante do quebra -cabeça Geo.

Outras dicas

Yahoo! O PlaceFinder API permite encontrar um WOEID correspondente para um par de latitude/longitude. Considere este exemplo de chamada do método de serviço da web:

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

Você pode brincar com os parâmetros de solicitação de acordo com suas necessidades, veja Yahoo! Documentação da API PlaceFinder para mais. E você deve substituir o Appid pelo seu Yahoo! Appid, você pode criar um aqui.

Esta solicitação retorna uma resposta como essa, que inclui muitos dados úteis junto com o 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"
            }
        ]
    }
}

Isso não está usando a API do Yahoo, mas encontrei esta postagem no blog:http://geomojo.org/?p=38

Mencionando este serviço:http://www.geomojo.org/cgi-bin/reversegeocoder.cgi?long=-117.699444&lat=35.4775

Talvez você possa usar isso? Ele resolveu meu problema, espero que ajude a resolver o seu.

É um tanto ridículo que o Yahoo não forneça um método de pesquisa para woeids via Lat/Lon-está em sua lista de tarefas desde 2008-mas esse é o estado das coisas.

Eu o alertaria contra o uso da solução alternativa sugerida implementada em Geomojo. Se funciona para seus dados, ótimo, mas o serviço do Yahoo em que o Geomojo confia é imprevisível. O Geomojo usa o Placemaker do Yahoo, que extrai informações de localização do texto não estruturado para obter um Woeid. Faz isso criando um microformato contendo seu par Lat/Lon e enviando -o ao Placemaker. No entanto, como o Placemaker retorna os woeids para códigos postais, há uma perda de resolução e às vezes você não pode identificar nem mesmo a cidade para coordenadas enviadas. Eu tenho vários Exemplo de pontos Na costa leste dos EUA, onde os woeids do placemaker não correspondem aos pares Lat/Lon enviados.

Estranhamente, como HD escreve, apenas a API do Flickr fornece uma maneira simples de Procure um woeid de Lat/Lon. O método FindBylatlon do Flickr tem uma grande resolução. Geralmente, retorna um bairro (um nível abaixo da cidade) para um par de coordenadas.

Primeiro, obtenha o nome da cidade 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);
               }];

Em seguida, use esse nome da cidade abaixo do url

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

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

Isso retornará JSON e você encontrará Woeid nisso ...

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

Parece que você conseguiu o caminho errado. Este é o URL no Weather.yahoo.com: Weather.yahoo.com/united-stats/illinois/chicago-2379574/ O último bit é o Woeid para Chicago, ou seja, 2379574

Os woeids são descritos nos documentos de geoplanet:http://developer.yahoo.com/geo/geoplanet/guide/conccepts.html#woeids

Você pode usar a API de geocodificação reversa do Flickr através do YQL.

Aqui está um link para o YQL com um exemplo de consulta para encontrar o woeid para um determinado Lat/Lon:http://developer.yahoo.com/yql/console/#h=select%20place.woeid%20From%20flickr.Places%20where%20Lat%3D43%20and%20lon%3D-94

A consulta acima pode ser chamada diretamente do seu aplicativo com este URL (formatos XML/JSON disponíveis):http://query.yahooapis.com/v1/public/yql?q=select%20place.woeid%20from%20flickr.places%20where%20lat%3d43%20and%20lon%3d-94&format=xml

Há um tópico sobre esse problema nos fóruns do YDN http://developer.yahoo.net/forum/index.php?showtopic=69

Parece que está enterrado na lista de tarefas, de 2008 "A capacidade de mapear um conjunto de coordenadas de longitude e latitude para um aflição, a partir do qual informações como zip e estado podem ser derivadas, já foram identificadas como uma característica valiosa e Está em nossa lista de solicitações de aprimoramento. "

Outras citações;

"O Flickr tem um método: Flickr.Places.findbylatlon que retorna um aflição, mas eles truncam coordenadas a três lugares decimais".

Neste tópico, um Yahoo Dev também sugere usar o conselho em http://geomojo.org/?p=38 como uma solução provisória.

Em vez disso, usando o LNG & LAT, você pode usar o endereço IP on -line atual para obter o nome da cidade e usar o Serviço da Web do Yahoo Geoplanet para obter o woeid. Siga este tutorial para obter os detalhes: http://4rapiddev.com/php/get-woeid-of-a-city-name-from-ip-address-with-php/

A antiga API climática do Yahoo ficou deprimida. o Nova API climática do Yahoo Requer uma sequência de consulta para obter o clima.

Use a seguinte sequência de consulta para obter dados climáticos por latitude e 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"

Por exemplo - https://query.yahooapis.com/v1/public/yql?q=select%20*%20From%20Weather.forecast%20where%20woeid%20in%20(select%20woeid%20From%20Geo.Places Assinar 20where%20text%3d%22 (31,63%2C74.87)%22) & formato = json

O Yahoo API usa o Weather.com, então vá para o Weather.com e procure o seu tempo local. Estou em Chicago, então entrei 'Chicago, Il' e aqui está o link no meu bar de navegador mostrando meu clima:

http://www.weather.com/weather/today/chicago+il+USIL0225? lswe = chicago,%20il & de = Searchbox_localwx

No link está o woeid - que é USIL0225

Você pode obter o seu da mesma maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top