internal:administration:idl
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| internal:administration:idl [2025/11/25 14:42] – [symboltypes] jan | internal:administration:idl [2026/03/19 20:55] (current) – [contour] jan | ||
|---|---|---|---|
| Line 8: | Line 8: | ||
| IDL current reference @ NV5 Geospatial software :\\ | IDL current reference @ NV5 Geospatial software :\\ | ||
| - | [[https:// | + | [[https:// |
| - | [[https:// | + | [[https:// |
| - | [[https:// | + | [[https:// |
| Line 285: | Line 285: | ||
| IF x eq 4 THEN BEGIN | IF x eq 4 THEN BEGIN | ||
| print, 'x equals 4' $ | print, 'x equals 4' $ | ||
| - | | + | |
| print, 'x is not 4' | print, 'x is not 4' | ||
| - | END | + | |
| + | |||
| + | to keep track of your blocks you may extend the END statements with the statement the block started with, i.e. ENDIF for the block started afer an ' | ||
| + | The interpreter tells you then if a ENDxxx statement does not fit. | ||
| + | |||
| + | You may nest i.e. build structures like IF ... THEN ... ELSE IF ... THEN ...\\ | ||
| + | |||
| + | |||
| + | Alternatively you use the CASE statement: | ||
| + | |||
| + | CASE x of | ||
| + | 1: <> | ||
| + | 22: BEGIN | ||
| + | ... | ||
| + | END | ||
| + | ELSE: BEGIN | ||
| + | ... | ||
| + | END | ||
| + | ENDCASE | ||
| + | |||
| + | if you want to handle several cases of x in one block you can do this: | ||
| - | for safety you may extend the END statements with blocked statement i.e. ENDIF or ENDELSE | + | CASE 1 of |
| + | x eq 1: begin | ||
| + | ... | ||
| + | | ||
| + | (x eq 22) OR (x eq 23): begin | ||
| + | ... | ||
| + | END | ||
| + | ELSE: begin | ||
| + | ... | ||
| + | end | ||
| + | ENDCASE | ||
| - | you may nest i.e. build structures like IF ... THEN ... ELSE IF ... THEN ... | ||
| - | or use the CASE statement. | ||
| Loops can be implented with FOR, WHILE or REPEAT as one-liners: | Loops can be implented with FOR, WHILE or REPEAT as one-liners: | ||
| Line 308: | Line 336: | ||
| FOR i = 0,5 DO BEGIN | FOR i = 0,5 DO BEGIN | ||
| PRINT, i | PRINT, i | ||
| - | | + | |
| | | ||
| i = 0 | i = 0 | ||
| Line 314: | Line 342: | ||
| i = i+1 | i = i+1 | ||
| PRINT, i | PRINT, i | ||
| - | | + | |
| | | ||
| i = 1 | i = 1 | ||
| Line 320: | Line 348: | ||
| i = i + 1 | i = i + 1 | ||
| PRINT, i | PRINT, i | ||
| - | | + | |
| to make coding a bit safer you may append the name of the loop command to the END statement, i.e. | to make coding a bit safer you may append the name of the loop command to the END statement, i.e. | ||
| Line 327: | Line 355: | ||
| ENDREP | ENDREP | ||
| - | a PROCEDURE is a subroutine that may take parameters and change them. Its definition is started with the word PRO and ends with a END statement | + | a PROCEDURE is a subroutine that may take parameters and change them. Its definition is started with the word PRO and ends with an END statement |
| PRO my_proc, text_str, x_value=x_value | PRO my_proc, text_str, x_value=x_value | ||
| Line 3043: | Line 3071: | ||
| extrm_lev_max = +(machar()).xmax | extrm_lev_max = +(machar()).xmax | ||
| | | ||
| - | See function [[https:// | + | See function [[https:// |
| Line 3059: | Line 3087: | ||
| /overplot | /overplot | ||
| - | Keyword c_annotations is used here toprovide | + | Keyword c_annotations is used here to provide |
| You can define also different thicknesses, | You can define also different thicknesses, | ||
| see [[http:// | see [[http:// | ||
| + | |||
| + | === line patterns === | ||
| + | |||
| + | contour can draw hatch patterns - but note: the pattern is not transparent. | ||
| + | |||
| + | contour, z, x, y, $ | ||
| + | levels = levels, $ | ||
| + | c_orientation = [ 0 , 22, 45, 90, ... ] , $ ; orientation of the lines in degrees | ||
| + | c_spacing = [ 1, 0.5, 0.25, ... ] ; spacing between lines in cm | ||
| + | | ||
| + | |||
| + | === Path of contour lines === | ||
| + | |||
| + | contour can provide the pathes of the contour lines: | ||
| + | |||
| + | contour, z, x, y, $ | ||
| + | levels = levels, $ | ||
| + | path_info = path_info, $ ; info about the provided pathes (see below). If you provide here a variable contour will not draw. | ||
| + | path_xy = path_xy, $ ; variable for coordinates: | ||
| + | / | ||
| + | / | ||
| + | /overplot ; avoid contour to rescale the axes - if you already had a plot or contour plot you want to reuse | ||
| + | |||
| + | path_info is an array of CONTOUR_PATH_STRUCTURE. The number of elelemtns gives the number of sub pathes. | ||
| + | Elements %%offset%% and %%N%% give the starting index and length of every isoline in path_xy. | ||
| + | |||
| + | You can then use the pathes in poly_fill to do transparent hatch patterns: | ||
| + | |||
| + | for i = 0, n_elements(path_info)-1 do begin | ||
| + | path_info_i = path_info[i] | ||
| + | ii = path_info_i.offset + lindgen(path_info_i.N) | ||
| + | polyfill, path_xy[0, | ||
| + | endfor ; i | ||
| + | |||
| + | You could also use polyfill to put a byte pattern or wrap an image between the isolines ... | ||
| === color bar === | === color bar === | ||
| - | You can use contour | + | You may want to have a color bar setting the colorshading in relation to values. |
| + | You can use contour to make a **color bar**: | ||
| A **horizontal** color bar at the bottom | A **horizontal** color bar at the bottom | ||
internal/administration/idl.1764081721.txt.gz · Last modified: by jan
