我搜索了一段时间,但什么也没找到,这与我的问题类似。
我正在尝试使用 YAHOO Weather API,例如:http ://weather.yahooapis.com/forecastrss?w=4097
我不知道我的 WOEID,但我有纬度和经度点。
所以我的问题是:有没有办法通过使用经纬度点来获取一个地方的 WOEID?
我搜索了一段时间,但什么也没找到,这与我的问题类似。
我正在尝试使用 YAHOO Weather API,例如:http ://weather.yahooapis.com/forecastrss?w=4097
我不知道我的 WOEID,但我有纬度和经度点。
所以我的问题是:有没有办法通过使用经纬度点来获取一个地方的 WOEID?
现在可以通过最近发布的PlaceFinder API 获得。向雅虎致敬!提供了地理难题的另一个重要部分。
雅虎!PlaceFinder API 允许您为纬度/经度对找到对应的 WOEID。考虑这个示例 Web 服务方法调用:
http://where.yahooapis.com/geocode?location=37.42,-122.12&flags=J&gflags=R&appid=zHgnBS4m
您可以根据需要使用请求参数,请参阅Yahoo! PlaceFinder API 文档了解更多信息。你应该用你的 Yahoo! 替换 appid!appid,你可以在这里创建一个。
这个请求会返回一个类似的响应,其中包括许多有用的数据以及 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"
}
]
}
}
这没有使用雅虎的 API,但我发现了这篇博文: http ://geomojo.org/?p=38
提到这项服务: http ://www.geomojo.org/cgi-bin/reversegeocoder.cgi?long=-117.699444&lat=35.4775
也许你可以使用它?它解决了我的问题,我希望它有助于解决你的问题。
雅虎不提供通过纬度/经度查找 WOEID 的方法有点荒谬——自 2008 年以来它一直在他们的待办事项列表上——但这就是现状。
我会提醒您不要使用在 Geomojo 实施的建议解决方法。如果它适用于您的数据,那很好,但是 Geomojo 所依赖的 Yahoo 服务是不可预测的。Geomojo 使用雅虎的 PlaceMaker,它从非结构化文本中提取位置信息以获取 WOEID。它通过创建一个包含您的纬度/经度对的微格式并将其提交给 PlaceMaker 来实现这一点。但是,由于 PlaceMaker 返回邮政编码的 WOEID,因此会丢失分辨率,有时您甚至无法识别提交坐标的城镇。我在美国东海岸有许多示例点,其中 PlaceMaker WOEID 与提交的纬度/经度对不对应。
奇怪的是,正如 HD 所写,只有 Flickr 的 API 提供了一种从 lat/lon 查找 WOEID的简单方法。Flickr 的 findByLatLon 方法具有很好的分辨率。它通常会为一对坐标返回一个社区(城镇以下一层)。
首先使用此代码从纬度/经度获取城市名称。
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);
}];
然后在下面的网址中使用该城市名称
这将返回 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"
} ]
}
好像你弄错了。这是 weather.yahoo.com 上的 URL:weather.yahoo.com/united-states/illinois/chicago-2379574/ 最后一位是芝加哥的 WOEID,即 2379574
GeoPlanet 文档中描述了 WOEID:http: //developer.yahoo.com/geo/geoplanet/guide/concepts.html#woeids
您可以通过 YQL 使用 Flickr 的反向地理编码 API。
这是一个指向 YQL 的链接,其中包含一个示例查询,用于查找给定纬度/经度的 WOEID: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
在 YDN 论坛上有一个关于这个问题的话题 http://developer.yahoo.net/forum/index.php?showtopic=69
看起来它被埋在待办事项列表中,从 2008 年开始“将一组经度和纬度坐标映射到 WOEID 的能力,从中可以得出 ZIP 和州等信息,已被确定为一项有价值的功能,并且它在我们的增强请求列表中。”
其他报价;
“Flickr 有一个方法:flickr.places.findByLatLon,它返回一个 WOEID,但它们会将坐标截断到小数点后三位。”
在本主题中,Yahoo 开发人员还建议使用http://geomojo.org/?p=38上的建议作为临时解决方案。
代替使用 lng 和 lat,您可以使用当前在线 IP 地址获取城市名称,然后使用 Yahoo GeoPlanet 网络服务获取 WOEID。按照本教程获取详细信息:http: //4rapiddev.com/php/get-woeid-of-a-city-name-from-ip-address-with-php/
以前的 Yahoo Weather API 已被弃用。新的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"
Yahoo api实际上使用weather.com,因此请访问weather.com并搜索您当地的天气。我在芝加哥,所以我输入了“伊利诺伊州芝加哥”,这是我浏览器栏中显示我的天气的链接:
http://www.weather.com/weather/today/Chicago+IL+ USIL0225 ?lswe=chicago,%20il&from=searchbox_localwx
在链接中是 woeid - 这是 USIL0225
你可以用同样的方式得到你的。