Ignore:
Timestamp:
Dec 14, 2015 1:53:24 PM (8 years ago)
Author:
ldelgass
Message:

First pass at an addLayer method for Map object (that doesn't use XML).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/scripts/map.tcl

    r5932 r5946  
    3030    }
    3131
     32    public method addLayer { type name paramArray driver driverParamArray {stylesheet {}} {script {}} {selectors {}} }
    3233    public method addViewpoint { name props }
    3334    public method earthfile {}
     
    451452}
    452453
     454itcl::body Rappture::Map::addLayer { type name paramArray driver driverParamArray {stylesheet {}} {script {}} {selectors {}} } {
     455    set id "layer[incr _nextLayer]"
     456    set parent [$_tree findchild root "layers"]
     457    set child [$_tree insert $parent -label $id]
     458    $_tree set $child "name" $name
     459    $_tree set $child "type" $type
     460    array set params $paramArray
     461    foreach key { label description attribution profile srs verticalDatum } {
     462        if {[info exists params($key)]} {
     463            $_tree set $child $key $params($key)
     464        } else {
     465            $_tree set $child $key ""
     466        }
     467    }
     468    # Common settings (for all layer types) with defaults
     469    foreach { key defval } { visible 1 cache 1 } {
     470        $_tree set $child $key $defval
     471        if {[info exists params($key)]} {
     472            set val $params($key)
     473            if {$val != ""} {
     474                $_tree set $child $key $val
     475            }
     476        }
     477    }
     478    # These are settings for which there should be no default
     479    # We want to know if they have been set by the user or not
     480    # Not all layer types use these
     481    foreach key { coverage opacity content priority style } {
     482        if {[info exists params($key)]} {
     483            set val $params($key)
     484            if {$val != ""} {
     485                $_tree set $child $key $val
     486            }
     487        }
     488    }
     489    if {$stylesheet != ""} {
     490        set val $stylesheet
     491        # Normalize whitespace
     492        regsub -all "\[ \t\r\n\]+" [string trim $val] " " val
     493        $_tree set $child stylesheet $val
     494    }
     495    if {$script != ""} {
     496        regsub -all "\[\r\n\]+" [string trim $script] " " script
     497        $_tree set $child script $script
     498    }
     499    if {$selectors != ""} {
     500        set sparent [$_tree insert $child -label "selectors"]
     501        foreach selectorItem $selectors {
     502            array set selector $selectorItem
     503            set id "selector[incr _nextSelector]"
     504            set snode [$_tree insert $sparent -label $id]
     505            foreach key { name style styleExpression query queryBounds queryOrderBy } {
     506                if {[info exists selector($key)]} {
     507                    set val $selector($key)
     508                    if {$val != ""} {
     509                        $_tree set $snode $key $val
     510                    }
     511                }
     512            }
     513        }
     514    }
     515    $_tree set $child "driver" $driver
     516    switch -- $driver {
     517        "arcgis" {
     518            array set params $driverParamArray
     519            foreach key { url token format layers } {
     520                if {[info exists params($key)]} {
     521                    set value $params($key)
     522                    $_tree set $child "arcgis.$key" $value
     523                }
     524            }
     525        }
     526        "colorramp" {
     527            array set params $driverParamArray
     528            $_tree set $child "colorramp.elevdriver" "gdal"
     529            $_tree set $child "colorramp.colormap" "0 0 0 0 1 1 1 1 1 1"
     530            if {[info exists params(colormap)]} {
     531                set cmap $params(colormap)
     532                if {$cmap != ""} {
     533                    # Normalize whitespace
     534                    regsub -all "\[ \t\r\n\]+" [string trim $cmap] " " cmap
     535                    $_tree set $child "colorramp.colormap" $cmap
     536                }
     537            }
     538            foreach key { url elevdriver } {
     539                if {[info exists params($key)]} {
     540                    set value $params($key)
     541                    if {$value != ""} {
     542                        $_tree set $child "colorramp.$key" $value
     543                    }
     544                }
     545            }
     546        }
     547        "gdal" {
     548            array set params $driverParamArray
     549            foreach key { url } {
     550                set value $params($key)
     551                $_tree set $child "gdal.$key" $value
     552            }
     553        }
     554        "ogr" {
     555            array set params $driverParamArray
     556            foreach key { url } {
     557                set value $params($key)
     558                $_tree set $child "ogr.$key" $value
     559            }
     560            foreach key { connection geometry geometry_url layer ogr_driver build_spatial_index } {
     561                if {[info exists params($key)]} {
     562                    set value $params($key)
     563                    if { $value != "" } {
     564                        $_tree set $child "ogr.$key" $value
     565                    }
     566                }
     567            }
     568        }
     569        "tfs" {
     570            foreach key { url format } {
     571                if {[info exists params($key)]} {
     572                    set value $params($key)
     573                    $_tree set $child "tfs.$key" $value
     574                }
     575            }
     576        }
     577        "tms" {
     578            foreach key { url tmsType format } {
     579                if {[info exists params($key)]} {
     580                    set value $params($key)
     581                    $_tree set $child "tms.$key" $value
     582                }
     583            }
     584        }
     585        "wcs" {
     586            foreach key { url identifier format elevationUnit rangeSubset } {
     587                if {[info exists params($key)]} {
     588                    set value $params($key)
     589                    $_tree set $child "wcs.$key" $value
     590                }
     591            }
     592        }
     593        "wfs" {
     594            foreach key { url typename format maxfeatures requestBuffer } {
     595                if {[info exists params($key)]} {
     596                    set value $params($key)
     597                    $_tree set $child "wfs.$key" $value
     598                }
     599            }
     600        }
     601        "wms" {
     602            foreach key { url layers format transparent } {
     603                if {[info exists params($key)]} {
     604                    set value $params($key)
     605                    $_tree set $child "wms.$key" $value
     606                }
     607            }
     608        }
     609        "xyz" {
     610            foreach key { url } {
     611                if {[info exists params($key)]} {
     612                    set value $params($key)
     613                    $_tree set $child "xyz.$key" $value
     614                }
     615            }
     616        }
     617    }
     618}
     619
    453620# ----------------------------------------------------------------------
    454621# USAGE: layers
Note: See TracChangeset for help on using the changeset viewer.