Add gctpc 1.3, an USGS General Cartographic Transformation Package

(GCTP).

PR:		26927
Submitted by:	Randall Hopper <aa8vb@nc.rr.com>
This commit is contained in:
Maxim Sobolev 2001-05-31 12:45:33 +00:00
parent d45a652df5
commit d819cdda38
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=43348
17 changed files with 697 additions and 0 deletions

View File

@ -55,6 +55,7 @@
SUBDIR += fortuneit
SUBDIR += freedialog
SUBDIR += ftree
SUBDIR += gctpc
SUBDIR += geekcode
SUBDIR += git
SUBDIR += gman

35
misc/gctpc/Makefile Normal file
View File

@ -0,0 +1,35 @@
# New ports collection makefile for: gctpc
# Date created: 26 Apr 2001
# Whom: Randall Hopper <aa8vb@nc.rr.com>
#
# $FreeBSD$
#
PORTNAME= gctpc
PORTVERSION= 1.3
CATEGORIES= misc
MASTER_SITES= http://edc.usgs.gov/pub/software/gctpc/
DISTNAME= gctpc
EXTRACT_SUFX= .tar.Z
MAINTAINER= aa8vb@nc.rr.com
WRKSRC= ${WRKDIR}/${PORTNAME}/source
USE_GMAKE= yes
ALL_TARGET= libgctpc.so.1
INSTALLS_SHLIB= yes
do-install:
${INSTALL_DATA} ${WRKSRC}/libgctpc.a ${PREFIX}/lib
${INSTALL_PROGRAM} ${WRKSRC}/libgctpc.so.1 ${PREFIX}/lib
${LN} -sf libgctpc.so.1 ${PREFIX}/lib/libgctpc.so
${MKDIR} ${PREFIX}/include/gctpc
${INSTALL_DATA} ${WRKSRC}/*.h ${PREFIX}/include/gctpc
${INSTALL_DATA} ${FILESDIR}/*.h ${PREFIX}/include/gctpc
${MKDIR} ${PREFIX}/share/doc/gctpc
${INSTALL_MAN} ${WRKSRC}/../doc/* ${PREFIX}/share/doc/gctpc
${INSTALL_MAN} ${WRKSRC}/../README ${PREFIX}/share/doc/gctpc/README.main
.include <bsd.port.mk>

1
misc/gctpc/distinfo Normal file
View File

@ -0,0 +1 @@
MD5 (gctpc.tar.Z) = 18fe9413e4dbed539c740237bb683a2d

View File

@ -0,0 +1,9 @@
#ifndef INCLUDED_FOR_INIT_H
#define INCLUDED_FOR_INIT_H
void
for_init(long int outsys, long int outzone, double *outparm,
long int outdatum, char *fn27, char *fn83, long int *iflg,
ForwardTransFunc for_trans[]);
#endif /* INCLUDED_FOR_INIT_H */

7
misc/gctpc/files/gctp.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef INCLUDED_GCTP_H
#define INCLUDED_GCTP_H
typedef long (*ForwardTransFunc)(double, double, double*, double*);
typedef long (*InverseTransFunc)(double, double, double*, double*);
#endif /* INCLUDED_GCTP_H */

440
misc/gctpc/files/gctpc.h Normal file
View File

