Skip to content

ionppp calculation #184

Description

@ourairquality

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions