[PROJ] How to project a point from from one ellipsoid to other ellipsoid using proj library

Rohith Narayandas rohith at dreamtns.in
Thu Jul 13 22:45:22 PDT 2023


Dear Proj Team,
I hope this email finds you well. I am writing to seek guidance on how to project a point from one ellipsoid to another ellipsoid using the Proj library.
I have been working on a geospatial project that requires converting coordinates between different ellipsoids. After some research, I discovered that the Proj library is a widely used and powerful tool for geospatial data transformations. However, I am currently facing some challenges in understanding and implementing the ellipsoid projection functionality.
I would greatly appreciate it if you could provide me with some guidance on how to accomplish this task using the Proj library. Specifically, I would like to know:

  1.  I want to project a 3d point which is in wgs84 to an airy ellipsoid.
I did as shown below. But I am getting incorrect values and height of the point is also not changing.

PJ *Src = proj_create(C, "+proj=geocent  +datum=WGS84 +type=crs");
PJ *Targ_Coor = proj_create(C, "+proj=geocent +ellps=airy +type=crs");
auto P2G = proj_create_crs_to_crs_from_pj(C, Src, Targ_Coor, NULL, NULL);
       if (!P2G)
             return result;

c_out_glob = proj_trans(P2G, PJ_FWD, c_in);


  1.  Are there any specific parameters or options that I need to consider while performing the projection from 3d to 2d? In the below code, I am performing projection of a point from wgs84 to oblique merctor. But still I am getting incorrect values.

PJ *Src = proj_create(C, "+proj=geocent  +datum=WGS84 +type=crs");
       if (Src == NULL)
             return result;

       PJ *Targ = proj_create(C, "+proj=omerc +lat_0=4 +lonc =115 +k_0=1 +x_0=2000000 +y_0=5000000 +lat_ts=0 +h_0=0 +alpha=53.31581 +gamma=53.130102  +lat_ts=0 +units=m +ellps=WGS84 +type=crs");

       if (Targ == NULL)
             return result;

       auto G2P = proj_create_crs_to_crs_from_pj(C, Src, Targ, NULL, NULL);
       if (!G2P)
       {
             fprintf(stderr, "failed \n");
             return result;
       }

       PJ *norm = proj_normalize_for_visualization(C, G2P);
       if (0 == norm) {
             fprintf(stderr, "Failed to normalize transformation object.\n");
             return 1;
       }

       proj_destroy(G2P);
       G2P = norm;

c_out = proj_trans(G2P, PJ_FWD, c_in);
Any code examples, documentation references, or step-by-step instructions you could provide would be immensely helpful in guiding me through this process. I am eager to learn and explore the capabilities of the Proj library, and any assistance you can offer would be invaluable.
Thank you very much for your time and support. I look forward to hearing from you soon.

Best Regards,
Rohith Narayandas

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20230714/93b32907/attachment.htm>


More information about the PROJ mailing list