PROJ.4 Summary


API Functions

pj_transform

- 원본 좌표계에서 대상 좌표계로 x, y, z 점을 변환 해준다. 좌표 값은 decimal degrees가 아닌 radians 단위로만 전달 받을 수 있다.

  성공시 0을 반환한다. 

  • srcdefn: source(입력) 좌표계

  • dstdefn: destination(출력) 좌표계

  • point_count: 처리할 point의 수 (x, y, z 배열의 크기)

  • point_offset: x, y, z, 배열 내에서 value to value의 step size 

  • x, y, z: 입력으로 전달 된 X, Y, Z 좌표 값(Z는 선택적으로 NULL을 사용할 수 있음)

1
2
int pj_transform( projPJ srcdefn, projPJ dstdefn, long point_count, int point_offset,
                  double *x, double *y, double *z );
cs


pj_init_plus

- 좌표계 정의의 문자열 표현(proj.4인자)을 다른 API함수와 함께 사용하기에 적합한 projPJ객체로 변환한다.

  실패하면 NULL을 반환한다.


1
projPJ pj_init_plus(const char *definition);
cs


pj_free

- pj와 관련된 모든 자원 할당 해제


1
void pj_free( projPJ pj );
cs


pj_is_latlong

- 전달된 좌표계가 geographic(위도, 경도)일 경우 true 반환


1
int pj_is_latlong( projPJ pj);
cs


pj_is_geocent

- 좌표계가 geocentric(지구 중심)일 경우 true 반환

1
int pj_is_geocent( projPJ pj );
cs


RAD_TO_DEG, DEG_TO_RAD

- Radian to Degree, Degree to Radian

   pj_transform 함수는 좌표값을 radian 단위로만 input/output 하기 때문에 단위 변환시 사용 


1
2
#define RAD_TO_DEG    57.295779513082321
#define DEG_TO_RAD   .017453292519943296
cs


 Example

다음은 decimal degrees인 위도와 경도 값을 받아서 WGS84 타원체, WGS84 데이텀으로 UTM 투영하여 UTM51N(EPSG 32651) 좌표 값으로 변환해 주는 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <proj_api.h>
 
main(int argc, char **argv) {
    projPJ pj_merc, pj_latlong;
    double x, y;
 
    if(!(pj_merc = pj_inti_plus("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")) )
        exit(1);
    if(!(pj_latlong = pj_init_plus("+proj=utm +zone=51 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")) )
        exit(1);
    while(scanf("%lf %lf"&x, &y) == 2){
        x *= DEG_TO_RAD;
        y *= DEG_TO_RAD;
        p = pj_transform(pj_latlong, pj_merc, 11&x, &y, NULL );
        printf("%.2f\t%.2f\n", x, y);
    }
    exit(0);
}
cs


+ Recent posts