web-dev-qa-db-ja.com

YahoosAPIを使用してLat、LongでWOEIDを受け取る

私はしばらく検索しましたが何も見つかりませんでした。それは私の問題に似ています。

たとえば、YAHOO Weather APIを使用しようとしています。 http://weather.yahooapis.com/forecastrss?w=4097

私の場合、WOEIDはわかりませんが、緯度と経度のポイントを取得しました。

だから私の質問は:緯度と経度のポイントを使用して場所のWOEIDを取得する方法はありますか?

18
choise

これはYahooのAPIを使用していませんが、次のブログ投稿を見つけました: http://geomojo.org/?p=38

このサービスについて: http://www.geomojo.org/cgi-bin/reversegeocoder.cgi?long=-117.699444&lat=35.4775

おそらくあなたはそれを使うことができますか?それは私の問題を解決しました、私はそれがあなたの問題を解決するのに役立つことを願っています。

8
salt.racer

まず、このコードを使用してlat/longから都市名を取得します。

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);
               }];

次に、以下のURLでその都市名を使用します

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

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

これはjsonを返し、これでWOEIDを取得します...

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

Yahooがlat/lonを介してWOEIDの検索方法を提供していないことはいくらかばかげています。

Geomojoで実装されている推奨回避策を使用しないように警告します。それがあなたのデータに対して機能するなら、素晴らしいですが、Geomojoが依存しているYahooサービスは予測できません。 GeomojoはYahooのPlaceMakerを使用しており、非構造化テキストから位置情報を抽出してWOEIDを取得します。これは、緯度/経度のペアを含むマイクロフォーマットを作成し、それをPlaceMakerに送信することによって行われます。ただし、PlaceMakerは郵便番号のWOEIDを返すため、解像度が失われ、送信された座標の町でさえ識別できない場合があります。 PlaceMaker WOEIDが提出された緯度/経度のペアに対応していない米国の東海岸に、いくつかの 例のポイント があります。

不思議なことに、HDが書いているように、FlickrのAPIだけが lat/lonからWOEIDを検索する への簡単な方法を提供します。 FlickrのfindByLatLonメソッドの解像度は優れています。通常、座標のペアの近隣(町の1レベル下)を返します。

3
Ryan

YQLを通じてFlickrの逆ジオコーディングAPIを使用できます。

以下は、特定の緯度/経度のWOEIDを検索するためのクエリ例を含むYQLへのリンクです。 http://developer.yahoo.com/yql/console/#h=select%20place.woeid%20from %20flickr.places%20where%20lat%3D43%20and%20lon%3D-94

上記のクエリは、次のURLを使用してアプリから直接呼び出すことができます(XML/JSON形式が利用可能): http://query.yahooapis.com/v1/public/yql?q=select%20place.woeid%20from %20flickr.places%20where%20lat%3D43%20and%20lon%3D-94&format = xml

2
ejunker

あなたはそれを間違った方法で手に入れたようです。これはweather.yahoo.comのURLです:weather.yahoo.com/united-states/illinois/chicago-2379574/最後のビットはシカゴのWOEID、つまり2379574です。

WOEIDについては、GeoPlanetのドキュメントで説明されています。 http://developer.yahoo.com/geo/geoplanet/guide/concepts.html#woeids

2
Walter

以前のYahooWeatherAPIは非推奨になりました。 新しいYahoo Weather API は、天気を取得するためにクエリ文字列を必要とします。

次のクエリ文字列を使用して、緯度と経度で気象データを取得します-
"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"

例- 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

Lng&latを使用する代わりに、現在のオンラインIPアドレスを使用して都市名を取得してから、Yahoo GeoPlanet Webサービスを使用してWOEIDを取得できます。詳細については、このチュートリアルに従ってください: http://4rapiddev.com/php/get-woeid-of-a-city-name-from-ip-address-with-php/

0
Hoan Huynh

YDNフォーラムにこの問題に関するトピックがあります http://developer.yahoo.net/forum/index.php?showtopic=69

2008年から、やることリストに埋もれているようです。「経度と緯度の座標のセットをWOEIDにマッピングする機能は、ZipやStateなどの情報を取得できるため、すでに価値のある機能として識別されています。それは私たちの拡張リクエストリストにあります。」

その他の引用;

「FlickrにはWOEIDを返すflickr.places.findByLatLonというメソッドがありますが、座標を小数点以下3桁に切り捨てます。」

このトピックでは、Yahooの開発者が暫定的な解決策として http://geomojo.org/?p=38 のアドバイスを使用することも提案しています。

0
Chaoley