====== Kml Type ====== A **Kml** represents a single georeferenced image overlay for Google Earth: a rendering of a map's cells, placed and scaled according to the map's projection and extents, so that Google Earth can display it draped over the globe. A Kml is produced either by rendering a [[categorical_map_type|Categorical Map]] directly via [[Create Kml]], or by loading an existing overlay from a ''.kmz'' file via [[Load Compressed Kml]]. It is consumed by writing it back out with [[Save Compressed Kml]], or by folding it into a [[kml_timeline_type|Kml Timeline]] with [[Set Kml Timeline]], optionally bounded by a ''beginTime''/''endTime'' pair. Building a sequence of these entries into a single animated, time-stamped display typically means calling [[Set Kml Timeline]] once per loop iteration; [[Mux Kml Timeline]] is the loop-feedback functor that carries the growing timeline from one iteration to the next, the same role [[Mux Map]] and [[Mux Lookup Table]] play for their own types. ===== GUI Editor ===== Input [[ego_script#ports|ports]] of type Kml are non-editable, so a Kml value cannot be defined using an editor in the graphical interface. A Kml value must always come from connecting an output produced by another functor -- [[Create Kml]] or [[Load Compressed Kml]] -- supplied by wiring that output to the input. ===== EGO Script ===== For the same reason, input [[ego_script#ports|ports]] of type Kml cannot receive a constant in [[EGO Script]] -- see [[ego_script#constants|Constants]]. A Kml is always obtained by calling a functor that produces one, and reused by referencing the variable bound to its output: // Renders a categorical map as a Google Earth overlay and saves it. landUse := LoadCategoricalMap "c:/data/land_use.tif"; overlay := CreateKml landUse; SaveCompressedKml overlay "c:/data/land_use.kmz"; The generic [[Kml]] carrier functor exists purely to pass a Kml connection through -- for example, as a placeholder while wiring a model -- but its own input is likewise non-editable; it must itself be connected to another functor's Kml output. ===== Automatic Conversions ===== Kml Type has no registered conversions to or from any other type. The only conversion registered for it at all is the sequencing conversion to [[none_type|None Type]] -- used to force execution order via ''sequenceInput''/''sequenceOutput'' ports, not to transform a value. See [[type_system|Type System]].