Noted in passing that the implementation of ionppp() still has rp=re/ri*cos(azel.el); but is now effectively rp=(re+pos.height)/ri*cos(azel.el); in RTKLIB, and also see page 17 of the IGS SSR V1 spec that includes the station height - also did the maths and it seems correct to include the station height.
Similar issue in ionmapf() which is passed the position but ignores the station height.
Also this IGS SSR spec notes that the input position is expected to be a position on a spherical model, but the pos passed in comes via ecef2pos() in at least some paths which gives a position on the elliptical model. RTKLIB also does this, but for correctness should the position be converted to the spherical model before passing it to ionppp()? Comparing the piercing point difference suggests that it makes little difference to the slant factor or the longitude but that there is a small difference in the latitude.
fwiw tried converting the station position in xyz (r) to the position on the spherical model with:
double r2=r[0]*r[0]+r[1]*r[1];
pos[0]=r2>1E-12?atan(r[2]/sqrt(r2)):(r[2]>0.0?PI/2.0:-PI/2.0); // lat
pos[1]=r2>1E-12?atan2(r[1],r[0]):0.0; // lon
pos[2]=sqrt(r2+r[2]*r[2])-re; // height
Btw: not sure how useful these ionosphere models are, what future they have, products available seem low resolution, might be effectively dead code.
Noted in passing that the implementation of ionppp() still has
rp=re/ri*cos(azel.el);but is now effectivelyrp=(re+pos.height)/ri*cos(azel.el);in RTKLIB, and also see page 17 of the IGS SSR V1 spec that includes the station height - also did the maths and it seems correct to include the station height.Similar issue in ionmapf() which is passed the position but ignores the station height.
Also this IGS SSR spec notes that the input position is expected to be a position on a spherical model, but the pos passed in comes via ecef2pos() in at least some paths which gives a position on the elliptical model. RTKLIB also does this, but for correctness should the position be converted to the spherical model before passing it to ionppp()? Comparing the piercing point difference suggests that it makes little difference to the slant factor or the longitude but that there is a small difference in the latitude.
fwiw tried converting the station position in xyz (r) to the position on the spherical model with:
Btw: not sure how useful these ionosphere models are, what future they have, products available seem low resolution, might be effectively dead code.