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

📄 mifrd.cpp

📁 mapInfo图形文件的读取程序
💻 CPP
字号:
// MifRd.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <cassert>
#include "cfg.h"
#include "global.h"
#include "tool.h"

#pragma warning(disable:4244)

#define CENTER_X 108.942660
#define CENTER_Y 34.260489

typedef struct _place{
	char num;
	char *sz;
	INT x;
	INT y;
}Place;

Point ConvertCrd(double lng,double lat)
{
	Point p;
	p.x=ER*((lng-CENTER_X)*PI/180)*1000;
	p.y=ER*((lat-CENTER_Y)*PI/180)*1000;
	return p;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int i,n,placecnt=0;
	double x,y; //记录mif文件中点的x,y坐标
	FILE *fp1,*fp2;
	char str[256]; //定义存放文件中的文本数据的变量
	Place pl;
	Point pt;

	fp1=fopen("E:\\Projects\\Map\\place.mif","r"); 
	assert(fp1!=NULL);
	fp2=fopen("C:\\place.dat","wb");
	assert(fp2!=NULL);
	fseek(fp2,sizeof(int),SEEK_SET);
	while(!feof(fp1))  //当文件未读完时循环
	{
		fscanf(fp1,"%s",str);  //读取文件fp2,以字符串格式“%s”存入字符串变量str中
		if(strcmp(str,"Text")==0) 
		{ 
			placecnt++;
			fscanf(fp1,"%s",str); 
			n=strlen(str)-2;
			for(i=0;i<n;i++) str[i]=str[i+1];
			str[i+1]='\0';
			n/=2;
			fwrite(&n,sizeof(char),1,fp2);
			fwrite(str,sizeof(char),n,fp2);
			fscanf(fp1,"%lf %lf",&x,&y);
			pt=ConvertCrd(x,y);
			pl.x=pt.x;
			pl.y=pt.y;
			printf("\n%lf,%lf",x,y);
			
			fwrite(&pl,sizeof(Place),1,fp2);
		}
	}
	rewind(fp2);
	fwrite(&placecnt,sizeof(INT),1,fp2);
	fclose(fp1);
	fclose(fp2);
	return 0;
}

⌨️ 快捷键说明

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