Advertisement
d10070dd

50m_raw

Sep 14th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.09 KB | None | 0 0
  1. /*数値地図50mメッシュを汎用フォーマットデータに変換するプログラム
  2. ver1.1 m単位で出力 made by Yoshiyuki Yamamoto H16.5.10
  3. 参考文献:数値地図50mメッシュ(標高)について(インターネット)
  4. */
  5.  
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>               /*atoi*/
  9. #include <string.h>
  10.  
  11. int main(int argc,char *argv[])
  12. {
  13.     FILE *fpi,*fpo;            /*ファイルポインタ*/
  14.     int i,j,pos_line,data_m;   /*変数*/
  15.     short data;             /*0.1m単位標高データ変数*/
  16.     char line[6];              /*50mメッシュ標高データ標高値格納用変数*/
  17.    
  18.     if(argc!=3){
  19.         fprintf(stderr,"Usage: %s 50m標高データファイル名.MEM,50m標高データファイル.raw\n",argv[0]);
  20.         exit(1);
  21.     }
  22.     printf("OPEN FILE NAME:%s\n",argv[1]);
  23.  
  24.     if((fpi=fopen(argv[1],"rb"))==NULL){
  25.          fprintf(stderr,"50m標高データファイル名.MEM\n");
  26.          exit(1);
  27.     }
  28.     if((fpo=fopen(argv[2],"wb"))==NULL){
  29.          fprintf(stderr,"50m標高データファイル.raw\n");
  30.          exit(1);
  31.     }
  32.  
  33.     for(i=0;i<=199;i++){
  34.          fseek(fpi,i*1011+1020,SEEK_SET);     /*ヘッダーファイルを飛ばす*/
  35.          pos_line=ftell(fpi);                 /*ヘッダーファイルをきちんと飛ばしているかの確認*/
  36.          printf("calc_pos=%2ld\n",pos_line);  /*カレント位置の表示*/
  37.               for (j=0;j<=199;j++){
  38.                    fseek(fpi,5*j+i*1011+1020,SEEK_SET);
  39.                    fgets(line, 6, fpi);       /*数値地図50mメッシュファイルから標高値を取得する*/
  40.                    data=atoi(line);           /*標高値文字から数値へ変換する*/
  41.                    data_m=(short)data/10;  /*10cm単位をm単位に変換する*/
  42.                    if(data_m==-999)
  43.                    {
  44.                         data_m=0;
  45.                    }
  46.                    else
  47.                    {
  48.                         data_m=data_m;
  49.                    }
  50.                    printf("%d\n",data_m);
  51.                    fwrite(&data_m,sizeof(short),1,fpo); /*m単位標高データの書き込み*/
  52.              }
  53.       }
  54.  
  55. fclose(fpi);
  56. fclose(fpo);
  57.  
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement