Yahoo YQL: найти город WOEID по координатам

Как получить WOEID города, если я знаю широту и долготу города, используя YQL?


person Ivan Bajalovic    schedule 23.05.2012    source источник


Ответы (5)


Используя консоль 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 своими координатами :)

person Chaoley    schedule 29.05.2012
comment
Не могли бы вы показать нам пример фактического URL-адреса, который действительно работает query.yahooapis .com/v1/public/yql?q=SELECT%20*%20FROM%20geo.places%20WHERE%20text%3D%225%2C%20106%22%20AND%20placeTypeName.code%20%3D% 207 не работает. - person Anonymous White; 21.10.2012
comment
Попробуйте использовать десятичные числа вместо целых чисел в качестве параметров, YQL, похоже, не нравится, когда оба параметра передаются как целые числа. - person Chaoley; 24.10.2012
comment
тоже ничего не появляется. Скажите, какой WOEID у SELECT * FROM geo.places WHERE text=6.0,105.0 AND placeTypeName.code = 7 - person Anonymous White; 25.10.2012
comment
Во-первых, если в их базе данных ничего нет на этой широте/долготе, результата не будет, сначала проверьте количество результатов. Во-вторых, я запускал этот запрос много тысяч раз через API, он работал нормально. Однако я только что запустил скрипт на 30 минут, и он всегда возвращает 0 результатов, похоже, Yahoo отключил его. Наконец, вы должны сделать свою собственную домашнюю работу, самостоятельно создать сценарий тестирования и попробовать запрос REST с рядом пар широта/долгота. - person Chaoley; 07.11.2012
comment
Этот ответ больше не применим, так как Yahoo внесла изменения. Приведенные ниже ответы shshaw и Chuanyung Lin теперь являются правильными ответами. - person Chaoley; 27.05.2015

Для тех, кто все еще пытается найти WOEID по координатам, другие ответы уже устарели. Используйте таблицу данных geo.placefinder для поиска широты и долготы, и WOEID будет в возвращаемых результатах.

Через YQL:

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

(Проверьте на консоли YQL.)

Через ОТДЫХ:

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
person shshaw    schedule 25.09.2013
comment
когда я использую этот запрос, он дает результат как нулевой выбор * из weather.forecast, где woeid (выберите woeid из geo.places (1), где текст = {$ 17,4186947}, {$ 78,5425238} и gflags = R) - person Navakanth; 09.05.2015
comment
comment
Это больше не работает. Я полагаю, что YQL закрыла доступ к таблице поиска мест. Tenant 'query_yahooapis_com' access to 'Resource [tenantName=query_yahooapis_com, type=TABLE, name=geo.placefinder, locatorType=FILE, url=/home/y/share/manhattan/application/tenantBundles/yql_query_yahooapis_com_manhattan_v2/YQL-INF/restdefs/geo.placefinder.xml, useUrl=false]' is denied. - person Layke; 26.01.2016

Вы можете сослаться на официальную веб-страницу: http://developer.yahoo.com/boss/geo/docs/free_YQL.html

Вот пример: выберите * из geo.placefinder, где text="37.416275,-122.025092" и gflags="R"

person Chuanyung Lin    schedule 28.03.2013

Похоже, Yahoo сделала таблицу geo.placefinder закрытой, что означает, что для доступа требуется действительный идентификатор приложения и аутентификация OAuth (см. Бесплатное некоммерческое использование таблицы YQL). Если вам просто нужен WOEID и вы знаете город и штат, вы можете вместо этого использовать таблицу geo.places:

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

Консоль YQL

Если результат найден, 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

Вам по-прежнему нужно будет предоставить один из нескольких обязательных ключей (text является действительным обязательным ключом), так что это не квалифицируется как поиск исключительно по географическим координатам, но, надеюсь, это считается вторым лучшим.

person thirdender    schedule 03.03.2016

Ни один из предыдущих ответов больше не работает, но это работает.

Вам нужно объединить таблицу мерцания в запросе, например так: select place.woeid from flickr.places where lat="" and lon="" and api_key=""

Получить КЛЮЧ API от Flickr можно мгновенно: https://www.flickr.com/services/apps/create/

person Jose Daniel Vivar Personat    schedule 05.12.2018
comment
Yahoo YQL больше нет? - person stuckedoverflow; 15.01.2019