CGCBAR2KML
This program creates a KML file that can be opened in Google Earth to display a
color bar as a ScreenOverlay. Screen overlays are images that are displayed in
a fixed location on the Google Earth display. A corresponding color bar image file is
produced. The KML and color bar image file must be in the same directory to use them with
Google Earth. In general, any keyword used for horizontal color bars in cgColorbar can
be used with this program. The colorbar image is made from a PostScript intermediate file, which
means ImageMagick must be installed on your computer and available to IDL to run this program
successfully. Please see `IDL Output for Web Display <http://www.idlcoyote.com/graphics_tips/weboutput.php>`
for details.
Categories
Graphics, FileIO, Maps
Keywords
addtofile: in, optional, type=object
If this keyword contains a cgKML_File object, the image is added to the file
as a <ScreenOverlay> element and a separate KML file is not created. In other
words, the `Filename` keyword is ignored and the image file created takes its
name from the cgKML_File object.
background: in, optional, type=string, default='gray'
The background color for the color bar.
bottom: in, optional, type=integer, default=0
The lowest color index of the colors to be loaded in the color bar.
brewer: in, optional, type=boolean, default=0
This keyword is used only if the `CTIndex` keyword is used to select a color table number.
Setting this keyword allows Brewer color tables to be used.
charpercent: in, optional, type=float, default=0.85
A value from 0.0 go 1.0 that is multiplied by the CHARSIZE to produce
the character size for the color bar. This value is only used if CHARSIZE is
undefined. This keyword is primarily useful for using color bars in resizeable
graphics windows (cgWindow).
charsize: in, optional, type=float
The character size of the color bar annotations. Default is cgDefCharsize()*charPercent.
clamp: in, optional, type=float
A two-element array in data units. The color bar is clamped to these
two values. This is mostly of interest if you are "window-leveling"
an image. The clamp is set to the "window" of the color bar.
Normally, when you are doing this, you would like the colors outside
the "window" to be set to a neutral color. Use the NEUTRALINDEX keyword
to set the netural color index in the color bar. (See the Examples section
for more information.)
color: in, optional, type=string
The name of the color to use for color bar annotations. Ignored unless passed
the name of a cgColor color. The default value is to use the ANNOTATECOLOR.
ctindex: in, optional, type=integer
The index number of a color table. The `Brewer` and `Reverse` keywords will be checked
to see how to load the color table into the `Palette` keyword. This keyword will take
precidence over any colors that are loaded with the `Palette` keyword.
description: in, optional, type=string
A string that is used to describe the image in the Google Earth interface.
discrete: in, optional, type=boolean, default=0
Set this keyword to configure certain properties of the color bar to make
discrete color blocks for the color bar. This works best if you are using
a handful of colors in the color bar (e.g, 8-16).
divisions: in, optional, type=integer
The number of divisions to divide the bar into. There will
be (divisions + 1) annotations. The default is 0 if using the
default color bar formatting, which allows the plot command to
determine how many divisions to make. Otherwise, if you are specifying
some other format for the tick labels, the default number of divisions
is six.
draworder: in, optional, type=integer, default=0
The drawing order of image overlay. The first order is 0. Images with a higher
order are drawn on top of images with a lower order.
filename: in, optional, type=string, default='kml_cbimage.kml'
The name of the KML file that will be created. The image file will have the same name,
but with a *.png file extension. The KML file and the image file will be created in the
same directory.
format: in, optional, type=string, default=""
The format of the color bar annotations. Default is "". Note that the
formatting behaviour can change, depending up values for the keywords
`RANGE` and `DIVISIONS`. If you prefer to let the IDL Plot command determine
how the color bar labels are formatted, set the format to a null string and
set the `DIVISIONS` keyword to 0. Note the difference in these two commands::
cgColorbar, Range=[18,125], Position=[0.1, 0.8, 0.9, 0.85]
cgColorbar, Range=[18,125], Position=[0.1, 0.7, 0.9, 0.75], Divisions=0
kmz: in, optional, type=boolean, default=0
Set this keyword to move the KML file and support files to a KMZ compressed file.
Note that this capability is ONLY available in versions of IDL starting with version 8.0.
location: in, optional, type=intarr
A two-element array giving the location of the top-left corner of the
color bar in normalized coordinates from the upper-left of the Google Earth
display screen. Default is [0.025, 0.975].
maxrange: in, optional
The maximum data value for the color bar annotation. Default is NCOLORS.
minrange: in, optional, type=float, default=0.0
The minimum data value for the bar annotation.
minor: in, optional, type=integer, default=2
The number of minor tick divisions.
ncolors: in, optional, type=integer, default=256
This is the number of colors in the color bar.
neutralindex: in, optional, type=integer
This is the color index to use for color bar values outside the
clamping range when clamping the color bar with the CLAMP keyword.
If this keyword is absent, the highest color table value is used
for low range values and the lowest color table value is used
for high range values, in order to provide contrast with the
clamped region. (See the Examples section for more information.)
oob_factor: in, optional, type=float, default=0.2
The default is to make the length of the out-of-bounds triangle the
same distance as the height (or width, in the case of a vertical
color bar) of the color bar. If you would prefer a shorted triangle length,
set this keyword to a value less than zero (e.g., 0.5). If you prefer a
longer length, set this keyword to a value greater than zero. The "standard"
length will be multiplied by this value.
oob_high: in, optional, type=string
The name of an out-of-bounds high color. This color will be represented
by a triangle on the right or top of the color bar. If the color is
a string byte value (e.g., "215"), then this color in the current color
table is used. The color can also be a three-element color triple
(e.g., [240, 200, 65]).
oob_low: in, optional, type=string
The name of an out-of-bounds low color. This color will be represented
by a triangle on the left or bottom of the color bar. If the color is
a string byte value (e.g., "215"), then this color in the current color
table is used. The color can also be a three-element color triple
(e.g., [240, 200, 65]).
palette: in, optional, type=byte
A color palette containing the RGB color vectors to use for the color
bar. The program will sample NCOLORS from the color palette.
placename: in, optional, type=string, default='Color Bar'
This is the <name> element in a Feature object. It is user-defined text that is used as
the label for an object in Google Earth.
range: in, optional, type=float
A two-element vector of the form [min, max]. Provides an alternative
and faster way way of setting the MINRANGE and MAXRANGE keywords.
reverse: in, optional, type=boolean, default=0
An alternative keyword name (one I can actually remember!) for the INVERTCOLORS keyword.
It reverses the colors in the color bar.
tickinterval: in, optional, type=float
Set this keyword to the interval spacing of major tick marks. Use this keyword in
place of XTickInterval or YTickInterval keywords.
ticklen: in, optional, type=float, default=0.25
Set this keyword to the major tick length desired. Default is 0.25. Setting this
keyword to a value greater than or equal to 0.5 will result in major tick marks
extending the width of the color bar. Note that setting this keyword to 0.3 or
greater will result in minor tick mark lengths being set to 0.01, which is almost
too small to be seen. All direct graphics tick marks act in this (strange!) way.
ticknames: in, optional, type=string
A string array of names or values for the color bar tick marks.
title: in, optional, type=string, default=""
This is title for the color bar. The default is to have no title.
tcharsize: in, optional, type=float
The title size. By default, the same as `Charsize`. Note that this keyword is
ignored for vertical color bars unless the title location (`TLocation`) is on
the opposite side of the color bar from the color bar labels. This is a consequence
of being upable to determine the length of color bar labels programmatically in this
orientation.
width: in, optional, type=integer, default=300
The width, in pixels, of the colorbar image that is created.
xlog: in, optional, type=boolean, default=0
Set this keyword to use logarithmic scaling for the colorbar data range.
xtickinterval: in, optional, type=float
This keyword is trapped, but unused. Please use the`TickInterval` keyword instead.
xtitle: in, optional, type=string
This keyword is ignored. Use the `Title` keyword to set a title for the color bar.
_ref_extra: in, optional
Any keyword appropriate KML screen overlay objects is allowed.
Examples
Here is how you can put an AVHRR NDVI image of Africa on a Google Earth display
with a color bar::
;; Download the image file from the Coyote web page.
netObject = Obj_New('IDLnetURL')
url = 'http://www.idlcoyote.com/data/AF03sep15b.n16-VIg.tif'
returnName = netObject -> Get(URL=url, FILENAME='AF03sep15b.n16-VIg.tif')
Obj_Destroy, netObject
;; Create the image overlay KML file.
kmlFile = Obj_New('cgKML_File', 'avhrr_ndvi_cb.kml')
cgLoadCT, 11, /Brewer, /Reverse, RGB_Table=palette
map = cgGeoMap('AF03sep15b.n16-VIg.tif', Image=image)
scaledImage = BytScl(image > 0)
cgImage2KML, scaledImage, map, $
Palette=palette, Missing_Value=0, $
Description='AVHRR NDVI Data from Africa', $
PlaceName='AVHRR Africa', $
AddToFile=kmlFile
cgCBar2KML, Palette=palette, Range=[0,9400], $
Title='NDVI Index', $
Description='AVHRR NDVI Color Bar', $
PlaceName='NDVI Color Bar', $
AddToFile=kmlFile
kmlFile -> Save
kmlFile -> Destroy
;; Start Google Earth and open the KML file you just created.
The output should look like the figure above.
If you just wish to create a KML file with a color bar, you can do this::
cgCBar2KML, Filename='colorbar.kml', CTIndex=5, Title='Test Color Bar'
Author
FANNING SOFTWARE CONSULTING::
David W. Fanning
1645 Sheely Drive
Fort Collins, CO 80526 USA
Phone: 970-221-0438
E-mail: david@idlcoyote.com
Coyote's Guide to IDL Programming: http://www.idlcoyote.com
History
Change History::
Written, 30 October 2012 by David W. Fanning.
Added DRAWORDER keyword and fixed a typo concerning MISSING_VALUE. 31 Oct 2012. DWF.
Have been writing the absolute path to the image file into the KML file, when I should
have been using a relative path. 22 Feb 2013. DWF.
Copyright
Copyright (c) 2012-2013, Fanning Software Consulting, Inc.