2012-05-23 38 views

Respuesta

1

Uso de la consola YQL, puede buscar el lugar más cercano con un 'placeTypeName.code' de 7

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

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

La consulta RESTO para esta consulta sería algo así;

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= 

reemplazando Obviamente $seedLat y $seedLong con sus propias coordenadas :)

+0

¿Podría mostrarnos una muestra de la URL real que realmente funciona http: // 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 doesn ' t trabajo. –

+0

Trate de usar decimales en lugar de números enteros como parámetros, parece que YQL no quiere que ambos pasen como puntos. – Chaoley

+0

nada aparece tampoco. Dime cuál es el significado de SELECT * FROM geo.places WHERE text = "6.0,105.0" AND placeTypeName.code = 7 –

8

Para aquellos que todavía intentan buscar el WOEID por coordenadas, las otras respuestas están ahora obsoletas ed. Use la tabla de datos geo.placefinder para buscar la latitud y longitud, y WOEID aparecerá en los resultados devueltos.

Via YQL:

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

(Test it out on the YQL Console.)

Via RESTO:

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 
+0

cuando uso esta consulta está dando resultado como nulo select * from weather.forecast where woeid in (seleccione woeid de geo.places (1) donde text = "{$ 17.4186947}, {$ 78.5425238}" y gflags = "R ") – Navakanth

+0

@Navakanth: su consulta debe ser [' SELECT * FROM weather.forecast WHERE woeid IN (SELECCIONE woeid FROM geo.placefinder WHERE text = "17.4186947,78.5425238" AND gflags = "R") '] (http: // developer.yahoo.com/yql/console/?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.placefinder%20where%20text%3D%2217.4186947% 2C78.5425238% 22% 20 y% 20gflags% 3D% 22R% 22)) – shshaw

+10

Esto ya no funciona. Creo que YQL ha cerrado el acceso de dwon a la tabla del buscador de lugares. 'Tenant 'query_yahooapis_com' acceso a 'Recurso [tenantName = query_yahooapis_com, tipo = TABLE, nombre = 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] 'está denegado. – Layke

2

Parece que Yahoo ha hecho que la geo.placefinder mesa no pública, lo que significa que el acceso requiere una identificación de aplicación válida y autenticación OAuth (ver Free Non-Commercial YQL Table Usage). Si lo que desea es la WOEID y sabes la ciudad y estado, puede utilizar la tabla geo.places lugar:

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

YQL Console

Si se encuentra un resultado, el WOEID será devuelto como data.query.results.place.woeid.

Sin embargo, esto no es perfecto. En Pensilvania tenemos (al menos) tres lugares que pueden aparecer cuando se busca "Hanover" (Hanover en el condado de York, el municipio de Hanover en el condado de Beaver y el municipio de Hanover en el condado de Luzerne). Esto puede o no afectar sus resultados al buscar utilizando este método. El uso de un código postal debe aumentar la precisión de los resultados, y es posible filtrar los resultados por la latitud/longitud conocida con el boundingBox propiedad:

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

Usted todavía tendrá que proporcione una de varias claves obligatorias (text es una clave requerida válida), por lo que esto no califica como buscar únicamente por coordenadas geográficas, pero esperamos que esto cuente como el segundo mejor.

Cuestiones relacionadas