반응형
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, 1, 1, &x, &y, NULL ); printf("%.2f\t%.2f\n", x, y); } exit(0); } | cs |
반응형
'IT 이야기 > default' 카테고리의 다른 글
Geometry 공간 연산 (0) | 2018.04.18 |
---|---|
Android Studio 3.1.1 Gradle Warning (0) | 2018.04.18 |
bash 쉘 스크립트에서 파일을 라인 단위로 입력 받기 (0) | 2018.03.12 |
Visual studio 에 PROJ.4 라이브러리 추가하기 (0) | 2018.03.05 |
유고 정보란? (0) | 2018.02.26 |