Robust and globally referenced positioning is the basis of fully autonomous driving in diverse scenarios. Globally navigation satellite system (GNSS) is currently the main source providing globally referenced positioning. Satisfactory accuracy (5~10 meters) can be obtained in sparse areas. However, the GNSS positioning error can go up to even 100 meters in dense urban areas due to the multipath effects and none-line-of-sight (NLOS) reception caused by reflection and blockage from buildings. NLOS is currently the dominant component degrading the performance of GNSS positioning. Recently, the camera is employed to detect the NLOS satellites and then the NLOS are excluded from GNSS calculation. This exclusion can cause severe distortion of satellite distribution, due to the excessive NLOS receptions in deep urban canyon. This paper proposes to correct the NLOS receptions with the aid of 3D LiDAR ranging after detecting NLOS receptions using camera. The sky-pointing monocular camera is firstly employed to detect satellite visibility. Then, the NLOS delay is modeled using the satellite elevation angle, azimuth angle and distance from receiver to possible reflector which is ranged by 3D LiDAR. The pseudorange measurements are corrected using the estimated NLOS delay. Finally, the GNSS positioning is improved using corrected pseudorange measurements and healthy (visible) satellites. The proposed method is verified through real road tests in a deep urbanized canyon of Hong Kong. The result shows that the proposed method can effectively improve the GNSS positioning performance by decreasing the mean error from 22.01 to 14.96 meters.