## 2 System Model  
### GDOP Criterion  
In this section, we describe the details of the GDOP [28]. To determine the GDOP, we first define a measured distance, called pseudorange, as follows:  
\[\rho_{c}^{(k)}=r^{(k)}+c\cdot\delta t_{u}+\tilde{\epsilon}_{p}^{(k)} \tag{1}\]  
\(\rho_{c}^{(k)}\) is estimated by compensating for satellite clock error and residual errors as much as possible. \(\tilde{\epsilon}_{p}^{(k)}\) represents a comprehensive impact of residual errors, and \(\delta t_{u}\) represents the time bias of the user receiver relative to true GPS time (GPST), where \(c\) denotes the speed of light. Let \(\mathbf{x}=(x,y,z)\) and \(\mathbf{x}^{(k)}=\left(x^{(k)},y^{(k)},z^{(k)}\right)\) be the vectors representing the location of the receiver and the \(k^{th}\) satellite at the time of measurement and signal emission, respectively, where \(k=1,2,\ldots,K\). The true range between the receiver and the satellite is then given by  
\[ \begin{split} r^{(k)}&=\sqrt{\left(x^{(k)}-x\right) ^{2}+\left(y^{(k)}-y\right)^{2}+\left(z^{(k)}-z\right)^{2}}\\ &=\left\|\mathbf{x}^{(k)}-\mathbf{x}\right\|\end{split}  \tag{2}\]  
Thus,  
\[\rho_{c}^{(k)}=\left\|\mathbf{x}^{(k)}-\mathbf{x}\right\|+b+\tilde{\epsilon}_{p}^{(k)} \tag{3}\]  
where \(b\) is a parameter that accounts for the receiver clock bias \(c\cdot\delta t_{u}\). \begin{table}
\begin{tabular}{p{113.8 pt} p{113.8 pt} p{113.8 pt}} \hline \hline
**Method** & **Implementation** & **Limitations** \\ \hline \multirow{4}{*}{Signal classification} & Classifies signals as LOS & \multirow{4}{*}{Positioning performance is limited when there are insufficient available signals.} \\  & (line-of-sight) or NLOS & \\  & (non-line-of-sight) and uses only LOS signals for positioning [23] & \\ \hline \multirow{4}{*}{Fisheye camera detection} & Uses a fisheye camera mounted on the user device to capture images of the sky to detect NLOS signals [24, 25] & \multirow{4}{*}{Requires additional sensors and has high power consumption, making it unsuitable for power-sensitive devices.} \\ \cline{3-3} \cline{5-3} \multirow{4}{*}{Three-dimensional LiDAR correction} & Utilizes 3D LiDAR to scan surrounding buildings and correct NLOS propagation using NLOS propagation models [26] & \multirow{4}{*}{High power consumption, unsuitable for power-sensitive devices.} \\ \cline{3-3} \cline{5-3} \multirow{4}{*}{Three-dimensional map-assisted GNSS positioning algorithm (3 DMA)} & Applies ray-tracing techniques to detect and correct NLOS reflections and multipath propagation [27] & \multirow{4}{*}{Requires frequently updated and accurate 3D maps of surrounding buildings, and the algorithm has high computational complexity.} \\ \hline \multirow{4}{*}{Proposed} & Extracts azimuth and elevation angles efficiently using antenna arrays and satellite ephemeris a priori information; introduces an NLOS virtual satellite inversion technique for urban positioning & \multirow{4}{*}{Avoids reliance on additional sensors or complex 3D maps, significantly reducing hardware complexity, power consumption, and computational costs.} \\ \cline{3-3} \cline{5-3  
We can write \(\mathbf{x}=\mathbf{x}_{0}+\delta\mathbf{x}\) and \(b=b_{0}+\delta b\), denoting \(\delta\mathbf{x}\) and \(\delta b\) as the corrections to the initial estimates. We can then set up a linear system of equations to solve for \(\delta\mathbf{x}\) and \(\delta b\). \[\delta\rho^{(k)} =\rho_{c}^{(k)}-\rho_{0}^{(k)} \tag{4}\] \[=\left\|\mathbf{x}^{(k)}-\mathbf{x}_{0}-\delta\mathbf{x}\right\|-\left\|\mathbf{x }^{(k)}-\mathbf{x}_{0}\right\|+(b-b_{0})+\tilde{\epsilon}_{\rho}^{(k)}\] \[\approx-\frac{\left(\mathbf{x}^{(k)}-\mathbf{x}_{0}\right)}{\left\|\mathbf{x }^{(k)}-\mathbf{x}_{0}\right\|}\cdot\delta\mathbf{x}+\delta b+\tilde{\epsilon}_{\rho} ^{(k)}\] \[=-\mathbf{1}^{(k)}\cdot\delta\mathbf{x}+\delta b+\tilde{\epsilon}_{\rho} ^{(k)}\]  
We use the Taylor series expansion to approximate the vector form of the equations.