1 | ================================================================================ |
---|
2 | ================================================================================ |
---|
3 | Protocol for geovis render server. |
---|
4 | |
---|
5 | Commands take the general form of command and arguments using Tcl syntax and are |
---|
6 | terminated by a newline. Some command arguments expect a Tcl list which can be |
---|
7 | sent by enclosing the list in curly braces to prevent the interpreter from |
---|
8 | splitting the list into multiple arguments. Likewise, strings with spaces |
---|
9 | should be quoted or enclosed in curly braces. In the documentation below, |
---|
10 | arguments are indicated by angle brackets and optional arguments are surrounded |
---|
11 | by question marks -- the brackets and question marks are not part of the |
---|
12 | protocol and should not be included in argument strings. The arguments shown |
---|
13 | in angle brackets should be replaced with a string (where there are fixed |
---|
14 | choices this document indicates valid values by separating them with pipe |
---|
15 | symbols), a list in Tcl syntax, or a numeric value. Boolean arguments can take |
---|
16 | the form of 0|1, true|false, or yes|no. Since the protocol commands are |
---|
17 | executed in a Tcl interpreter, Tcl code such as math expressions in expr |
---|
18 | commands enclosed in square brackets are also allowed. Since the interpreter |
---|
19 | is a "safe" interpreter, some Tcl commands that could cause security issues may |
---|
20 | not be available for use. |
---|
21 | |
---|
22 | When binary data is to be sent, it should follow the newline after a command |
---|
23 | that indicates incoming data including a byte count argument. |
---|
24 | ================================================================================ |
---|
25 | ================================================================================ |
---|
26 | Requests: |
---|
27 | ================================================================================ |
---|
28 | |
---|
29 | == General scene and renderer commands == |
---|
30 | |
---|
31 | camera delete <name> |
---|
32 | Delete named viewpoint |
---|
33 | camera dist <distance> |
---|
34 | Set camera distance from focal point |
---|
35 | camera get |
---|
36 | Request camera parameters |
---|
37 | camera go <x> <y> <?zoomFactor?> <?duration?> |
---|
38 | Move camera to new focal point. |
---|
39 | <x>,<y> = Screen/mouse coordinates |
---|
40 | <zoomFactor> = Zoom distance multiplier, 1.0=no zoom |
---|
41 | <duration> = Duration of viewpoint move animation in seconds |
---|
42 | camera orient <quatW> <quatX> <quatY> <quatZ> |
---|
43 | Set scene orientation using a quaternion |
---|
44 | camera pan <x> <y> |
---|
45 | <x,y> viewport coordinates (window center at 0,0). Positive x pan |
---|
46 | means pan object to right (camera to left). Positive y pan means |
---|
47 | pan object down (camera up). For example a pan of 0.5, 0.5 would |
---|
48 | move the object center to the lower right corner of the window |
---|
49 | camera reset <?all?> |
---|
50 | Option all resets orientation/rotation as well as pan/zoom/clip range |
---|
51 | camera restore <name> <?duration?> |
---|
52 | Set viewpoint to a named viewpoint, with optional animation duration in |
---|
53 | seconds |
---|
54 | camera rotate <x> <y> |
---|
55 | Specify relative rotation in viewport coordinates |
---|
56 | camera save <name> |
---|
57 | Save current viewpoint to a named viewpoint |
---|
58 | camera set <x> <y> <z> <heading> <pitch> <distance> <?duration?> <?srs?> <?vertDatum?> |
---|
59 | Explicitly set camera parameters, with optional animation duration in |
---|
60 | seconds |
---|
61 | <x>, <y> = Map coordinates of focal point |
---|
62 | <z> = Altitude of focal point (see vertDatum) |
---|
63 | <heading> = Azimuth in degrees |
---|
64 | <pitch> = Elevation in degrees |
---|
65 | <distance> = Distance of camera from focal point in map units(?) |
---|
66 | <srs> = coordinate system, defaults to map coordinate system |
---|
67 | <vertDatum> = vertical datum for interpreting z coordinate |
---|
68 | camera throw <bool> |
---|
69 | Enable/disable throw inertia for panning/rotating when using mouse events |
---|
70 | through protocol |
---|
71 | camera zoom <y> |
---|
72 | Specify zoom by viewport coordinates (i.e. normalized y mouse coords) |
---|
73 | |
---|
74 | clientinfo <list> |
---|
75 | |
---|
76 | colormap add <colorMapName> <colorMap> <opacityMap> |
---|
77 | (Re-)define a colormap. If colorMapName doesn't exist, it is created, |
---|
78 | otherwise the colormap is redefined and all users will be updated. |
---|
79 | colorMap = Tcl list of {value r g b} control points |
---|
80 | opacityMap = Tcl list of {value alpha} control points |
---|
81 | colormap define <colorMapName> <colorMap> <opacityMap> |
---|
82 | (Re-)define a colormap (same as 'add') |
---|
83 | colormap delete <?colorMapName?> |
---|
84 | colormap res <numberOfTableEntries> |
---|
85 | Set the "resolution" or number of lookup table entries in the colormap |
---|
86 | <numberOfTableEntries> = integer or "default" |
---|
87 | |
---|
88 | renderer render |
---|
89 | Force a new image to be rendered |
---|
90 | |
---|
91 | screen bgcolor <r> <g> <b> |
---|
92 | screen coords <token> <coordList> <?srs?> <?verticalDatum?> |
---|
93 | Transate map coordinates to screen/mouse coordinates. |
---|
94 | <token> - String token, included in response |
---|
95 | <coordList> - A list of x,y,z map coordinates. If <srs> is not given, |
---|
96 | these are in the map's coordinate system. |
---|
97 | <srs> - Optional horizontal srs init string for coordinate system of |
---|
98 | x,y,z |
---|
99 | <verticalDatum> - Optional vertical srs init string for coordinate system |
---|
100 | of x,y,z |
---|
101 | screen size <width> <height> |
---|
102 | |
---|
103 | == Mouse and Keyboard Events == |
---|
104 | |
---|
105 | key press <key> |
---|
106 | key release <key> |
---|
107 | |
---|
108 | mouse click <button> <x> <y> |
---|
109 | mouse dblclick <button> <x> <y> |
---|
110 | mouse drag <button> <x> <y> |
---|
111 | mouse motion <x> <y> |
---|
112 | mouse release <button> <x> <y> |
---|
113 | mouse scroll <direction> |
---|
114 | |
---|
115 | == Map Commands == |
---|
116 | |
---|
117 | map coords <token> <coordList> <?srs?> <?verticalDatum?> |
---|
118 | Translate screen/mouse coordinates into map coordinates. |
---|
119 | <token> - String token, included in response |
---|
120 | <coordList> - A list of x,y screen/mouse coordinates |
---|
121 | <srs> - Optional horizontal srs init string for coordinate system to return |
---|
122 | <verticalDatum> - Optional vertical srs init string for coordinate system to |
---|
123 | return |
---|
124 | |
---|
125 | map grid <bool> <?type?> |
---|
126 | Toggle graticule and set type |
---|
127 | <type> = geodetic|utm|mgrs |
---|
128 | |
---|
129 | General form: |
---|
130 | map layer add <type> <driver> <url> ... <layerName> |
---|
131 | <type> = image|elevation|line|point|polygon|text |
---|
132 | <driver> = gdal|tms|wms|xyz |
---|
133 | |
---|
134 | Specific image layer types: |
---|
135 | map layer add image gdal <url> <cache> <layerName> |
---|
136 | Add a GDAL image layer from a file or URL |
---|
137 | map layer add image wms <url> <cache> <layers> <format> <transparent> <layerName> |
---|
138 | Add a WMS image layer from a URL + layer string |
---|
139 | <url> = URL of WMS service |
---|
140 | <cache> = bool indicating if tiles should be cached on disk |
---|
141 | <layers> = layers string for WMS server |
---|
142 | <format> = Image format to return (e.g. 'png') |
---|
143 | <transparent> = bool |
---|
144 | map layer add image tms <url> <cache> <layerName> |
---|
145 | Add a TMS image layer from a URL |
---|
146 | <url> = URL of TMS service |
---|
147 | <cache> = bool indicating if tiles should be cached on disk |
---|
148 | map layer add image xyz <urlPattern> <cache> <layerName> |
---|
149 | Add an image layer from a web map using a template URL |
---|
150 | <cache> = bool indicating if tiles should be cached on disk |
---|
151 | |
---|
152 | Elevation layers: |
---|
153 | map layer add elevation <driver> <url> <layerName> |
---|
154 | Add an elevation image layer from a file or URL |
---|
155 | <driver> = gdal|tms|wms |
---|
156 | |
---|
157 | Feature/model layers: |
---|
158 | map layer add point <url> <layerName> |
---|
159 | Add a point feature layer from a file or URL |
---|
160 | map layer add polygon <url> <layerName> |
---|
161 | Add a polygon feature layer from a file or URL |
---|
162 | map layer add line <url> <layerName> |
---|
163 | Add a line feature layer from a file or URL |
---|
164 | map layer add text <url> <layerName> |
---|
165 | Add a text symbol layer from a file or URL |
---|
166 | |
---|
167 | map layer delete <layerName> |
---|
168 | map layer opacity <opacity> <layerName> |
---|
169 | map layer move <pos> <layerName> |
---|
170 | map layer visible <bool> <layerName> |
---|
171 | |
---|
172 | map load data follows <nbytes> |
---|
173 | Send an .earth file over the wire |
---|
174 | map load file <path> |
---|
175 | Load an .earth file from a filesystem mounted on the server |
---|
176 | map load url <url> |
---|
177 | Load an .earth file from a network address |
---|
178 | |
---|
179 | map posdisp <bool> <?format?> <?precision?> |
---|
180 | Toggle coordinate/position display, set format and precision |
---|
181 | <format> = latlong_decimal_degrees|latlong_degrees_decimal_minutes| |
---|
182 | latlong_degrees_minutes_seconds|mgrs |
---|
183 | <precision> = integer number of digits to display |
---|
184 | |
---|
185 | map reset <type> <?profile?> <?xmin?> <?ymin?> <?xmax?> <?ymax?> |
---|
186 | Clear the scene and rebuild a new map from scratch. When resetting the |
---|
187 | map to geocentric, a profile and extents should be omitted. When the map |
---|
188 | type is projected, the profile is required and extents are optional. |
---|
189 | type = geocentric|projected |
---|
190 | profile = Well known profile string, e.g. 'global-geodetic', |
---|
191 | 'global-mercator'. If specifying bounds (i.e. not global), use 'geodetic' |
---|
192 | or 'spherical-mercator' or an SRS init string (such as an EPSG code) |
---|
193 | xmin,ymin,xmax,ymax = map bounds (in profile projection/units) |
---|
194 | |
---|
195 | map scalebar <bool> <?units?> |
---|
196 | Toggle scale label/bar |
---|
197 | <units> = meters|feet|us_survey_feet|nautical_miles |
---|
198 | map setpos <x> <y> |
---|
199 | Set the coordinate/position display based on mouse coordinates |
---|
200 | map terrain edges <bool> |
---|
201 | *Not currently implemented* |
---|
202 | map terrain lighting <bool> |
---|
203 | map terrain linecolor <r> <g> <b> |
---|
204 | *Not currently implemented* |
---|
205 | map terrain vertscale <val> |
---|
206 | Set scale factor for terrain height |
---|
207 | map terrain wireframe <bool> |
---|
208 | map time <?hours?> <?day?> <?month?> <?year?> |
---|
209 | Set ephemeris time for sky. When args are omitted, set to current time. |
---|
210 | Time is interpreted as server's local time. |
---|
211 | |
---|
212 | ================================================================================ |
---|
213 | Replies: |
---|
214 | ================================================================================ |
---|
215 | nv>image -type image -bytes <nbytes> |
---|
216 | <binary RGB data> |
---|
217 | nv>map coords <token> <mapCoordList> <?srs?> <?verticalDatum?> |
---|
218 | Reply to query of map coordinates from screen coordinates. The mapCoordList |
---|
219 | is a list of x,y,z map coordinates. The srs of the map coordinates may be |
---|
220 | included if not in map's native coordinate system. NaN in the results |
---|
221 | indicates off-map input coordinates. |
---|
222 | nv>screen coords <token> <screenCoordList> |
---|
223 | Reply to query of screen coordinates from map coordinates. The |
---|
224 | screenCoordList is a list of x,y,z screen coordinates (z is the depth). NaN |
---|
225 | in the results indicates a point outside the view frustum or invalid input |
---|
226 | map coordinate |
---|
227 | nv>ok -token <seqnum> |
---|
228 | Reply indicated commands through <seqnum> (numbered beginning at 0) have been |
---|
229 | processed, but no new image was rendered |
---|
230 | ================================================================================ |
---|
231 | Error Replies: |
---|
232 | ================================================================================ |
---|
233 | nv>viserror -bytes <nbytes> |
---|
234 | <multi-line error string of nbytes> |
---|
235 | ================================================================================ |
---|