# Geolocation, Calibration and Surface Resolution of CYGNSS GNSS-R Land Observations
## 2 Geolocating GNSS Reflections from Land
### Local Surface Delay Calculation  
CYGNSS-observed delay (\(\tau_{max}\)) and Doppler (\(D_{max}\)) values are selected as those corresponding to the peak power value in the DDM in what follows. These values are then compared to predicted values mapped across a local surface. The expected code phase time delay at any given surface point can be expressed as  
\[\tau_{\rm s}=\tau_{dir}-\delta P \tag{1}\]  
where \(\tau_{\rm s}\) is the code phase delay at surface point \(s\), \(\tau_{dir}\) is the code phase delay of the tracked direct signal at the same time epoch and \(\delta P\) is the additional code phase delay between the direct and surface reflected code phase delays. The additional code phase delay can be calculated as  
\[\delta P=P_{T2S2R}-P_{T2R}=(P_{S2R}+P_{T2S})-P_{T2R} \tag{2}\]where \(P_{T2R}\) is the length of the path from the transmitter to the receiver, \(P_{T2S2R}\) is the sum of the path from the transmitter to the surface point (\(P_{T2S}\)) plus the path from the surface point to the receiver (\(P_{S2R}\)). The additional code phase delay can also be expressed as a function of the transmitter, receiver, and surface point locations,  
\[\delta P=(\left|\vec{T}-\vec{S}\right|+\left|\vec{S}-\vec{R}\right|)-\left|\vec {T}-\vec{R}\right| \tag{3}\]  
where \(\vec{R}\) is the receiver position, \(\vec{T}\) is the transmitter position and \(\vec{S}\) is the surface position in a specified reference frame. The difference between the CYGNSS-observed code phase delay ( \(\tau_{max}\) ) and the code phase delay at a given surface location ( \(\tau_{s}\) ) can be estimated over the three dimensional local land surface grid,  
\[\delta\tau=\tau_{max}-\tau_{s} \tag{4}\]  
Note that the GPS signal code phase is a continually repeating length of psuedo-random sequence of a finite length [1]. Therefore, \(\tau_{max}\) and \(\tau_{s}\) need to be corrected based on the repeating length of the specific GNSS code sequence. For the GPS L1 C/A code, the code phase repeats every 1024 chips. The approximate length of one GPS L1 C/A code chip is 293.0522561 m.  
The value of \(\delta\tau\) is calculated across the local three dimensional surface area centered on the initial WGS84 specular point location. In this process, the grid point location is determined using  
\[\vec{S}=\vec{S}^{W84}_{lat^{\prime},Ion^{\prime}}+\frac{\vec{S}^{W84}_{lat^{ \prime},Ion^{\prime}}}{\left|\vec{S}^{W84}_{lat^{\prime},Ion^{\prime}}\right|}\Delta H \tag{5}\]  
where \(\vec{S}^{W84}_{lat^{\prime},Ion^{\prime}}\) is a vector from the Earth center to the WGS84 ellipsoid position at an offset latitude (\(lat^{\prime}\)) and longitude (\(lon^{\prime}\)) [17], and \(\Delta H\) is the DEM height above the WGS84 ellipsoid at the offset latitude and longitude. The local surface delay difference map (\(\delta\tau\)) is produced using Equation (4) for a grid extending 100 km in all compass directions from the center reference in steps of 1 km. Points on the local surface contour map which satisfy the condition \(\delta\tau=0\) represent the iso-range contour (or point) where the CYGNSS-observed code phase delay is in agreement with the reflecting surface code phase delay. Local Surface Doppler Estimate  
A similar surface contour map can be generated using the frequency dimension of GNSS-R land observations. The expected Doppler frequency at any given local surface point (\(\vec{S}\)) can be calculated as  
\[D_{s}=D_{R}+D_{T}+D_{clk} \tag{6}\]  
where \(D_{R}\) is the Doppler component due to the receiver velocity, \(D_{T}\) is the Doppler due to the transmitter velocity and \(D_{clk}\) is the Doppler bias from the drift of the satellite instrument clock.