<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Michael,</p>
    <p>digging a bit, I see that the formulas that PROJ uses come from
      Snyder, which are also the same used in EPSG guidance note 7-2
      (<a class="moz-txt-link-freetext" href="https://www.iogp.org/wp-content/uploads/2019/09/373-07-02.pdf">https://www.iogp.org/wp-content/uploads/2019/09/373-07-02.pdf</a>),
      use a truncated series expansions that must be valid in a (large,
      but not global) restricted domain around the projection center
      (here 0,0), and diverge beyond.  The formulas used by
      GeographicLib in
<a class="moz-txt-link-freetext" href="https://github.com/geographiclib/geographiclib/blob/main/src/CassiniSoldner.cpp#L34">https://github.com/geographiclib/geographiclib/blob/main/src/CassiniSoldner.cpp#L34</a>
      are totally different looking, using geodesics computation, and I
      presume implement Charles' remark in
      <a class="moz-txt-link-freetext" href="https://arxiv.org/pdf/1109.4448">https://arxiv.org/pdf/1109.4448</a> "Two geodesic projections, the
      azimuthal equidistant projection and the Cassini-Soldner
      projection, are simple to write and their domain of applicability
      is not artificially restricted, as would be the case, for example,
      if the series expansion for the Cassini-Soldner projection were
      used (Snyder, 1987, §13)". And looking into Snyder's Map
      Projections, "For the ellipsoidal form, a set of series
      approximations is given for use in a zone extending 3° to 4° of
      longitude from the central meridian". So given that's the ones
      used by PROJ, no wonder that at 149° you get garbage. I suppose
      someone could port GeographicLib's formulas to PROJ (interestingly
      the inverse method using the geodesics is a 2-liner and doesn't
      require iterative solving like done in PROJ), assuming PROJ's
      geodesic.c contains all the needed base functions</p>
    <p>Even</p>
    <div class="moz-cite-prefix">Le 23/01/2026 à 03:19, Michael Sumner
      via PROJ a écrit :<br>
    </div>
    <blockquote type="cite"
cite="mid:CAAcGz9_HJoCa20LJF+RfA=jy4CS2fHV1iW1g1buD+2rEXnYMWA@mail.gmail.com">
      <div dir="ltr">
        <div>I'm having trouble with Cassini-Soldner: </div>
        <div><br>
        </div>
        <div># Good point - agreeable coords<br>
          echo "-6 -71" | proj +proj=cass +R=6378137        # spherical
           -217097.18 -7914445.72<br>
          echo "-6 -71" | proj +proj=cass +ellps=WGS84      #
          ellipsoidal -217749.76 -7891343.23<br>
          <br>
          # Bad point - ellipsoidal diverges<br>
          echo "149 45" | proj +proj=cass +R=6378137        # spherical:
          2377511.89 14538559.49<br>
          echo "149 45" | proj +proj=cass +ellps=WGS84      #
          ellipsoidal: -2738664.72 28023005.14 (WRONG)</div>
        <div><br>
        </div>
        <div>That second coordinate seems wildly wrong, I've compared
          with GeographicLib which shows </div>
        <div><br>
        </div>
        <div>lon,lat,x,y<br>
          -6.000000,-71.000000,-217749.757184,-7891343.215151<br>
          149.000000,45.000000,2381489.299010,14528505.93346</div>
        <div><br>
        </div>
        <div>I've laid out a longer description exploring this (and
          includes the C++ wrapper for GeographicLib): </div>
        <div><br>
        </div>
        <div><a href="https://github.com/mdsumner/projcassini"
            moz-do-not-send="true" class="moz-txt-link-freetext">https://github.com/mdsumner/projcassini</a></div>
        <div><br>
        </div>
        <div>I hope that's enough to show the problem, I found this very
          confusing but the output of GeographicLib makes me more
          confident. </div>
        <div><br>
        </div>
        <div>Cheers, Mike</div>
        <div><br>
        </div>
        <span class="gmail_signature_prefix">-- </span><br>
        <div dir="ltr" class="gmail_signature"
          data-smartmail="gmail_signature">
          <div dir="ltr">
            <div dir="ltr">
              <div dir="ltr">Michael Sumner</div>
              <div dir="ltr">Research Software Engineer<br>
                Australian Antarctic Division<br>
                Hobart, Australia</div>
              <div dir="ltr">0438489030<br>
                e-mail: <a href="mailto:mdsumner@gmail.com"
                  target="_blank" moz-do-not-send="true"
                  class="moz-txt-link-freetext">mdsumner@gmail.com</a></div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre wrap="" class="moz-quote-pre">_______________________________________________
PROJ mailing list
<a class="moz-txt-link-abbreviated" href="mailto:PROJ@lists.osgeo.org">PROJ@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/proj">https://lists.osgeo.org/mailman/listinfo/proj</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="http://www.spatialys.com">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
  </body>
</html>