[Proj] .NET / C# port of proj4

Gerald I. Evenden gerald.evenden at verizon.net
Wed Jun 7 21:18:48 EDT 2006


On Wednesday 07 June 2006 4:45 pm, Jason Askew wrote:
> I am 10 hours into a C# / .NET port of proj4.
>
> My current focus is getting one specific function to work, that being
> pj_transform from pj_transform.c
>
> I am at the point now that I'm dealing with PJ_GRIDINFO and
> pj_apply_gridshift and other such matters.
>
> Kinda of a top down approach, if you will.
>
> This is not my first C to C# conversion but is definately by far the
> most challenging.
>
> Anyway, I have questions.  As this will probably be the first post of
> many, I'm going to use .NET / C# as the start of all my subjects lines
> to keep a common format for this topic going.
>
> Most questions should be about the logic or concepts behind the project.
>
> So, question one:
>
> In file: pj_transform.c
>
> projected_loc is defined as so:
>
> XY         projected_loc;
>
> XY being defined as:
>
> typedef struct { double x, y; }     XY;
>
> buy then later in pj_transform.c, u and v members show up in
> pj_transforms.c, like so:
>
>                     projected_loc.u = x[point_offset * i];
>                     projected_loc.v = y[point_offset * i];
>
> I must be missing something painfully obvious.  I see the defines
> wrapped around the def of the XY struct, i.e.:
>
> #ifndef PJ_LIB__
> #define XY projUV
> #define LP projUV
> #else
> typedef struct { double x, y; }     XY;
> typedef struct { double lam, phi; } LP;
> #endif
>
> but PJ_LIB__ is defined.
>
> Not to mention pj_inv and pj_inv expect the XY for and not the projUV form.
>
> I must be missing something obvious.
>
> Jason

As the one who started all that, I will take the blame.  In some cases it does 
not matter whether it is geographic or Cartesian data being passed around so 
I used a generic UV name for a reference of material that was identical as 
far as the hardware was concerned.

PROJ_LIB__ (same as old PJ_LIB__) designates that lib_proj.h is being used in 
a projection routine and the the macros defined inside its area are only 
applicable in those routines.

I think PROJ_UV is only used in lproj.c.

Don't worry about it. ;-)

Can't C material be linked to C# software?  If not, pity.
-- 
Jerry and the low-riders: Daisy Mae and Joshua
"Cogito cogito ergo cogito sum"
   Ambrose Bierce, The Devil's Dictionary


More information about the Proj mailing list