{ // JSON REST services provided by geonames.org // adapted from: http://www.geonames.org/export/JSON-webservices.html // http://creativecommons.org/licenses/by/3.0/ // INCOMPLETE IMPLEMENTATION "SMDVersion":"2.0", "id":"/geonames", "transport":"JSONP", "envelope":"URL", "target": "http://ws.geonames.org/", "parameters" : [ {name:"type", optional: false, "default":"JSON"} ], "services":{ getCountryInfo:{ // Result : returns info about a country such as name, population, etc. // If country parameter is not specified, that information is returned for // every country "target": "countryInfoJSON", "parameters": [ { name: "country", type:"STRING", optional: true }, { name: "lang", type:"STRING"}, // default: "en" { name: "maxRows", type:"INTEGER", optional: true } // default: 10 ] }, getCities:{ // Result : returns a list of cities and placenames in the bounding box, // ordered by relevancy (capital/population). Placenames close together // are filterered out and only the larger name is included in the resulting list. "target": "citiesJSON", "parameters": [ { name: "north", type:"FLOAT"}, { name: "south", type:"FLOAT"}, { name: "east", type:"FLOAT"}, { name: "west", type:"FLOAT"}, { name: "lang", type:"STRING"}, // default: "en" { name: "maxRows", type:"INTEGER", optional: true } // deault: 10 ] }, "getQuakes":{ // Result : returns a list of earthquakes, ordered by magnitude "target" : "earthquakesJSON", "parameters" : [ // bounding box coords: { name: "north", type:"FLOAT" }, { name: "south", type:"FLOAT" }, { name: "east", type:"FLOAT" }, { name: "west", type:"FLOAT" }, { name: "date", type:"STRING",optional: true }, // yyyy-MM-dd { name: "minMagniture", type:"INTERGER",optional: true }, { name: "maxRows", type:"INTEGER", optional: true } // deault: 10 ] }, "getWeather":{ // Weather data is provided in the METAR (METeorological Aerodrome Report) format. // Result : returns a list of weather stations with the most recent weather observation "target" : "weatherJSON", "parameters" : [ { name: "north", type:"FLOAT" }, { name: "south", type:"FLOAT" }, { name: "east", type:"FLOAT" }, { name: "west", type:"FLOAT" }, { name: "maxRows", type:"INTEGER",optional:true } // deault: 10 ] }, "getWeatherByICAO":{ // Result : returns the weather station and the most recent weather observation for the ICAO code "target": "weatherIcaoJSON", "parameters": [ { name:"ICAO", type:"STRING" } ] }, "getWeatherByCoords":{ // Result : returns a weather station with the most recent weather observation "target": "findNearByWeatherJSON", "parameters": [ { name:"lat", type:"FLOAT" }, { name:"lng", type:"FLOAT" } ] }, "getChildren":{ // Returns the children for a given geonameId. The children are the // administrative divisions within an other administrative division. // Like the counties (ADM2) in a state (ADM1) or also the countries // in a continent. "target": "childrenJSON", "parameters": [ { name:"geonameId", type:"INTEGER" } ] }, "getHierarchy":{ // Result : returns a list of GeoName records, ordered by hierarchy // level. The top hierarchy (continent) is the first element in the list "target": "hierarchyJSON", "parameters": [ { name:"geonameId", type:"INTEGER" } ] }, "getNeighbours":{ // The neighbourhood for US cities. Data provided by Zillow under cc-by-sa license. "target":"neighboursJSON", "parameters": [ { name:"geonameId", type:"INTEGER" } //{ name:"lat", type:"FLOAT" }, //{ name:"long", type:"FLOAT" } ] }, "getNeighbourhood":{ // returns the neighbourhood for the given latitude/longitude // Example http://ws.geonames.org/neighbourhood?lat=40.78343&lng=-73.96625 "target":"neighbourhoodJSON", "parameters":[ { name:"lat", type:"FLOAT" }, { name:"lng", type:"FLOAT" }, { name:"radius", type:"FLOAT" } ] }, "getSiblings":{ // Result : returns a list of GeoNames records that have the same // administrative level and the same father "target":"siblingsJSON", "parameters": [ { name:"geonameId", type:"INTEGER" } ] }, "getCountryCode":{ // returns the iso country code for the given latitude/longitude // With the parameter type=xml this service returns an xml document // with iso country code and country name. The optional parameter // lang can be used to specify the language the country name should // be in. JSON output is produced with type=JSON "target":"countryCode", "parameters": [ { name:"lat", type:"FLOAT" }, { name:"lng", type:"FLOAT" }, { name:"lang", type:"STRING",optional:true }, { name:"radius", type:"FLOAT" } ] }, "getCountrySubdivision":{ // returns the country and the administrative subdivison (state, province,...) for the given latitude/longitude // Example http://ws.geonames.org/countrySubdivisionJSON?lat=47.03&lng=10.2 "target":"countrySubdivisionJSON", "parameters":[ { name:"lat", type:"FLOAT" }, { name:"long", type:"FLOAT" }, { name:"radius", type:"FLOAT" } ] }, "getWikipediaBoundingBox":{ // returns the wikipedia entries within the bounding box as xml document // Example http://ws.geonames.org/wikipediaBoundingBoxJSON?north=44.1&south=-9.9&east=-22.4&west=55.2 "target":"wikipediaBoundingBoxJSON", "parameters":[ { name: "north", type:"FLOAT" }, { name: "south", type:"FLOAT" }, { name: "east", type:"FLOAT" }, { name: "west", type:"FLOAT" }, { name: "lang", type:"STRING",optional:true }, // default: "en" { name: "maxRows", type:"INTEGER",optional:true } // default: 10 ] }, "searchWikipedia":{ // returns the wikipedia entries found for the searchterm as xml document // Example http://ws.geonames.org/wikipediaSearchJSON?q=london&maxRows=10 "target":"wikipediaSearchJSON", "parameters":[ { name: "q", type:"STRING" }, // place name? { name: "title", type:"STRING" }, // optional { name: "lang", type:"FLOAT",optional:true }, // de or en { name: "maxRows", type:"INTEGER",optional:true } // default: 10 ] }, "getTimezone":{ // the timezone at the lat/lng with gmt offset (1. January) and dst offset (1. July) "target":"timezoneJSON", "parameters":[ { name:"lat", type:"FLOAT" }, { name:"lng", type:"FLOAT" } ] }, "search":{ // returns the names found for the searchterm as xml or json document, // the search is using an AND operator "target":"searchJSON", "parameters":[ // exhaustive list. see: http://www.geonames.org/export/geonames-search.html { name:"q", type:"STRING" }, { name:"name", type:"STRING" }, { name:"name_equals", type:"STRING" }, // optional: { name:"maxRows", type:"INTEGER",optional:true }, // def: 100, max:1000 { name:"startRow", type:"INTEGER",optional:true }, // def: 0 { name:"country", type:"STRING",optional:true }, // iso-3166, def: all /* name:"adminCode..." */ { name:"featureClass", type:"STRING",optional:true}, // ? multi, enum(a,h,l,p,r,s,t,u,v) { name:"featureCode", type:"STRING",optional:true}, { name:"lang", type:"STRING",optional:true}, // iso-636 { name:"type", type:"STRING",optional:true}, // xml | json | rdf, def: xml { name:"style", type:"STRING",optional:true }, // SHORT,MEDIUM,LONG,FULL def: MEDIUM { name:"isNamedRequired", type:"BOOLEAN", optional:true } ] }, "postalCodeLookup":{ // returns a list of places for the given postalcode in JSON format // Example http://ws.geonames.org/postalCodeLookupJSON?postalcode=6600&country=AT "target":"postalCodeLookupJSON", "parameters":[ { name:"postalcode", type:"STRING" }, { name:"country", type:"STRING",optional:true}, { name:"maxRows", type:"INTEGER", optional:true }, // def: 20 { name:"charset", type:"STRING",optional:true } // def: utf-8 ] }, "postalCodeSearch":{ "target":"postalCodeSearchJSON", "parameters":[ { name:"postalcode", type:"STRING",optional:true}, // one or the other { name:"placename", type:"STRING",optional:true }, // one or the other { name:"country", type:"STRING",optional:true}, { name:"style", type:"STRING",optional:true}, // def: MEDIUM { name:"maxRows", type:"INTEGER",optional:true}, // def: 20 { name:"charset", type:"STRING",optional:true} // def: utf-8 ] } // TODO: implement: // findNearby, // findNearbyPlaceName // findNearbyPostalCodes, // findNearbyStreets, // findNearByWeather // findNearByWikipedia // findNeareastAddress // findNearestInterestion // get // gtop30 // srtm3 } // end services }