Yahoo YQL:按坐标查找城市WOEID

时间:2012-05-23 07:32:46

标签: yql yahoo-api

如果我使用YQL了解城市的纬度和经度,如何获得城市的WOEID?

5 个答案:

答案 0 :(得分:8)

对于那些仍然试图通过坐标查找WOEID的人来说,其他答案现在已经过时了。使用geo.placefinder数据表查找纬度和经度,WOEID将在返回的结果中。

通过YQL:

SELECT * FROM geo.placefinder WHERE text="{$seedLat}, {$seedLon}" and gflags="R"

Test it out on the YQL Console。)

通过REST:

http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20geo.placefinder%20WHERE%20text%3D%22{$seedLat}%2C{$seedLon}%22%20and%20gflags%3D%22R%22

答案 1 :(得分:2)

您可以参考官方网页: http://developer.yahoo.com/boss/geo/docs/free_YQL.html

这是一个例外: 从geo.placefinder中选择*,其中text =“37.416275,-122.025092”和gflags =“R”

答案 2 :(得分:2)

看起来Yahoo已使geo.placefinder表非公开,这意味着访问需要有效的应用程序ID和OAuth身份验证(请参阅Free Non-Commercial YQL Table Usage)。如果您只想要WOEID并且您知道城市和州,则可以使用geo.places表来代替:

select * from geo.places where text="Hanover, PA" AND placeTypeName.code = 7

YQL Console

如果找到结果,WOEID将返回data.query.results.place.woeid

然而,这并不完美。在宾夕法尼亚州,我们(至少)有三个地方可以在寻找“汉诺威”(约克郡的汉诺威,比弗县的汉诺威镇和卢泽恩县的汉诺威镇)时出现。使用此方法搜索时,这可能会影响您的结果,也可能不会影响您使用邮政编码可以提高结果的准确性,并且可以使用boundingBox属性按已知的纬度/经度过滤结果:

select * from geo.places where text="Eagle, Wisconsin" AND
  boundingBox.southWest.latitude <= 42.9147280 AND
  boundingBox.southWest.longitude <= -88.4426340 AND
  boundingBox.northEast.latitude >= 42.9147280 AND
  boundingBox.northEast.longitude >= -88.4426340 AND
  placeTypeName.code = 7

YQL Console

你仍然需要提供几个必需的密钥之一(text是一个有效的必需密钥),所以这不符合仅按地理坐标搜索的条件,但希望这算是第二好的。

答案 3 :(得分:1)

使用YQL控制台,您可以搜索“placeTypeName.code”为7的最近位置

http://developer.yahoo.com/yql/console/

SELECT * FROM geo.places WHERE text="{$seedLat}, {$seedLong}" AND placeTypeName.code = 7

此查询的REST查询类似于;

http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20geo.places%20WHERE%20text%3D%22{$seedLat}%2C%20{$seedLong}%22%20AND%20placeTypeName.code%20%3D%207&format=json&diagnostics=true&callback=

显然用自己的坐标替换$seedLat$seedLong:)

答案 4 :(得分:0)

以前的答案都无法使用,但是可以。

您需要在查询中组合闪烁表,如下所示: select place.woeid from flickr.places where lat="" and lon="" and api_key=""

立即从Flickr获取API密钥: https://www.flickr.com/services/apps/create/