@ -0,0 +1,440 @@
#ifndef GCTPC_H
#define GCTPC_H
#include "proj.h"
/* This didn't come with the original gctpc distribution.
But it *should* have. -- jamie 2/14/95 */
void gctp(double* incoor,
long* insys,
long* inzone,
double* inparm,
long* inunit,
long* indatum,
long* ipr,
char* efile,
long* jpr,
char* pfile,
double* outcoor,
long* outsys,
long* outzone,
double* outparm,
long* outunit,
long* outdatum,
char* fn27,
char* fn83,
long* iflg);
long
alberforint(double r_maj, double r_min, double lat1, double lat2, double lon0,
double lat0, double false_east, double false_north);
long
alberfor(double lon, double lat, double *x, double *y);
long
alberinvint(double r_maj, double r_min, double lat1, double lat2, double lon0,
double lat0, double false_east, double false_north);
long
alberinvint(double r_maj, double r_min, double lat1, double lat2, double lon0,
double lat0, double false_east, double false_north);
long
alberinvint(double r_maj, double r_min, double lat1, double lat2, double lon0,
double lat0, double false_east, double false_north);
long
alberinv(double x, double y, double *lon, double *lat);
long
alconforint(double r_maj, double r_min, double false_east, double false_north);
long
alconfor(double lon, double lat, double *x, double *y);
long
alconinvint(double r_maj, double r_min, double false_east, double false_north);
long
alconinv(double x, double y, double *lon, double *lat);
long
azimforint(double r_maj, double center_lon, double center_lat, double false_east,
double false_north);
long
azimfor(double lon, double lat, double *x, double *y);
long
aziminvint(double r_maj, double center_lon, double center_lat, double false_east,
double false_north);
long
aziminv(double x, double y, double *lon, double *lat);
long
eqconforint(double r_maj, double r_min, double lat1, double lat2,
double center_lon, double center_lat, double false_east,
double false_north, long int mode);
long
eqconfor(double lon, double lat, double *x, double *y);
long
eqconinvint(double r_maj, double r_min, double lat1, double lat2,
double center_lon, double center_lat, double false_east,
double false_north, long int mode);
long
eqconinv(double x, double y, double *lon, double *lat);
long
equiforint(double r_maj, double center_lon, double lat1, double false_east,
double false_north);
long
equifor(double lon, double lat, double *x, double *y);
long
equiinvint(double r_maj, double center_lon, double lat1,
double false_east, double false_north);
long
equiinv(double x, double y, double *lon, double *lat);
long
gnomforint(double r, double center_long, double center_lat,
double false_east, double false_north);
long
gnomfor(double lon, double lat, double *x, double *y);
long
gnominvint(double r, double center_long, double center_lat, double false_east,
double false_north);
long
gnominv(double x, double y, double *lon, double *lat);
long
goodforint(double r);
long
goodfor(double lon, double lat, double *x, double *y);
long
goodinvint(double r);
long
goodinv(double x, double y, double *lon, double *lat);
long
gvnspforint(double r, double h, double center_long, double center_lat,
double false_east, double false_north);
long
gvnspfor(double lon, double lat, double *x, double *y);
long
gvnspinvint(double r, double h, double center_long, double center_lat,
double false_east, double false_north);
long
gvnspinv(double x, double y, double *lon, double *lat);
long
hamforint(double r, double center_long, double false_east, double false_north);
long
hamfor(double lon, double lat, double *x, double *y);
long
haminvint(double r, double center_long, double false_east, double false_north);
long
haminv(double x, double y, double *lon, double *lat);
long
imolwforint(double r);
long
imolwfor(double lon, double lat, double *x, double *y);
long
imolwinvint(double r);
long
imolwinv(double x, double y, double *lon, double *lat);
long
lamazforint(double r, double center_long, double center_lat, double false_east,
double false_north);
long
lamazfor(double lon, double lat, double *x, double *y);
long
lamazinvint(double r, double center_long, double center_lat, double false_east,
double false_north);
long
lamazinv(double x, double y, double *lon, double *lat);
long
lamccforint(double r_maj, double r_min, double lat1, double lat2, double c_lon,
double c_lat, double false_east, double false_north);
long
lamccfor(double lon, double lat, double *x, double *y);
long
lamccinvint(double r_maj, double r_min, double lat1, double lat2, double c_lon,
double c_lat, double false_east, double false_north);
long
lamccinv(double x, double y, double *lon, double *lat);
long
merforint(double r_maj, double r_min, double center_lon, double center_lat,
double false_east, double false_north);
long
merfor(double lon, double lat, double *x, double *y);
long
merinvint(double r_maj, double r_min, double center_lon, double center_lat,
double false_east, double false_north);
long
merinv(double x, double y, double *lon, double *lat);
long
millforint(double r, double center_long, double false_east, double false_north);
long
millfor(double lon, double lat, double *x, double *y);
long
millinvint(double r, double center_long, double false_east, double false_north);
long
millinv(double x, double y, double *lon, double *lat);
long
molwforint(double r, double center_long, double false_east, double false_north);
long
molwfor(double lon, double lat, double *x, double *y);
long
molwinvint(double r, double center_long, double false_east, double false_north);
long
molwinv(double x, double y, double *lon, double *lat);
long
obleqforint(double r, double center_long, double center_lat, double shape_m,
double shape_n, double angle, double false_east, double false_north);
long
obleqfor(double lon, double lat, double *x, double *y);
long
obleqinvint(double r, double center_long, double center_lat, double shape_m,
double shape_n, double angle, double false_east, double false_north);
long
obleqinv(double x, double y, double *lon, double *lat);
long
omerforint(double r_maj, double r_min, double scale_fact, double azimuth,
double lon_orig, double lat_orig, double false_east,
double false_north, double lon1, double lat1, double lon2,
double lat2, long int mode);
long
omerfor(double lon, double lat, double *x, double *y);
long
omerinvint(double r_maj, double r_min, double scale_fact, double azimuth,
double lon_orig, double lat_orig, double false_east,
double false_north, double lon1, double lat1, double lon2,
double lat2, long int mode);
long
omerinv(double x, double y, double *lon, double *lat);
long
orthforint(double r_maj, double center_lon, double center_lat, double false_east,
double false_north);
long
orthfor(double lon, double lat, double *x, double *y);
long
orthinvint(double r_maj, double center_lon, double center_lat,
double false_east, double false_north);
long
orthinv(double x, double y, double *lon, double *lat);
long
polyforint(double r_maj, double r_min, double center_lon, double center_lat,
double false_east, double false_north);
long
polyfor(double lon, double lat, double *x, double *y);
long
polyinvint(double r_maj, double r_min, double center_lon, double center_lat,
double false_east, double false_north);
long
polyinv(double x, double y, double *lon, double *lat);
long
psforint(double r_maj, double r_min, double c_lon, double c_lat,
double false_east, double false_north);
long
psfor(double lon, double lat, double *x, double *y);
long
psinvint(double r_maj, double r_min, double c_lon, double c_lat, double false_east,
double false_north);
long
psinv(double x, double y, double *lon, double *lat);
long
robforint(double r, double center_long, double false_east, double false_north);
long
robfor(double lon, double lat, double *x, double *y);
long
robinvint(double r, double center_long, double false_east, double false_north);
long
robinv(double x, double y, double *lon, double *lat);
long
sinforint(double r, double center_long, double false_east, double false_north);
long
sinfor(double lon, double lat, double *x, double *y);
long
sininvint(double r, double center_long, double false_east, double false_north);
long
sininv(double x, double y, double *lon, double *lat);
long
somforint(double r_major, double r_minor, long int satnum, long int path,
double alf_in, double lon, double false_east, double false_north,
double time, long int start1, long int flag);
long
somfor(double lon, double lat, double *y, double *x);
long
sominvint(double r_major, double r_minor, long int satnum, long int path,
double alf_in, double lon, double false_east, double false_north,
double time, long int start1, long int flag);
long
sominv(double y, double x, double *lon, double *lat);
long
sterforint(double r_maj, double center_lon, double center_lat,
double false_east, double false_north);
long
sterfor(double lon, double lat, double *x, double *y);
long
sterinvint(double r_maj, double center_lon, double center_lat,
double false_east, double false_north);
long
sterinv(double x, double y, double *lon, double *lat);
long
stplnforint(long int zone, long int sphere, char *fn27, char *fn83);
long
stplnfor(double lon, double lat, double *x, double *y);
long
stplninvint(long int zone, long int sphere, char *fn27, char *fn83);
long
stplninv(double x, double y, double *lon, double *lat);
long
utmforint(double r_maj, double r_min, double scale_fact, long int zone);
long
utmfor(double lon, double lat, double *x, double *y);
long
tmforint(double r_maj, double r_min, double scale_fact, double center_lon,
double center_lat, double false_east, double false_north);
long
tmfor(double lon, double lat, double *x, double *y);
long
utminvint(double r_maj, double r_min, double scale_fact, long int zone);
long
utminv(double x, double y, double *lon, double *lat);
long
tminvint(double r_maj, double r_min, double scale_fact, double center_lon,
double center_lat, double false_east, double false_north);
long
tminv(double x, double y, double *lon, double *lat);
long
vandgforint(double r, double center_long, double false_east, double false_north);
long
vandgfor(double lon, double lat, double *x, double *y);
long
vandginvint(double r, double center_long, double false_east, double false_north);
long
vandginv(double x, double y, double *lon, double *lat);
long
wivforint(double r, double center_long, double false_east, double false_north);
long
wivfor(double lon, double lat, double *x, double *y);
long
wivinvint(double r, double center_long, double false_east, double false_north);
long
wivinv(double x, double y, double *lon, double *lat);
long
wviiforint(double r, double center_long, double false_east, double false_north);
long
wviifor(double lon, double lat, double *x, double *y);
long
wviiinvint(double r, double center_long, double false_east, double false_north);
long
wviiinv(double x, double y, double *lon, double *lat);
#endif /* GCTPC_H */

