root / trunk / web / dojo / dojox / rpc / SMDLibrary / geonames.smd
History | View | Annotate | Download (9.27 KB)
| 1 | 9 | andrej.cim | {
|
|---|---|---|---|
| 2 | |||
| 3 | // JSON REST services provided by geonames.org |
||
| 4 | // adapted from: http://www.geonames.org/export/JSON-webservices.html |
||
| 5 | // http://creativecommons.org/licenses/by/3.0/ |
||
| 6 | // INCOMPLETE IMPLEMENTATION |
||
| 7 | |||
| 8 | "SMDVersion":"2.0", |
||
| 9 | "id":"/geonames", |
||
| 10 | "transport":"JSONP", |
||
| 11 | "envelope":"URL", |
||
| 12 | "target": "http://ws.geonames.org/", |
||
| 13 | |||
| 14 | "parameters" : [ |
||
| 15 | {name:"type", optional: false, "default":"JSON"}
|
||
| 16 | ], |
||
| 17 | |||
| 18 | "services":{
|
||
| 19 | getCountryInfo:{
|
||
| 20 | // Result : returns info about a country such as name, population, etc. |
||
| 21 | // If country parameter is not specified, that information is returned for |
||
| 22 | // every country |
||
| 23 | "target": "countryInfoJSON", |
||
| 24 | "parameters": [ |
||
| 25 | { name: "country", type:"STRING", optional: true },
|
||
| 26 | { name: "lang", type:"STRING"}, // default: "en"
|
||
| 27 | { name: "maxRows", type:"INTEGER", optional: true } // default: 10
|
||
| 28 | ] |
||
| 29 | }, |
||
| 30 | |||
| 31 | getCities:{
|
||
| 32 | // Result : returns a list of cities and placenames in the bounding box, |
||
| 33 | // ordered by relevancy (capital/population). Placenames close together |
||
| 34 | // are filterered out and only the larger name is included in the resulting list. |
||
| 35 | "target": "citiesJSON", |
||
| 36 | "parameters": [ |
||
| 37 | { name: "north", type:"FLOAT"},
|
||
| 38 | { name: "south", type:"FLOAT"},
|
||
| 39 | { name: "east", type:"FLOAT"},
|
||
| 40 | { name: "west", type:"FLOAT"},
|
||
| 41 | { name: "lang", type:"STRING"}, // default: "en"
|
||
| 42 | { name: "maxRows", type:"INTEGER", optional: true } // deault: 10
|
||
| 43 | ] |
||
| 44 | }, |
||
| 45 | |||
| 46 | "getQuakes":{
|
||
| 47 | // Result : returns a list of earthquakes, ordered by magnitude |
||
| 48 | "target" : "earthquakesJSON", |
||
| 49 | "parameters" : [ |
||
| 50 | // bounding box coords: |
||
| 51 | { name: "north", type:"FLOAT" },
|
||
| 52 | { name: "south", type:"FLOAT" },
|
||
| 53 | { name: "east", type:"FLOAT" },
|
||
| 54 | { name: "west", type:"FLOAT" },
|
||
| 55 | { name: "date", type:"STRING",optional: true }, // yyyy-MM-dd
|
||
| 56 | { name: "minMagniture", type:"INTERGER",optional: true },
|
||
| 57 | { name: "maxRows", type:"INTEGER", optional: true } // deault: 10
|
||
| 58 | ] |
||
| 59 | }, |
||
| 60 | |||
| 61 | "getWeather":{
|
||
| 62 | // Weather data is provided in the METAR (METeorological Aerodrome Report) format. |
||
| 63 | // Result : returns a list of weather stations with the most recent weather observation |
||
| 64 | "target" : "weatherJSON", |
||
| 65 | "parameters" : [ |
||
| 66 | { name: "north", type:"FLOAT" },
|
||
| 67 | { name: "south", type:"FLOAT" },
|
||
| 68 | { name: "east", type:"FLOAT" },
|
||
| 69 | { name: "west", type:"FLOAT" },
|
||
| 70 | { name: "maxRows", type:"INTEGER",optional:true } // deault: 10
|
||
| 71 | ] |
||
| 72 | }, |
||
| 73 | |||
| 74 | "getWeatherByICAO":{
|
||
| 75 | // Result : returns the weather station and the most recent weather observation for the ICAO code |
||
| 76 | "target": "weatherIcaoJSON", |
||
| 77 | "parameters": [ |
||
| 78 | { name:"ICAO", type:"STRING" }
|
||
| 79 | ] |
||
| 80 | }, |
||
| 81 | |||
| 82 | "getWeatherByCoords":{
|
||
| 83 | // Result : returns a weather station with the most recent weather observation |
||
| 84 | "target": "findNearByWeatherJSON", |
||
| 85 | "parameters": [ |
||
| 86 | { name:"lat", type:"FLOAT" },
|
||
| 87 | { name:"lng", type:"FLOAT" }
|
||
| 88 | ] |
||
| 89 | }, |
||
| 90 | |||
| 91 | "getChildren":{
|
||
| 92 | // Returns the children for a given geonameId. The children are the |
||
| 93 | // administrative divisions within an other administrative division. |
||
| 94 | // Like the counties (ADM2) in a state (ADM1) or also the countries |
||
| 95 | // in a continent. |
||
| 96 | "target": "childrenJSON", |
||
| 97 | "parameters": [ |
||
| 98 | { name:"geonameId", type:"INTEGER" }
|
||
| 99 | ] |
||
| 100 | }, |
||
| 101 | |||
| 102 | "getHierarchy":{
|
||
| 103 | // Result : returns a list of GeoName records, ordered by hierarchy |
||
| 104 | // level. The top hierarchy (continent) is the first element in the list |
||
| 105 | "target": "hierarchyJSON", |
||
| 106 | "parameters": [ |
||
| 107 | { name:"geonameId", type:"INTEGER" }
|
||
| 108 | ] |
||
| 109 | }, |
||
| 110 | |||
| 111 | "getNeighbours":{
|
||
| 112 | // The neighbourhood for US cities. Data provided by Zillow under cc-by-sa license. |
||
| 113 | "target":"neighboursJSON", |
||
| 114 | "parameters": [ |
||
| 115 | { name:"geonameId", type:"INTEGER" }
|
||
| 116 | //{ name:"lat", type:"FLOAT" },
|
||
| 117 | //{ name:"long", type:"FLOAT" }
|
||
| 118 | ] |
||
| 119 | }, |
||
| 120 | |||
| 121 | "getNeighbourhood":{
|
||
| 122 | // returns the neighbourhood for the given latitude/longitude |
||
| 123 | // Example http://ws.geonames.org/neighbourhood?lat=40.78343&lng=-73.96625 |
||
| 124 | "target":"neighbourhoodJSON", |
||
| 125 | "parameters":[ |
||
| 126 | { name:"lat", type:"FLOAT" },
|
||
| 127 | { name:"lng", type:"FLOAT" },
|
||
| 128 | { name:"radius", type:"FLOAT" }
|
||
| 129 | ] |
||
| 130 | }, |
||
| 131 | |||
| 132 | "getSiblings":{
|
||
| 133 | // Result : returns a list of GeoNames records that have the same |
||
| 134 | // administrative level and the same father |
||
| 135 | "target":"siblingsJSON", |
||
| 136 | "parameters": [ |
||
| 137 | { name:"geonameId", type:"INTEGER" }
|
||
| 138 | ] |
||
| 139 | }, |
||
| 140 | |||
| 141 | "getCountryCode":{
|
||
| 142 | // returns the iso country code for the given latitude/longitude |
||
| 143 | // With the parameter type=xml this service returns an xml document |
||
| 144 | // with iso country code and country name. The optional parameter |
||
| 145 | // lang can be used to specify the language the country name should |
||
| 146 | // be in. JSON output is produced with type=JSON |
||
| 147 | "target":"countryCode", |
||
| 148 | "parameters": [ |
||
| 149 | { name:"lat", type:"FLOAT" },
|
||
| 150 | { name:"lng", type:"FLOAT" },
|
||
| 151 | { name:"lang", type:"STRING",optional:true },
|
||
| 152 | { name:"radius", type:"FLOAT" }
|
||
| 153 | ] |
||
| 154 | }, |
||
| 155 | |||
| 156 | "getCountrySubdivision":{
|
||
| 157 | // returns the country and the administrative subdivison (state, province,...) for the given latitude/longitude |
||
| 158 | // Example http://ws.geonames.org/countrySubdivisionJSON?lat=47.03&lng=10.2 |
||
| 159 | "target":"countrySubdivisionJSON", |
||
| 160 | "parameters":[ |
||
| 161 | { name:"lat", type:"FLOAT" },
|
||
| 162 | { name:"long", type:"FLOAT" },
|
||
| 163 | { name:"radius", type:"FLOAT" }
|
||
| 164 | ] |
||
| 165 | }, |
||
| 166 | |||
| 167 | "getWikipediaBoundingBox":{
|
||
| 168 | // returns the wikipedia entries within the bounding box as xml document |
||
| 169 | // Example http://ws.geonames.org/wikipediaBoundingBoxJSON?north=44.1&south=-9.9&east=-22.4&west=55.2 |
||
| 170 | "target":"wikipediaBoundingBoxJSON", |
||
| 171 | "parameters":[ |
||
| 172 | { name: "north", type:"FLOAT" },
|
||
| 173 | { name: "south", type:"FLOAT" },
|
||
| 174 | { name: "east", type:"FLOAT" },
|
||
| 175 | { name: "west", type:"FLOAT" },
|
||
| 176 | { name: "lang", type:"STRING",optional:true }, // default: "en"
|
||
| 177 | { name: "maxRows", type:"INTEGER",optional:true } // default: 10
|
||
| 178 | ] |
||
| 179 | }, |
||
| 180 | |||
| 181 | "searchWikipedia":{
|
||
| 182 | // returns the wikipedia entries found for the searchterm as xml document |
||
| 183 | // Example http://ws.geonames.org/wikipediaSearchJSON?q=london&maxRows=10 |
||
| 184 | "target":"wikipediaSearchJSON", |
||
| 185 | "parameters":[ |
||
| 186 | { name: "q", type:"STRING" }, // place name?
|
||
| 187 | { name: "title", type:"STRING" }, // optional
|
||
| 188 | { name: "lang", type:"FLOAT",optional:true }, // de or en
|
||
| 189 | { name: "maxRows", type:"INTEGER",optional:true } // default: 10
|
||
| 190 | ] |
||
| 191 | }, |
||
| 192 | |||
| 193 | "getTimezone":{
|
||
| 194 | // the timezone at the lat/lng with gmt offset (1. January) and dst offset (1. July) |
||
| 195 | "target":"timezoneJSON", |
||
| 196 | "parameters":[ |
||
| 197 | { name:"lat", type:"FLOAT" },
|
||
| 198 | { name:"lng", type:"FLOAT" }
|
||
| 199 | ] |
||
| 200 | }, |
||
| 201 | |||
| 202 | "search":{
|
||
| 203 | // returns the names found for the searchterm as xml or json document, |
||
| 204 | // the search is using an AND operator |
||
| 205 | "target":"searchJSON", |
||
| 206 | "parameters":[ |
||
| 207 | // exhaustive list. see: http://www.geonames.org/export/geonames-search.html |
||
| 208 | { name:"q", type:"STRING" },
|
||
| 209 | { name:"name", type:"STRING" },
|
||
| 210 | { name:"name_equals", type:"STRING" },
|
||
| 211 | // optional: |
||
| 212 | { name:"maxRows", type:"INTEGER",optional:true }, // def: 100, max:1000
|
||
| 213 | { name:"startRow", type:"INTEGER",optional:true }, // def: 0
|
||
| 214 | { name:"country", type:"STRING",optional:true }, // iso-3166, def: all
|
||
| 215 | /* name:"adminCode..." */ |
||
| 216 | { name:"featureClass", type:"STRING",optional:true}, // ? multi, enum(a,h,l,p,r,s,t,u,v)
|
||
| 217 | { name:"featureCode", type:"STRING",optional:true},
|
||
| 218 | { name:"lang", type:"STRING",optional:true}, // iso-636
|
||
| 219 | { name:"type", type:"STRING",optional:true}, // xml | json | rdf, def: xml
|
||
| 220 | { name:"style", type:"STRING",optional:true }, // SHORT,MEDIUM,LONG,FULL def: MEDIUM
|
||
| 221 | { name:"isNamedRequired", type:"BOOLEAN", optional:true }
|
||
| 222 | ] |
||
| 223 | }, |
||
| 224 | |||
| 225 | "postalCodeLookup":{
|
||
| 226 | // returns a list of places for the given postalcode in JSON format |
||
| 227 | // Example http://ws.geonames.org/postalCodeLookupJSON?postalcode=6600&country=AT |
||
| 228 | "target":"postalCodeLookupJSON", |
||
| 229 | "parameters":[ |
||
| 230 | { name:"postalcode", type:"STRING" },
|
||
| 231 | { name:"country", type:"STRING",optional:true},
|
||
| 232 | { name:"maxRows", type:"INTEGER", optional:true }, // def: 20
|
||
| 233 | { name:"charset", type:"STRING",optional:true } // def: utf-8
|
||
| 234 | ] |
||
| 235 | }, |
||
| 236 | |||
| 237 | "postalCodeSearch":{
|
||
| 238 | "target":"postalCodeSearchJSON", |
||
| 239 | "parameters":[ |
||
| 240 | { name:"postalcode", type:"STRING",optional:true}, // one or the other
|
||
| 241 | { name:"placename", type:"STRING",optional:true }, // one or the other
|
||
| 242 | { name:"country", type:"STRING",optional:true},
|
||
| 243 | { name:"style", type:"STRING",optional:true}, // def: MEDIUM
|
||
| 244 | { name:"maxRows", type:"INTEGER",optional:true}, // def: 20
|
||
| 245 | { name:"charset", type:"STRING",optional:true} // def: utf-8
|
||
| 246 | ] |
||
| 247 | } |
||
| 248 | |||
| 249 | // TODO: implement: |
||
| 250 | // findNearby, |
||
| 251 | // findNearbyPlaceName |
||
| 252 | // findNearbyPostalCodes, |
||
| 253 | // findNearbyStreets, |
||
| 254 | // findNearByWeather |
||
| 255 | // findNearByWikipedia |
||
| 256 | // findNeareastAddress |
||
| 257 | // findNearestInterestion |
||
| 258 | // get |
||
| 259 | // gtop30 |
||
| 260 | // srtm3 |
||
| 261 | |||
| 262 | } // end services |
||
| 263 | } |