⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 allproj.cpp

📁 在linux环境下
💻 CPP
字号:
/* allproj.cpp * * Create one MIF file for each projection definition in mapinfow.prj * * * Reads mapinfow.prj in current directory and writes all mif files to  * same dir. * * $Id: allproj.cpp,v 1.1 2001/01/23 21:23:41 daniel Exp $ * * $Log: allproj.cpp,v $ * Revision 1.1  2001/01/23 21:23:41  daniel * Added projection bounds lookup table, called from TABFile::SetProjInfo() * */#include "cpl_string.h"int main(){    FILE *fpIn, *fpOut;    const char *pszLine = NULL;    int iFile = 0;    if ((fpIn = fopen("mapinfow.prj", "r")) == NULL)    {        printf("mapinfow.prj not found.\n");        exit(1);    }    while((pszLine = CPLReadLine(fpIn)) != NULL)    {        char **papszParams = CSLTokenizeStringComplex(pszLine, " ,", TRUE,FALSE);        if (CSLCount(papszParams) >= 3 &&             !EQUALN(papszParams[0], "---", 3))        {            int nProj = 0;            int nDatum= 0;            int nUnitsParamIndex = 0;            if ((fpOut = fopen(CPLSPrintf("tttproj%04.4d.mif", iFile), "w")) == NULL)            {                printf("Failed creating MIF output file!\n");                exit(2);            }            nProj = atoi(papszParams[1]);            nDatum = atoi(papszParams[2]);            if (nProj >= 1000)            {                printf("File tttproj%04.4d.mif uses projection %d ... \n"                       "this case is not handled properly by this version\n",                       iFile, nProj);            }            if (nProj == 1)                nUnitsParamIndex = -1;  // No units for geographic proj.            else if (nProj == 0)            {                nUnitsParamIndex = 2;   // NonEarth... units only.                printf("File tttproj%04.4d.mif is NonEarth\n", iFile);             }            else if (nDatum == 999 || nDatum == 9999)            {                nUnitsParamIndex = -1;  // Custom datum defn= 9999,x,x,x,x,...                                        // Units are in numeric fmt                                        // No conversion required.                printf("File tttproj%04.4d.mif has custom datum\n", iFile);             }            else                nUnitsParamIndex = 3;            fprintf(fpOut, "Version 300\n");            fprintf(fpOut, "Charset \"WindowsLatin1\"\n");            fprintf(fpOut, "Delimiter \",\"\n");            if (nProj == 0)                fprintf(fpOut, "CoordSys Nonearth ");            else                fprintf(fpOut, "CoordSys Earth Projection %d", nProj);            for(int i=2; papszParams[i]!=NULL; i++)            {                if (i == nUnitsParamIndex)                {                    // Units string (except for proj=1: geographic)                    const char *pszUnits = "???";                    switch(atoi(papszParams[i]))                    {                      case 6:                        pszUnits = "cm";                        break;                      case 31:                        pszUnits = "ch";                        break;                      case 3:                        pszUnits = "ft";                        break;                      case 2:                        pszUnits = "in";                        break;                      case 1:                        pszUnits = "km";                        break;                      case 30:                        pszUnits = "li";                        break;                      case 7:                        pszUnits = "m";                        break;                      case 0:                        pszUnits = "mi";                        break;                      case 5:                        pszUnits = "mm";                        break;                      case 9:                        pszUnits = "nmi";                        break;                      case 32:                        pszUnits = "rd";                        break;                      case 8:                        pszUnits = "survey ft";                        break;                      case 4:                        pszUnits = "yd";                        break;                      default:                        printf("WARNING: Unsupported units type: %s in\n%s\n", papszParams[i], pszLine);                        pszUnits = "m";                        break;                    }                    if (nProj == 0)                        fprintf(fpOut, "Units \"%s\" Bounds (-1,-1)(1,1)", pszUnits);                    else                        fprintf(fpOut, ", \"%s\"", pszUnits);                }                else                    fprintf(fpOut, ", %s", papszParams[i]);            }            fprintf(fpOut, "\n");            fprintf(fpOut, "Columns 1\n");            fprintf(fpOut, "  ttt Char(10)\n");            fprintf(fpOut, "Data\n");            fprintf(fpOut, "POINT 0 0\n");            fclose(fpOut);            if ((fpOut = fopen(CPLSPrintf("tttproj%04.4d.mid", iFile++), "w")))            {                fprintf(fpOut, "ttt\n");                fclose(fpOut);            }        }        CSLDestroy(papszParams);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -