Wie bekomme ich WOEID in der Stadt, wenn ich den Breiten- und Längengrad der Stadt mit YQL kenne?Yahoo YQL: Stadt finden WOEID nach Koordinaten
Antwort
die YQL Konsole verwenden, können Sie für den nächsten Ort mit einem ‚placeTypeName.code‘ von 7
suchen http://developer.yahoo.com/yql/console/
SELECT * FROM geo.places WHERE text="{$seedLat}, {$seedLong}" AND placeTypeName.code = 7
Die REST-Abfrage für diese Abfrage würde wie etwas aussehen;
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=
Offensichtlich $seedLat
und $seedLong
mit Ihrem eigenen Koordinaten zu ersetzen :)
Sie können die offizielle Web-Seite verweisen: http://developer.yahoo.com/boss/geo/docs/free_YQL.html
Hier ist ein exmpale: select * from geo.placefinder wo text = "37.416275, -122.025092" und gflags = "R"
Jetzt nicht mehr arbeiten. – ZYiOS
Für diejenigen, die immer noch versuchen, die WOEID nach Koordinaten zu suchen, sind die anderen Antworten jetzt outdat ed. Verwenden Sie die Datentabelle geo.placefinder
, um den Breiten- und Längengrad nachzuschlagen, und die WOEID wird in den zurückgegebenen Ergebnissen enthalten sein.
Via YQL:
SELECT * FROM geo.placefinder WHERE text="{$seedLat}, {$seedLon}" and gflags="R"
(Test it out on the YQL Console.)
Via 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
Wenn ich diese Abfrage verwende gibt es das Ergebnis als null wähle * aus weather.forecast wo woeid in (woeid aus geo.places (1) where text = "{$ 17.4186947}, {$ 78.5425238}" und gflags = "R ": sein [SELECT * FROM weather.forecast WHERE WOEID IN (SELECT WOEID FROM geo.placefinder WHERE text = Ihre Abfrage sollte) – Navakanth
@Navakanth" 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% 20and% 20gflags% 3D% 22R% 22)) – shshaw
Dies funktioniert nicht mehr. Ich glaube, YQL hat den Zugriff auf die Tischfinder-Tabelle beendet. 'Mieter 'query_yahooapis_com den Zugang zu‚Ressource [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] 'wird abgelehnt.' – Layke
Es ist wie Yahoo sieht hat die geo.placefinder
Tabelle nicht öffentlich gemacht, die Zugangsmittel erfordert eine gültige Anwendungs-ID und OAuth-Authentifizierung (siehe Free Non-Commercial YQL Table Usage). Wenn Sie nur die WOEID wollen und Sie kennen die Stadt und den Staat, können Sie die geo.places
Tabelle statt:
select * from geo.places where text="Hanover, PA" AND placeTypeName.code = 7
Wenn ein Ergebnis gefunden wird, wird die WOEID als data.query.results.place.woeid
zurückgegeben werden.
Dies ist jedoch nicht perfekt. In Pennsylvania haben wir (mindestens) drei Orte, die bei der Suche nach "Hannover" (Hannover in York County, Gemeinde von Hannover in Beaver County und Hanover Township in Luzerne County) angezeigt werden können. Dies kann sich auf Ihre Ergebnisse auswirken, wenn Sie mit dieser Methode suchen. eine Postleitzahl verwenden, sollte die Genauigkeit der Ergebnisse zu erhöhen, und es ist möglich, die Ergebnisse durch die bekannte Breite/Länge mit der boundingBox
Eigenschaft zu filtern:
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
Sie noch brauchen, um einen von mehreren erforderlichen Schlüsseln zur Verfügung stellen (text
ist ein gültiger erforderlicher Schlüssel), so dass dies nicht als Suche ausschließlich nach geographischen Koordinaten gilt, aber hoffentlich zählt dies als zweitbeste.
Würden Sie uns mit einem Beispiel der tatsächlichen URL zeigen, die tatsächlich funktioniert 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 arbeiten. –
Versuchen Sie, Dezimalzahlen anstelle von Ganzzahlen als Parameter zu verwenden. YQL scheint nicht zu mögen, dass beide als Integer übergeben werden. – Chaoley
zeigt sich auch nichts. Sag mir, was die WOEID von SELECT * FROM ist geo.places WHERE text = „6.0,105.0“ AND placeTypeName.code = 7 –