View File

@ -0,0 +1,8 @@
#ifndef INCLUDED_INV_INIT_H
#define INCLUDED_INV_INIT_H
void
inv_init(long int insys, long int inzone, double *inparm, long int indatum,
char *fn27, char *fn83, long int *iflg, InverseTransFunc inv_trans[]);
#endif /* INCLUDED_INV_INIT_H */

35
misc/gctpc/files/patch-aa Normal file
View File

@ -0,0 +1,35 @@
$FreeBSD$
--- Makefile.orig Fri Feb 24 17:05:37 1995
+++ Makefile Thu May 31 15:33:40 2001
@@ -1,10 +1,12 @@
INCDIR =
-ARCHIVE = geolib.a
+SHLIB = libgctpc.so.1
+ARCHIVE = libgctpc.a
LIBDIR =
SRCDIR = .
INCS = cproj.h proj.h
-CC = cc
+CC ?= cc
+CFLAGS += -fPIC -DPIC
OBJECTS= \
$(ARCHIVE)(alberfor.o) $(ARCHIVE)(alberinv.o) \
@@ -56,8 +58,13 @@
cproj.c report.c lamccfor.c lamccinv.c paksz.c untfz.c sphdz.c \
br_gctp.c Makefile cproj.h proj.h
+$(SHLIB): $(ARCHIVE)
+ mkdir objs
+ cd objs && ar x ../$(ARCHIVE) && $(CC) -shared -o ../$(SHLIB) *.o
+ rm -rf objs
+
$(ARCHIVE): $(OBJECTS)
- ranlib geolib.a
+ ranlib libgctpc.a
$(ARCHIVE)(gctp.o): $(INCS)

