Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / rpc / SMDLibrary / geonames.smd @ 10

History | View | Annotate | Download (9.27 KB)

1
{
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
}