<div dir="ltr"><div><div>Hello!!<br><br></div>Hermann code is fine. After a new review, I&#39;ve found the cause of the disparities between cs2cs and my code&#39;s output: I forgot to set the number of decimals places in the output file.<br><br></div>Thank you all for your help! :)<br><div><div class="gmail_extra"><br><div class="gmail_quote">On 16 February 2015 at 18:41, Adri CS <span dir="ltr">&lt;<a href="mailto:acsantome@gmail.com" target="_blank">acsantome@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi!<br><br></div>Thanks for your time! Your code works fine! I&#39;ll check mine tomorrow morning and see where I messed up.<br><br>Thanks a lot!<br></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On 15 February 2015 at 09:41, Hermann Peifer <span dir="ltr">&lt;<a href="mailto:peifer@gmx.eu" target="_blank">peifer@gmx.eu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Adri,<br>
<br>
Just to confirm that using the API doesn&#39;t make any difference, as expected. See mycode.c below, based on <a href="https://trac.osgeo.org/proj/wiki/ProjAPI" target="_blank">https://trac.osgeo.org/proj/<u></u>wiki/ProjAPI</a><br>
<br>
Your own sample code below has these coordinates:<br>
&gt; /double lat = -45.491596;<br>
&gt; /double lon = -23.570147;<br>
<br>
This point falls into the South Atlantic Ocean, somewhere in the middle between Tierra del Fuego and Cape Town. So you&#39;d have to swap lat/lon in order to get to the Rodovia dos Tamoios, (SP-099).<br>
<br>
Hope this helps, Hermann<br>
<br>
$ echo -45.491596 -23.570147 769.750000 | ./mycode<br>
449834.145105   7393276.784821  769.75<br>
<br>
$ cat mycode.c<br>
#include &lt;stdio.h&gt;<br>
#include &lt;proj_api.h&gt;<br>
<br>
int main(int argc, char **argv) {<br>
<br>
        projPJ wgs, sirgas;<br>
        double lon, lat, alt;<br>
<br>
        if (!(wgs = pj_init_plus(&quot;+init=epsg:4326&quot;<u></u>)) )<br>
                exit(1);<br>
<br>
        if (!(sirgas = pj_init_plus(&quot;+init=epsg:<u></u>31983&quot;)) )<br>
                exit(1);<br>
<br>
        while (scanf(&quot;%lf %lf %lf&quot;, &amp;lon, &amp;lat, &amp;alt) == 3) {<br>
                lon *= DEG_TO_RAD;<br>
                lat *= DEG_TO_RAD;<span><br>
                pj_transform(wgs, sirgas, 1, 1, &amp;lon, &amp;lat, &amp;alt);<br></span>
                printf(&quot;%.6f\t%.6f\t%.2f\n&quot;, lon, lat, alt);<br>
        }<br>
        exit(0);<span><br>
}<br>
<br>
<br>
On 2015-02-11 18:07, Adri CS wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
Hi,<br>
<br>
I built Proj4 4.8.0 for Windows with MinGW. I&#39;m trying to reproject some<br>
WGS84 lat/long coordinates (degrees) from Brazil to UTM Sirgas 2000. The<br>
UTM zone would be 23S.<br>
<br>
**) Using the cs2cs app:<br>
<br></span>
/cs2cs.exe -f %.6f +init=epsg:3273 +proj=latlong +to +init=epsg:31938<br>
input.txt &gt; output.txt/<span><br>
<br>
**The input file would contain coords like this: -45.491596<br>
-23.570147 769.750000<br>
<br>
And the output would be: 449834.145105    7393276.784821 769.750000<br>
<br>
/*****************************<u></u>******************/<br>
<br>
**) Using the api (I omit the error checking):<br>
<br></span>
/projPJ wgs = pj_init_plus(&quot;+init=epsg:32723 +proj=latlong&quot;);<br>
/<br>
/projPJ sirgas = = pj_init_plus(&quot;+init=epsg:<u></u>31983&quot;);<br>
/<br>
/double lat = -45.491596;<br>
/<br>
/double lon = -23.570147;<br>
double alt = 769.750000;<br>
<br>
/<br>
/lat *= DEG_TO_RAD;<br>
/<br>
/lon *= DEG_TO_RAD;<br>
/<br>
/<br>
/<br>
/pj_transform(wgs, sirgas, 1, 1, &amp;lon, &amp;lat, &amp;alt);/<span><br>
<br>
This outputs: 449834.127632      7393276.821296       769.750000<br>
<br>
In both cases, the left part of the returned UTM easting and northing<br>
coordinates are the same, but the numbers after the decimal point are<br>
different.<br>
<br>
I&#39;m only transforming the input lat/lon coordintates when using the api,<br>
since if I transform them before calling cs2cs, it will output wron<br>
coords (the easting will have 7 digits before the decimal points).<br>
<br>
What&#39;s happening here? The only difference I can see it&#39;s the<br>
transformation of the lat/lon coordinates from degrees to radians: I&#39;m<br>
multypling directly while in the cs2cs source, there&#39;s a call to the<br></span>
/dmstor/ function (which I can&#39;t call directly, it seems).<span><br>
<br>
Thanks for your time &amp; cheers!<br>
Adri.<br>
<br>
<br></span>
______________________________<u></u>_________________<br>
Proj mailing list<br>
<a href="mailto:Proj@lists.maptools.org" target="_blank">Proj@lists.maptools.org</a><br>
<a href="http://lists.maptools.org/mailman/listinfo/proj" target="_blank">http://lists.maptools.org/<u></u>mailman/listinfo/proj</a><br>
<br>
</blockquote>
<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div></div></div>