42
misc/gctpc/files/patch-ab Normal file
View File

@ -0,0 +1,42 @@
--- ../work/gctpc/source/cproj.h Fri Nov 19 14:32:06 1993
+++ cproj.h Sun Feb 11 12:32:19 2001
@@ -1,3 +1,6 @@
+#ifndef INCLUDED_CPROJ_H
+#define INCLUDED_CPROJ_H
+
#include <math.h>
#define PI 3.141592653589793238
@@ -26,3 +29,32 @@
#define IMOD(A, B) (A) - (((A) / (B)) * (B)) /* Integer mod function */
+/* Not part of the original gctpc distribution. */
+
+#ifdef NEED_SINCOS
+void
+sincos(double val, double *sin_val, double *cos_val);
+#endif
+
+double asinz (double con);
+double msfnz (double eccent, double sinphi, double cosphi);
+double qsfnz (double eccent, double sinphi, double cosphi);
+double phi1z (double eccent, double qs, long int *flag);
+double phi2z(double eccent, double ts, long int *flag);
+double phi3z(double ml, double e0, double e1, double e2, double e3, long int *flag);
+double phi4z (double eccent, double e0, double e1, double e2, double e3,
+ double a, double b, double *c, double *phi);
+double pakcz(double pak);
+double pakr2dm(double pak);
+double tsfnz(double eccent, double phi, double sinphi);
+int sign(double x);
+double adjust_lon(double x);
+double e0fn(double x);
+double e1fn(double x);
+double e2fn(double x);
+double e3fn(double x);
+double e4fn(double x);
+double mlfn(double e0, double e1, double e2, double e3, double phi);
+long calc_utm_zone(double lon);
+
+#endif // INCLUDED_CPROJ_H

