Here's some initial code that you can use as a starting point (I didn't place all the labels); the idea was to use some predefined styles and two chains:
\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows,chains,positioning,patterns,calc}
\tikzset{
boxT/.style={
draw=none,
rectangle,
fill=teal!70,
align=center,
anchor=north,text width = 2.75cm,
text height=5ex,
text depth=2.5ex,
},
boxB/.style={boxT,text width=0.5cm,pin={[yshift=-6pt]below:Commercial}},
boxC/.style={boxT,text width=0.5cm,pin={[yshift=-6pt]below:Guardband}},
boxD/.style={boxT,fill=orange!90!black,text width=4.5cm,},
pinA/.style={
pin={[yshift=10pt]below:%
\tikz\node[inner sep=3pt,fill=orange!90!black,rounded corners] {Guardband};}},
boxE/.style={boxT,text width=#1},
boxF/.style={boxT,fill=orange!90!black,text width=#1},
boxG/.style={boxT,pattern=north east lines,text width=#1},
}
\newcommand\thtext[4]{%
\node [boxD,on chain] (#1) {};
\draw[white,line width=1pt] (#1.west) -- coordinate[pos=0.43] (aux1) coordinate[pos=0.57] (aux2) (#1.east);
\draw[white,line width=1pt] (aux1) -- (aux1|-#1.south);
\draw[white,line width=1pt] (aux2) -- (aux2|-#1.south);
\node[label=below:{#2}] at (#1.north) {};
\node[label={[xshift=-1.45cm]above:{#3}},anchor=west] at (#1.south) {};
\node[label={[xshift=1.45cm]above:{#4}},anchor=east] at (#1.south) {};
}
\begin{document}
\begin{tikzpicture}[
scale=0.7,
transform shape,
start chain,
node distance=2pt,
every pin edge/.style={*-,shorten <=-10pt}
]
\node[boxT,on chain] (a) {Commercial};
\node[boxB,on chain] (b) {};
\node[boxT,on chain] (c) {D Block};
\node[boxC,on chain] (d) {};
\thtext{e}{Public safety}{Broadband}{LMR}
\node[boxB,on chain] (f) {};
\node[boxT,on chain] (g) {Commercial};
\node[boxC,on chain] (h) {};
\node[boxT,on chain] (i) {D Block};
\thtext{j}{Public safety}{Broadband}{LMR}
\node[boxB,on chain] (k) {};
\node[pinA] at (e.south) {};
\node[pinA] at (j.south) {};
\begin{scope}[start chain=1,yshift=4cm,node distance=0pt,outer sep=0pt]
\node[boxE=1cm,on chain=1,anchor=east] (a1) {};
\node[boxF=25pt,on chain=1] (b1) {};
\node[boxE=3cm,on chain=1] (c1) {};
\node[boxF=20pt,on chain=1] (d1) {};
\node[boxE=3cm,on chain=1] (e1) {};
\node[boxG=5pt,on chain=1] (f1) {};
\node[boxE=20pt,on chain=1] (g1) {};
\node[boxF=20pt,on chain=1] (h1) {};
\node[boxE=2pt,on chain=1] (i1) {};
\node[boxG=25pt,on chain=1] (j1) {};
\node[boxE=20pt,on chain=1] (k1) {};
\node[boxF=15pt,on chain=1] (l1) {};
\node[boxE=45pt,on chain=1] (m1) {};
\node[boxF=15pt,on chain=1] (n1) {};
\node[boxE=4cm,on chain=1] (o1) {};
\node[boxF=15pt,on chain=1] (p1) {};
\node[boxE=2.5cm,on chain=1] (q1) {};
\end{scope}
\draw[dashed] (a.north west) -- ( $ (k1) + (0,-30pt) $ ) -- (k1.north);
\draw[dashed] (k.north east) -- ( $ (l1) + (0,-30pt) $ ) -- (l1.north);
\end{tikzpicture}
\end{document}

The command \thtext has four arguments:
\thtext{<name>}{<Upper text>}{<Lower left text>}{<Lower right text>}
where <name> is the name for the node, and the other argumets are self explanatory; for example (with the styles defined above),
\thtext{kk}{Upper}{Lower L}{Lower R}
will produce a node called kk and with the following layout:

right of=, but use thepositioninglibrary andright=of. — You can simply use\node [boxT, text width=<necessary length>] (a) {Commercial};Although, a combination with thechainslibrary and a few good styles would be better … – Qrrbrbirlbel Apr 24 '13 at 20:24chainslibrary, can you provide an example? – Elpezmuerto Apr 24 '13 at 20:52