\documentclass[10pt,border=1pt,tikz,class=scrartcl]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{mathtools}
\usepackage{gensymb}
\usepackage{tikz-3dplot}
\usetikzlibrary{arrows,calc,positioning,decorations.pathreplacing}
\begin{document}
\scriptsize
\tdplotsetmaincoords {80}{100}
\begin{tikzpicture}[thick,auto,>=stealth,xscale=4,yscale=3,tdplot_main_coords]
\pgfmathsetmacro{\pxyz}{.6}
\draw [->,thin] (0,0,0) -- (1.2,0,0) node [anchor=north east] {X};
\draw [->,thin] (0,0,0) -- (0,1.2,0) node [anchor=north] {Y};
\draw [->,thin] (0,0,0) -- (0,0,1.2) node [anchor=south] {Z};
\tdplotdrawarc {(0,0,0)}{1}{-90}{90}{}{};
\tdplotdrawarc [dotted] {(0,0,0)}{1}{90}{270}{}{};
\draw [green!50!gray] (\pxyz,0,0) -- ++(0,\pxyz,0) node [pos=.5,below] {$y$}
-- ++(-\pxyz,0,0) node [pos=.5,below right] {$x$}
-- ++(0,0,\pxyz) node [pos=.5,right] {$z$}
-- ++(0,-\pxyz,0) -- ++(\pxyz,0,0) -- ++(0,0,-\pxyz)
(\pxyz,0,\pxyz) -- ++(0,\pxyz,0) -- ++(0,0,-\pxyz)
(\pxyz,\pxyz,\pxyz) -- ++(-\pxyz,0,0)
;
\draw [red] (0,0,0) -- (\pxyz,\pxyz,0) node [pos=.8,above] {$p$}
(0,0,0) -- (\pxyz,\pxyz,\pxyz) node [pos=.7,above] {$r$};
\tdplotdrawarc [->,thin] {(0,0,0)} {.3} {0}{45}{below}{$\lambda$};
\tdplotgetpolarcoords{\pxyz}{\pxyz}{\pxyz}
\tdplotsetthetaplanecoords{45};
\tdplotdrawarc [tdplot_rotated_coords,->,thin] {(0,0,0)} {.3} {90}{\tdplotrestheta}{right}{$\phi$};
%\draw [->,dashed] (0,0,0) -- (-1.2,0);
%\draw [->,dashed] (0,0,0) -- (0,-1.2,0);
\draw [->,dashed,thin] (0,0,0) -- (0,0,-1.2);
\tdplotsetthetaplanecoords{0};
\tdplotdrawarc [tdplot_rotated_coords]{(0,0,0)}{1}{0}{180}{}{};
\tdplotdrawarc [tdplot_rotated_coords,dotted] {(0,0,0)}{1}{180}{360}{}{};
\tdplotsetthetaplanecoords{90};
\tdplotdrawarc [tdplot_rotated_coords]{(0,0,0)}{1}{0}{360}{}{};
\draw (0,0,0) + (0,0,1.1) node [left] {North Pole}
(0,0,0) + (.5,.7,-.3) node {\parbox{1.5cm}{Equator\\(0\degree latitude)}}
(0,0,0) + (0,-.5,.5) node {\parbox{1.9cm}{Prime meridian\\(0\degree longitude)}}
;
\draw [anchor=east,yshift=3pt]
(0,1.2,1.2) node {$\phi=$ latitude}
(0,1.2,1.12) node {$\lambda=$ longitude}
(0,1.2,1.04) node [blue!50] {$a=$ major axis}
(0,1.2,.96) node [purple!70] {$b=$ minor axis}
(0,1.2,.88) node [green!50!gray] {$x,y,z=$ ECEF position}
;
\draw [->,thin] (.4,.8,-.3) .. controls +(north east:1mm) and +(south east:1mm) .. ++(-.1,-.05,.24);
\draw [->,thin] (0,-.4,.6) .. controls +(north:1mm) and +(west:1mm) .. ++(0,.27,.2);
\draw [blue!50,decorate,decoration={brace,amplitude=5pt,mirror}] (0,0,0) -- (1,0,0) node [pos=.4,above left=2pt] {$a$};
\draw [blue!50,decorate,decoration={brace,amplitude=5pt}] (0,0,0) -- (0,1,0) node [pos=.5,above=4pt] {$a$};
\draw [purple!70,decorate,decoration={brace,amplitude=5pt}] (0,0,0) -- (0,0,1) node [pos=.5,left=4pt] {$b$};
\end{tikzpicture}
\end{document}