View File

@ -0,0 +1,8 @@
--- ORIG/cproj.c Mon Nov 22 16:39:46 1993
+++ cproj.c Thu Apr 26 18:40:10 2001
@@ -408,4 +408,4 @@
/* Function to calculate UTM zone number--NOTE Longitude entered in DEGREES!!!
---------------------------------------------------------------------------*/
-calc_utm_zone(lon) double lon; { return((long)(((lon + 180.0) / 6.0) + 1.0)); }
+long calc_utm_zone(lon) double lon; { return((long)(((lon + 180.0) / 6.0) + 1.0)); }

10
misc/gctpc/files/patch-ad Normal file
View File

@ -0,0 +1,10 @@
--- ORIG/gctp.c Fri Feb 24 16:06:16 1995
+++ gctp.c Thu Apr 26 18:42:52 2001
@@ -95,7 +95,6 @@
double lon; /* longitude */
double lat; /* latitude */
double temp; /* dummy variable */
-double sign();
double pakr2dm();
long i,j; /* loop counters */
long ininit_flag; /* input initilization flag */

55
misc/gctpc/files/report.h Normal file
View File

@ -0,0 +1,55 @@
#ifndef INCLUDED_REPORT_H
#define INCLUDED_REPORT_H
// Functions declartions for report.cc.
// Was not provided in the original gctpc distribution.
int
init(long int ipr, long int jpr, char *efile, char *pfile);
void
close_file(void);
void
ptitle(char *A);
void
radius(double A);
void
radius2(double A, double B);
void
cenlon(double A);
void
cenlonmer(double A);
void
cenlat(double A);
void
origin(double A);
void
stanparl(double A, double B);
void
stparl1(double A);
void
offsetp(double A, double B);
void
genrpt(double A, char *S);
void
genrpt_long(long int A, char *S);
void
pblank(void);
void
p_error(char *what, char *where);
#endif // INCLUDED_REPORT_H

7
misc/gctpc/files/sphdz.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef INCLUDED_SPHDZ_H
#define INCLUDED_SPHDZ_H
int
sphdz(long int isph, double *parm, double *r_major, double *r_minor, double *radius);
#endif /* INCLUDED_SPHDZ_H */

7
misc/gctpc/files/untfz.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef INCLUDED_UNTFZ_H
#define INCLUDED_UNTFZ_H
long
untfz(long int inunit, long int outunit, double *factor);
#endif /* INCLUDED_UNTFZ_H */

1
misc/gctpc/pkg-comment Normal file
View File

@ -0,0 +1 @@
An USGS General Cartographic Transformation Package (GCTP)

5
misc/gctpc/pkg-descr Normal file
View File

@ -0,0 +1,5 @@
The General Cartographic Transformation Package (GCTP) is a system of
software routines designed to permit the transformation of coordinate
pairs from one map projection to another. The GCTP is the standard
computer software used by the National Mapping Division for map
projection computations.

26
misc/gctpc/pkg-plist Normal file
View File

@ -0,0 +1,26 @@
include/gctpc/cproj.h
include/gctpc/for_init.h
include/gctpc/gctp.h
include/gctpc/gctpc.h
include/gctpc/inv_init.h
include/gctpc/proj.h
include/gctpc/report.h
include/gctpc/sphdz.h
include/gctpc/untfz.h
lib/libgctpc.a
lib/libgctpc.so
lib/libgctpc.so.1
share/doc/gctpc/README
share/doc/gctpc/README.main
share/doc/gctpc/appendixA.txt
share/doc/gctpc/appendixB.txt
share/doc/gctpc/appendixC.txt
share/doc/gctpc/for_init.ps
share/doc/gctpc/gctp.ps
share/doc/gctpc/inv_init.ps
share/doc/gctpc/overview.ps
share/doc/gctpc/reference.txt
share/doc/gctpc/xxxfor.ps
share/doc/gctpc/xxxinv.ps
@dirrm share/doc/gctpc
@dirrm include/gctpc