[Proj] please help C++ idiot with datum conversion
Mike Zulauf
mazulauf at met.utah.edu
Thu Jul 15 09:49:00 PDT 2004
Hi all,
I have what I believe to be a simple question. I've got a very simple
bit of code C++ that converts a vector containing NAD27 long-lat to
NAD27 State Plane coordinates. It's written so that I can call it from
Fortran. It appears to be working, and giving correct results.
I need to modify it, however, so that it will also do a datum
conversion, from WGS84 lat-lon to NAD27 State Plane coordinates. I'm
sure this is simple, but I'm a newbie with PROJ. To make matters worse,
I'm not a C++ programmer. I generally work with Fortran.
Below is the code as it stands now. What's the best way to modify the
code to include the datum conversion? It's ok to just have it
hard-wired - I don't need it to be flexible (ie, it doesn't need to be
able to handle NAD27 _or_ WGS84, just WGS84). But I still need the
output to be NAD27.
Even though it works as it is now (without datum conversion), it's
entirely likely I have some stupid error or nonstandard code, since I'm
not a C++ programmer. If there's anything of that sort which might
cause problems down the line, I wouldn't mind hearing about that either.
Thanks,
Mike
/*--------------------------------------------------------------------*/
#include <stdio.h>
#include <projects.h>
void conv_coords(double coord_1[], double coord_2[], int *ni,
int *conv_stat)
{
static char *parms[] = {
"proj=lcc",
"init=nad27:3601"
};
PJ *ref;
projUV data;
int i;
*conv_stat = 1;
if ( ! (ref = pj_init(sizeof(parms)/sizeof(char *), parms)) )
{
printf("pj_init error\n");
*conv_stat = 0;
}
for (i = 0; i <= *ni-1; i++)
{
data.u = coord_1[i];
data.v = coord_2[i];
data.u *= DEG_TO_RAD;
data.v *= DEG_TO_RAD;
data = pj_fwd(data, ref);
if (data.u != HUGE_VAL)
{
coord_1[i] = data.u;
coord_2[i] = data.v;
}
else
{
printf("pj_fwd error\n");
*conv_stat = 0;
}
}
pj_free(ref);
}
/*--------------------------------------------------------------------*/
--
Mike Zulauf
mazulauf at met.utah.edu
More information about the Proj
mailing list