数据结构课程设计地图着色问题

数据结构课程设计地图着色问题
数据结构课程设计地图着色问题

课程设计报告

课程设计题目:地图着色问题专业:xxxxxxxxx

班级:xxxxxxxxx

姓名:xxxxxxxxx

一:需求分析:

1)已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使

用的颜色总数最少;

2)将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关系;

3)演示程序以用户和计算机的对话方式进行;

4)最后对结果做出简单分析。

二:概要设计

一:设计思路

把34个省看成34个顶点,从选定的第一个顶点开始着色,先试第一种颜色,如果这个颜色与这个顶点的其他邻接顶点的颜色不重复,则这个顶点就是用这种颜色,程序开始对下一个顶点着色;如果着色重复,则使用下一种颜色重复上面的操作。着色过程就是一个递归的过程,直到所有的顶点都处理完后结束着色。

二:数据结构设计

因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构选用邻接表,考虑用邻接表是因为一般的地图的某一个顶点并不会与很多的顶点相邻接,如果用邻接矩阵会浪费很多的存储空间,所以我选择的邻接表来存储。

其中:

typedef struct ArcNode

{

int x; (表示与当前顶点所表示省份相邻的省份的位置信息)

struct ArcNode *next; (指向下一个弧结点)

}ArcNode; (表示省份之间相邻关系的弧结点)

typedef struct

{

char *name; (顶点所表示的省份的名称)

int color; (省份的颜色,用数字表示不同的颜色)

ArcNode *firstnext; (指向第一个弧)

}shengfen[35];

2

三:详细设计

该程序一共包含三个模版:分别为初始化模版、着色模版和输出模版。

1.初始化模块

声明表示省份的顶点信息、省份之间相邻关系的弧的信息,并为其赋值。

2.着色模块

为各个省份着色。

for(i=1;i<=34;i++)

{

sheng[i].color=0;

}

for(i=1;i<=34;i++)

{

j=1;

p=sheng[i].firstnext;

while(p!=NULL)

{

while(p!=NULL&&j!=sheng[p->x].color)

{

p=p->next;

}

if(p!=NULL)

j++;

}

sheng[i].color=j;

}

3.输出模块

输出各个省份的颜色信息。

for(i=1;i<=34;i++)

{

printf(%s:,sheng[i].name);

printf(%d\n,sheng[i].color);

}

printf(\/n0表示白色,1表示蓝色,2表示红色,3表示绿色,4表示黄色); return 0;

3

四:调试分析

因为我们的程序已知是中国地图,为中国地图染色,所以程序没有输入,只有输出信息。从输出的信息来看,我们最多使用了4种颜色。关于程序测试时存在的问题,我们程序在写完之后,出现了没有错误但是无法输出信息的问题,从网上查找发现是对警告没处理好的原因,随后我们参考了网上的解决方案把问题解决了。关于程序的改进,我们的程序使用的是有向图,但省份之间的相邻关系用无向图就可以表示,这是程序可以改进的地方。其次,我们的程序输出结果描述省

份颜色的是数字,也可以改进后使之输出具体的颜色。

4

五:源程序清单

#include

#include

typedef struct ArcNode{

int x;

struct ArcNode *next;

}ArcNode;

typedef struct{

char *name;

int color;

ArcNode *firstnext;

}shengfen[35];

int main()

{

shengfen sheng;

int i,j;

ArcNode

*p,*hu1,*hu2,*hu3,*hu4,*hu5,*hu6,*hu7,*hu8,*hu9,*hu10,*hu11,*hu12,*hu13,*hu1 4,*hu15,*hu16,*hu17,*hu18;

ArcNode

*hu19,*hu20,*hu21,*hu22,*hu23,*hu24,*hu25,*hu26,*hu27,*hu28,*hu29,*hu30,*hu 31,*hu32,*hu33,*hu34,*hu35;

ArcNode

*hu36,*hu37,*hu38,*hu39,*hu40,*hu41,*hu42,*hu43,*hu44,*hu45,*hu46,*hu47,*hu 48,*hu49,*hu50,*hu51,*hu52;

ArcNode

*hu53,*hu54,*hu55,*hu56,*hu57,*hu58,*hu59,*hu60,*hu61,*hu62,*hu63,*hu64,*hu 65,*hu66;

ArcNode

*hu67,*hu68,*hu69,*hu70,*hu71,*hu72,*hu73,*hu74,*hu75,*hu76,*hu77,*hu78,*hu 79,*hu80,*hu81,*hu82,*hu83,*hu84;

ArcNode

*hu85,*hu86,*hu87,*hu88,*hu89,*hu90,*hu91,*hu92,*hu93,*hu94,*hu95,*hu96,*hu 97,*hu98,*hu99,*hu100;

ArcNode

*hu101,*hu102,*hu103,*hu104,*hu105,*hu106,*hu107,*hu108,*hu109,*hu110,*hu1 11,*hu112,*hu113,*hu114,*hu115,*hu116,*hu117;

ArcNode

*hu118,*hu119,*hu120,*hu121,*hu122,*hu123,*hu124,*hu125,*hu126,*hu127,*hu1 28,*hu129;

ArcNode

*hu130,*hu131,*hu132,*hu133,*hu134,*hu135,*hu136,*hu137,*hu138,*hu139,*hu1 5

40,*hu141,*hu142;

hu1=(ArcNode *)malloc(sizeof(ArcNode));

hu2=(ArcNode *)malloc(sizeof(ArcNode));

hu3=(ArcNode *)malloc(sizeof(ArcNode));

hu4=(ArcNode *)malloc(sizeof(ArcNode));

hu5=(ArcNode *)malloc(sizeof(ArcNode));

hu6=(ArcNode *)malloc(sizeof(ArcNode));

hu7=(ArcNode *)malloc(sizeof(ArcNode));

hu8=(ArcNode *)malloc(sizeof(ArcNode));

hu9=(ArcNode *)malloc(sizeof(ArcNode));

hu10=(ArcNode *)malloc(sizeof(ArcNode));

hu11=(ArcNode *)malloc(sizeof(ArcNode));

hu12=(ArcNode *)malloc(sizeof(ArcNode));

hu13=(ArcNode *)malloc(sizeof(ArcNode));

hu14=(ArcNode *)malloc(sizeof(ArcNode));

hu15=(ArcNode *)malloc(sizeof(ArcNode));

hu16=(ArcNode *)malloc(sizeof(ArcNode));

hu17=(ArcNode *)malloc(sizeof(ArcNode));

hu18=(ArcNode *)malloc(sizeof(ArcNode));

hu19=(ArcNode *)malloc(sizeof(ArcNode));

hu20=(ArcNode *)malloc(sizeof(ArcNode));

hu21=(ArcNode *)malloc(sizeof(ArcNode));

hu22=(ArcNode *)malloc(sizeof(ArcNode));

hu23=(ArcNode *)malloc(sizeof(ArcNode));

hu24=(ArcNode *)malloc(sizeof(ArcNode));

hu25=(ArcNode *)malloc(sizeof(ArcNode));

hu26=(ArcNode *)malloc(sizeof(ArcNode));

hu27=(ArcNode *)malloc(sizeof(ArcNode));

hu28=(ArcNode *)malloc(sizeof(ArcNode));

hu29=(ArcNode *)malloc(sizeof(ArcNode));

hu30=(ArcNode *)malloc(sizeof(ArcNode));

hu31=(ArcNode *)malloc(sizeof(ArcNode));

hu32=(ArcNode *)malloc(sizeof(ArcNode));

hu33=(ArcNode *)malloc(sizeof(ArcNode));

hu34=(ArcNode *)malloc(sizeof(ArcNode));

hu36=(ArcNode *)malloc(sizeof(ArcNode)); hu37=(ArcNode *)malloc(sizeof(ArcNode)); hu38=(ArcNode *)malloc(sizeof(ArcNode)); hu39=(ArcNode *)malloc(sizeof(ArcNode)); hu40=(ArcNode *)malloc(sizeof(ArcNode)); hu41=(ArcNode *)malloc(sizeof(ArcNode)); hu42=(ArcNode *)malloc(sizeof(ArcNode)); hu43=(ArcNode *)malloc(sizeof(ArcNode)); 6

hu44=(ArcNode *)malloc(sizeof(ArcNode)); hu45=(ArcNode *)malloc(sizeof(ArcNode)); hu46=(ArcNode *)malloc(sizeof(ArcNode)); hu47=(ArcNode *)malloc(sizeof(ArcNode)); hu48=(ArcNode *)malloc(sizeof(ArcNode)); hu49=(ArcNode *)malloc(sizeof(ArcNode)); hu50=(ArcNode *)malloc(sizeof(ArcNode)); hu51=(ArcNode *)malloc(sizeof(ArcNode)); hu52=(ArcNode *)malloc(sizeof(ArcNode)); hu53=(ArcNode *)malloc(sizeof(ArcNode)); hu54=(ArcNode *)malloc(sizeof(ArcNode)); hu55=(ArcNode *)malloc(sizeof(ArcNode)); hu56=(ArcNode *)malloc(sizeof(ArcNode)); hu57=(ArcNode *)malloc(sizeof(ArcNode)); hu58=(ArcNode *)malloc(sizeof(ArcNode)); hu59=(ArcNode *)malloc(sizeof(ArcNode)); hu60=(ArcNode *)malloc(sizeof(ArcNode)); hu61=(ArcNode *)malloc(sizeof(ArcNode)); hu62=(ArcNode *)malloc(sizeof(ArcNode)); hu63=(ArcNode *)malloc(sizeof(ArcNode)); hu64=(ArcNode *)malloc(sizeof(ArcNode)); hu65=(ArcNode *)malloc(sizeof(ArcNode)); hu66=(ArcNode *)malloc(sizeof(ArcNode)); hu67=(ArcNode *)malloc(sizeof(ArcNode)); hu68=(ArcNode *)malloc(sizeof(ArcNode)); hu69=(ArcNode *)malloc(sizeof(ArcNode)); hu70=(ArcNode *)malloc(sizeof(ArcNode)); hu71=(ArcNode *)malloc(sizeof(ArcNode)); hu72=(ArcNode *)malloc(sizeof(ArcNode)); hu73=(ArcNode *)malloc(sizeof(ArcNode)); hu74=(ArcNode *)malloc(sizeof(ArcNode)); hu75=(ArcNode *)malloc(sizeof(ArcNode)); hu76=(ArcNode *)malloc(sizeof(ArcNode));

hu78=(ArcNode *)malloc(sizeof(ArcNode)); hu79=(ArcNode *)malloc(sizeof(ArcNode)); hu80=(ArcNode *)malloc(sizeof(ArcNode)); hu81=(ArcNode *)malloc(sizeof(ArcNode)); hu82=(ArcNode *)malloc(sizeof(ArcNode)); hu83=(ArcNode *)malloc(sizeof(ArcNode)); hu84=(ArcNode *)malloc(sizeof(ArcNode)); hu85=(ArcNode *)malloc(sizeof(ArcNode)); hu86=(ArcNode *)malloc(sizeof(ArcNode)); hu87=(ArcNode *)malloc(sizeof(ArcNode)); 7

hu88=(ArcNode *)malloc(sizeof(ArcNode)); hu89=(ArcNode *)malloc(sizeof(ArcNode)); hu90=(ArcNode *)malloc(sizeof(ArcNode)); hu91=(ArcNode *)malloc(sizeof(ArcNode)); hu92=(ArcNode *)malloc(sizeof(ArcNode)); hu93=(ArcNode *)malloc(sizeof(ArcNode)); hu94=(ArcNode *)malloc(sizeof(ArcNode)); hu95=(ArcNode *)malloc(sizeof(ArcNode)); hu96=(ArcNode *)malloc(sizeof(ArcNode)); hu97=(ArcNode *)malloc(sizeof(ArcNode)); hu98=(ArcNode *)malloc(sizeof(ArcNode)); hu99=(ArcNode *)malloc(sizeof(ArcNode)); hu100=(ArcNode *)malloc(sizeof(ArcNode)); hu101=(ArcNode *)malloc(sizeof(ArcNode)); hu102=(ArcNode *)malloc(sizeof(ArcNode)); hu103=(ArcNode *)malloc(sizeof(ArcNode)); hu104=(ArcNode *)malloc(sizeof(ArcNode)); hu105=(ArcNode *)malloc(sizeof(ArcNode)); hu106=(ArcNode *)malloc(sizeof(ArcNode)); hu107=(ArcNode *)malloc(sizeof(ArcNode)); hu108=(ArcNode *)malloc(sizeof(ArcNode)); hu109=(ArcNode *)malloc(sizeof(ArcNode)); hu110=(ArcNode *)malloc(sizeof(ArcNode)); hu111=(ArcNode *)malloc(sizeof(ArcNode)); hu112=(ArcNode *)malloc(sizeof(ArcNode)); hu113=(ArcNode *)malloc(sizeof(ArcNode)); hu114=(ArcNode *)malloc(sizeof(ArcNode)); hu115=(ArcNode *)malloc(sizeof(ArcNode)); hu116=(ArcNode *)malloc(sizeof(ArcNode)); hu117=(ArcNode *)malloc(sizeof(ArcNode)); hu118=(ArcNode *)malloc(sizeof(ArcNode));

地图学课程设计说明书

佛山科学技术学院 《地图学课程设计》 说明书 专业自然地理与资源环境姓名薛春惠成绩 班级 13自然地理与资源环境学号2013804142 日期 2015/6/27

目录 一、地图内容 二、设计步骤 收集资料 绘制地图 三、城市状况 四、南海旅游景点 六、存在的不足 七、专题图 一、地图内容

二、设计步骤 1 收集资料 收集各种地图、影像、数据和文字资料,分析汇总资料,选取有效部分加工使用,分别用到《中国自然地理地图集》、《广东省交通地图》、《佛山市旅游地图》、《佛山市南海区地图》、1:10万佛山市地形图、佛山市卫星影像等。 2、绘制地图 (1)投影网格与比例尺:依据地图内容、用途选用等比例尺底图,注意 图廓的配准、注记与经纬网密度删减。 (2)水系:选用河流、湖泊、水库、海岸线等,适当概括。 (3)居民点:居民点分级、概括,地名分级注记。 (4)边界线:视专题地图需要选取(国、省、市、县、镇边界),线性符 号选用与设计。 (5)交通线:铁路(车站)、国道、高速公路和水运航线(码头) 三、城市状况 3.1 地理位置

3.2 地形地貌 3.3 行政规划 3.4 人口概况 3.5 矿产资源 3.6 水资源和水文情况 3.7 商业广场情况 四、南海旅游景点 西樵山 西樵山风景名胜区位于广东省南海市西南部,面积约十四平方公里,西樵山有七十二峰,以山青,水奇著称,享有“岭南佳境”之盛名。1988年被定为国家重点风景名胜区。 西樵山是七八千万年前由海底火山喷发岩浆,岩状,火山灰后形成的死火山,山体外陡内平,状若莲衣复合,大秤峰居群峰之首,九龙岩,冬菇石,石燕石等峰岩形态万千。西樵山岩石节理发育,裂隙纵横,富有潜水,形成多处水景,有232口泉眼,28处瀑布。“欲览西樵胜,应先访白云”。位于西樵山西北部的白云洞为——马蹄形山谷,它兼收岩泉飞瀑之美,有“胜甲西樵”之称。三峰之间有两飞泉左右迂回而下,称“大云泉”、“小云泉”。泉水折叠汇成了三个湖,即所谓“白云飞下过三湖”:上为“应潮湖”,中为“鉴湖”,下为“会龙湖”。现在其下又增辟“白云”、“人工”两湖,形成五湖飞瀑交辉,亭台山水相映的奇泉。洞山腰的云泉仙馆原是明代的玉楼书院,云泉仙馆西的“三湖书院”门额为林则徐所题,康有为青年时代曾在此面壁苦读三年,山西南部有西天湖和左垂虹瀑,右垂虹瀑等景;山东南部有清暑岩,云岩飞瀑等景,山东北部有全山最大的瀑布玉岩飞瀑,以及玉岩,仙人石,东天湖等景。 早在新、旧石器时代,西樵山就有人类活动,留下许多历史遗迹,史学界称为“西樵山文化”。明代中叶成为南国理学名山,至今还保存着白云古寺,以及大量摩崖石刻等文物古迹。 西樵山碧玉洞 碧玉洞为峰间峡谷,两边怪石嶙峋、谷底狭径崎岖、洞中有玉岩珠瀑,听玉石室、遇仙桥,垂云石、东天湖等景点。其中,玉岩珠瀑为西樵山最大瀑布。 其中“西樵云瀑”在清朝已列为“羊城八景”之一,君行西樵,宛若画中游历,秀甲西樵的白云洞景区,融二十四景于一体,而其间古代建筑掩映,错落有致,碧玉洞,

C语言地图着色

课程设计 地图着色 课程设计名称:课程设计 专业班级: 学生姓名: 学号: 指导教师: 课程设计时间:

计算机专业课程设计任务书 学生姓名专业班级学号题目地图着色 课题性质课题来源 指导教师同组姓名 主要内容学习掌握并熟练运用C语言进行程序设计; 针对具体应用问题,选择、设计和实现合适的抽象数据类型;进行简单的需求分析,给出设计方案。 任务要求综合运用和融化所学理论知识,提高分析和解决实际问题的能力,达到培养良好程序设计能力和习惯的目的,为开发满足问题要求的小型应用软件奠定基础,达到软件工程的综合性基础训练的目的。 完成需求分析报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。 参考文献《数据结构(C语言版)》严蔚敏清华大学出版社《C语言程序设计》(第三版)谭浩强清华大学出版社

指导教师签字: 审查意见 教研室主任签字: 2014年6月15 日

目录 1 需求分析 (4) 2 概要设计 (4) 3详细设计 (5) 4 运行环境 (6) 5开发环境 (6) 6 程序设计.............................................................................................6~9 7 调试分析........................................................................................9~10 8 测试结果 (10) 9参考文献 (11) 10心得体会 (11) 11成绩评价表 (12)

地图学课程设计报告

地图学课程设计报告 学生姓名 序号 班级地信 指导老师 日期 2013 .6 .25

目录 一、前言 (1) 二、基于ArcMap的全国人口分布、构成及演变分析 (1) (一)ArcMap中专题现象的表示方法 (1) (二)反映全国人口分布、构成及演变的专题图表示方法的选择 (1) (三)1990年全国的人口分布与构成分析 (1) (四)从1982年到1990年全国人口的演变趋势分析 (5) 三、武汉市电子地图设计与编绘 (8) (一)总体方案 (8) (二)地图分层 (8) (三)地图数字化与图形编辑 (9) (四)表属性辑 (10) (五)图面配置 (10) (六)图幅关联及媒体链接........................................................................................ (10) (七)制作完成后截图 (11) 四、收获与建议 (13) 附件

一、前言 本次课程设计是在学完《地图学》课程后开展的实践教学。目的是通过课程 设计,巩固课堂所学书本知识,进一步理解和掌握各类电子地图的编绘方法,学会运用常用GIS软件开展机助制图的方法与步骤,并能根据具体的任务独立开展地图的设计与编绘,对专题地图进行专题分析,为GIS软件开发中的地理信息可视化打下基础。 通过对1982和1990年全国人口状况专题地图的制作,熟悉专题地图的制作与表示方法;通过武汉市电子地图的制作,进一步熟悉纸质地图的矢量化与地图的多媒体化即制作电子地图。 二、基于ArcGIS的全国人口分布、构成及演变分析 (一)MapInfo中专题现象的表示方法 1、点值法——用点状符号表示数量的分布。 2、等值线法——用线状符号表示定量的分布,用于表示连续分布的事物的数量变化特征。 3、范围法——用于用面状符号表示不连续分布的面状事物。 4、质底法——用于用面状符号表示连续分布的事物的定性特征。 5、量底法(分级统计图法)——用于用面状符号表示连续分布的事物的数量特征。 6、定域统计图法(分区统计图法)——用点状符号表示面状分布事物的数量特征。着重表示不同区域单元同一事物的数量对比,也可以兼顾同一区域内组成某一事物的各组分间的数量对比。 7、定位统计图法——用点状符号表示面状分布事物的数量特征。着重表示同一区域单元内某一事物的各组分间的数量对比,也可以兼顾不同区域单元同一事物的数量对比。 (二)反映全国人口分布、构成及演变的专题图表示方法的选择在反映全国人口分布时,用了点值法表示,反映出了各省的人口密度分布,用柱状图表示了全国各年龄段的人口比例,用饼状图表示了男女比例,从82年 到90年人口的增长趋势用了柱状图表示。 (三)1990年全国的人口分布与构成分析

地图着色问题

一、需求分析 1、问题描述 现在有一张地图,为了便于区别各个地图上的板块,地图上相 邻的颜色块应该是不同的颜色。现在的任务是给定一张地图,要对其进行着色,相邻的板块之间的颜色不能相同,输出最后 的着色的方案。 2、基本分析 功能一:为了程序的灵活性,可以让程序自由建立图 功能二:为建好的图进行着色。 3、输入输出 输入一张图的信息,正确输入边数和顶点数,输入边的关系(两 个顶点之间的),颜色只要四种,分别用数字1到4表示。 输出时根据每个顶点不同的标号输出着色的结果。 二、概要设计 1、设计思路 给定四种颜色,从选定的第一个顶点开始着色,先是第一种颜 色,如果这个颜色与这个顶点的其他邻接顶点颜色不重复,则 这个顶点可以使用此颜色,程序开始对下一个顶点着色;如果 着色重复,则使用下一种颜色重复上述过程。着色过程就是一 个递归的过程,直到所有的顶点都有着色后结束着色过程

结束

2、数据结构设计: 因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构是邻接矩阵,考虑用邻接表是因为一般的地图的某一 个顶点并不会与很多的顶点邻接,如果用邻接矩阵就能符合实 际的需求,虽然占用稍大的空间,但是增强了程序的实际使用 性。 抽象数据类型定义如下: 数据对象是点和边(vex&adj) 数据关系是颜色分布以及边的相邻的两个顶点 基本操作: CreatGrouph(&G); 创建一张需要操作的无向图G Destroy(Graph &G); 初始条件:无向图G存在 操作结果:销毁图G LocateVex(&G,i) 初始条件:无向图G存在 操作结果:若在图G中存在顶点i,则返回该顶点在图中的位置,否则返回其他信息 Trycolor(current &G,store[]) 初始条件:无向图G存在,在图中有第current个顶点

地理信息系统课程设计详细过程

课程设计说明书(地图编绘与课程设计)

年月日

地图学课程设计教学大纲 一、课程设计题目 基于的专题地图设计与编制。 二、课程设计目的 本设计是在完成地图学的课堂教学后进行的,旨在加深学生对专题地图的认识和理解,包括专题地图的概念、特征、类型、编辑设计、表现方法以及图例的设计和图面配置,巩固课堂教学的内容。 是中地数码集团推出的专业矢量绘图软件,是中国具有完全自主知识版权的地理信息系统软件,是全球唯一的搭建式数据中心集成开发平台,实现遥感处理与完全融合,支持空中、地上、地表、地下全空间真三维一体化的开发平台。在绘图、设计制作、编辑合成、输入输出和网页制作等方面功能强大,包括海量无缝图库管理、空间数据库管理、空间分析工具、网络分析功能、多源图像分析与处理等。学生应了解绘图环境,熟练掌握矢量成图步骤方法,会用进行符号设计。 是开发,本次设计主要应用信息编辑与分析功能,利用的桌面功能来完成设计,完成矢量数据的属性字段添加,并对其进行分析与编辑。是一个集成了众多高级应用的软件套件,它包含了一套带有用户界面组件的桌面应用(例如,,,以及)。具有三种功能级别――,,和)。 三、课程设计要求 通过上机操作,要求学生在和软件的基础上根据底图进行矢量化、地理数据的输入、编辑、存储和输出方法。具体要求学生做到: 1 专题地图的编制按照专题地图的表现方法进行,利用相应的符号表示各种自然或人文现象;专题地图的相关基础资料见附件; 2 编辑的图件将就美观、大方,可以适度张扬个性; 3 学会编写课程设计报告。课程设计报告要求格式规范,图文并茂,5000字左右; 课程设计报告内容包括: (1)课程设计的目的和意义; (2)专题地图的背景资料(包括自然地理、地质、社会经济等); (3)专题地图的编制过程; (4)专题地图的设计与优化过程;

地图着色课程设计

算法分析与设计课程设计说明书 地图着色 学院:计算机与控制工程学院 专业:计算机科学与技术 学生姓名:xxxxx学号:成绩 学生姓名:xxxxx 学号:成绩 指导教师:

内容提要 此题为地图着色问题,由地图着色问题很容易想到图的着色问题,因此可以把地图抽象为无向图来解决地图的着色问题。对地图的抽象相当于对图的抽象,即以邻接矩阵来实现地图的区域相邻的描绘,而对地图的区域数即以图的顶点数来描绘。设计说明书的内容包括需求分析,概要设计,详细设计,代码实现,后期测试等内容,需求分析是对此问题所需要实现的功能的介绍,概要设计是对所需要实现功能的模块划分,以及初步的实现思想,详细设计通过编写大致的代码来实现功能,代码实现则是具体的解决问题,解决此问题设计了两个算法,贪心,回溯,在程序的测试阶段,回溯算法对同一个问题的解决速率高于贪心算法,但是结果都是以最少的颜色数来染色。 课题实现的环境是在window环境下的eclipse中,通过在其中输入地图的区域数,图的连接情况,来选择相应的算法来实现染色,本次课题所采用的数据结构主要是二维数组来抽象图的邻接矩阵。

目录 1引言(或绪论) (1) 2需求分析 (2) 2.1 问题分析 (2) 2.3问题解决 (2) 2.3 运行环境及开发工具 (3) 2.4功能需求 (3) 2.4.1 地图的抽象及输入 (3) 2.4.2 地图着色的算法设计 (3) 2.4.3 界面设计 (3) 2.4.4 输出设计 (3) 2.5任务分配 (4) 3概要设计 (4) 3.1 数据定义 (4) 3.2 功能模块定义 (4) 3.2.1 地图的抽象输入模块 (4) 3.2.2 输出模块 (4) 3.2.3 地图染色模块 (4) 3.2.4 界面设计模块 (5) 3.2.5 主模块 (5) 3.3 程序流程图 (6) 4 详细设计 (7) 4.1 地图输入模块 (7) 4.1.1 数据类型 (7) 4.1.2 具体实现 (7) 4.2 界面设计模块 (7) 4.2.1 数据类型 (7) 4.2.2 具体实现 (7) 4.3 算法设计模块 (9) 4.3.1 回溯法过程 (9)

地图学课程设计心得体会

地图学课程设计心得体会 通过此次课程设计,使我更加扎实的掌握了有关地图制作的基本知识,而且掌握普通地图和专题地图的编制方法与过程、制图综合的理论与技术熟使用悉用MapGIS、ArcGIS等制图软件以及结合运用 Photoshop进行地图编制的全过程及基本方法,了解MapGIS、ArcGIS在制图领域中的应用。巩固课堂上所学的地图编绘的基本原理、综合理论和方法,从而提高我们的专业水平和动手能力。 本次课程设计在制图过程中然遇到了不少的问题,但经过一次又一次的思考,一次又一次的实践,并通过同学间互相帮助以及向各师兄的询问,最终完成了省市普通地图和专题地图的制作。在制图过程中也暴露出了自己在这方面的知识欠缺和对软件不不熟悉。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 过而能改,善莫大焉。在课程设计过程中,我们不断发现错误和不足,不断改正,不断领悟,不断获取。在制图过程中,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中学习到了曾经不知道不懂的东西。所以在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的去探究,然后一一进行解决,只有这样,才能很好的完成想做的事,才能在今后的道路上劈荆斩棘,收获喜悦,收获成功! 课程设计诚然是一门专业课,使我很多专业知识以及专业技能上的提升,同时又是一门辩思课,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了专业软件件的运用;掌握了地图矢量化的不同方法,地图匹配,属性编辑,以及如何提高地图质量,地图美观,也掌握了制图方法和技术,通过查询和收集资料,也懂得了很多的专业术语和知识。 我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这也是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 回顾起此课程设计,感慨颇多,从理论到实践,在这几天的时间里,可以说得是苦多于甜,累,但是可以学到很多很多的东西,不仅巩固了以前所学过的知识,也学到了很多在书本上所没有学到过的知识。在设计的过程中遇到问题也颇多,但可喜的是最终都得到了解决。 此次课程设计给自己最大的感触是,不管什么样的软件,懂的也好不懂的也好,都要动手去用,只有自己操作了,才会真正明白其中的用处,其次是,在遇到困难的时候,不要总是一个人在那捣鼓,同学间应该互相的帮助,有时候向别人学习,会比自己一个人在哪儿毫无头绪的摸索更好。 此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

数据结构课程设计报告地图着色问题

课程设计报告 课程设计题目:地图着色问题 专业:xxxxxxxxx 班级:xxxxxxxxx 姓名:xxxxxxxxx

一:需求分析: 1)已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使 用的颜色总数最少; 2)将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关系; 3)演示程序以用户和计算机的对话方式进行; 4)最后对结果做出简单分析。 二:概要设计 一:设计思路 把34个省看成34个顶点,从选定的第一个顶点开始着色,先试第一种颜色,如果这个颜色与这个顶点的其他邻接顶点的颜色不重复,则这个顶点就是用这种颜色,程序开始对下一个顶点着色;如果着色重复,则使用下一种颜色重复上面的操作。着色过程就是一个递归的过程,直到所有的顶点都处理完后结束着色。 二:数据结构设计 因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构选用邻接表,考虑用邻接表是因为一般的地图的某一个顶点并不会与很多的顶点相邻接,如果用邻接矩阵会浪费很多的存储空间,所以我选择的邻接表来存储。 其中: typedef struct ArcNode { int x; (表示与当前顶点所表示省份相邻的省份的位置信息) struct ArcNode *next; (指向下一个弧结点) }ArcNode; (表示省份之间相邻关系的弧结点) typedef struct { char *name; (顶点所表示的省份的名称) int color; (省份的颜色,用数字表示不同的颜色) ArcNode *firstnext; (指向第一个弧) }shengfen[35];

《地图学课程设计》大纲

《地图学课程设计》大纲 一、目的、内容和要求 1、目的 通过本项课程设计,掌握地理底图和专题地图编制的基本原理与方法,能够熟练运用制图软件编绘地图,提高数据资料收集、图形化设计和信息综合表达的能力。 2、内容 具体内容包括: 2.1地理底图的编制: (1)投影网格与比例尺:依据地图内容、用途选用等比例尺底图,注意图廓的配准、 注记与经纬网密度删减。 (2)水系:选用河流、湖泊、水库、海岸线等,适当概括。 (3)居民点:居民点分级、概括,地名分级注记。 (4)边界线:视专题地图需要选取(国、省、市、县、镇边界),线性符号选用与 设计。 (5)交通线:铁路(车站)、国道、高速公路和水运航线(码头) (6)地貌信息:根据专题需要,选取少量等高线。 2.2专题地图设计 (7)收集专题信息相关的图件、文本、数据和参考资料。 (8)资料加工处理,数据统计分析,图象资料运用。 (9)专题内容表示:符号设计与表现形式,图例系统设计。 (10)地图概括:地图内容的选择,点、线、面要素的分类、简化、夸张与合并。 (11)图面内容设计:地图幅面上图名、图例、主图、附图、图表、比例尺、文字等 位置安排;图廓、色彩、网纹配置、版权说明等。 2.3 编写专题地图说明书 (12)资料与数据来源,分析方法与成图过程。 (13)专题信息导读:专业信息时空分布规律、成因与对策分析。 (14)存在问题分析。 2.4 地图专题内容 赣州市地理地图(行政分区地图)基础上(网上搜索),编绘旅游专题、经济专题、人口专题、交通专题、城市专题、环境专题等。 3、要求 学生地图课程设计时按地图出版设计要求进行,每人按时上交一份装订成册的专题地图(二分之一开本787*960,彩色打印)及其说明书,并备份存档电子文本和图象、图形格式文件一套。

数据结构课程设计地图着色问题

课程设计报告 课程设计题目:地图着色问题专业:xxxxxxxxx 班级:xxxxxxxxx 姓名:xxxxxxxxx

一:需求分析: 1)已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使 用的颜色总数最少; 2)将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关系; 3)演示程序以用户和计算机的对话方式进行; 4)最后对结果做出简单分析。 二:概要设计 一:设计思路 把34个省看成34个顶点,从选定的第一个顶点开始着色,先试第一种颜色,如果这个颜色与这个顶点的其他邻接顶点的颜色不重复,则这个顶点就是用这种颜色,程序开始对下一个顶点着色;如果着色重复,则使用下一种颜色重复上面的操作。着色过程就是一个递归的过程,直到所有的顶点都处理完后结束着色。 二:数据结构设计 因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构选用邻接表,考虑用邻接表是因为一般的地图的某一个顶点并不会与很多的顶点相邻接,如果用邻接矩阵会浪费很多的存储空间,所以我选择的邻接表来存储。 其中: typedef struct ArcNode { int x; (表示与当前顶点所表示省份相邻的省份的位置信息) struct ArcNode *next; (指向下一个弧结点) }ArcNode; (表示省份之间相邻关系的弧结点) typedef struct { char *name; (顶点所表示的省份的名称) int color; (省份的颜色,用数字表示不同的颜色) ArcNode *firstnext; (指向第一个弧) }shengfen[35]; 2 三:详细设计 该程序一共包含三个模版:分别为初始化模版、着色模版和输出模版。 1.初始化模块

地图学课程论文

地图学学习概括 一.地图学 地图学是研究地图的理论、编制技术与应用方法的科学,是一门研究以地图图形反映与揭示各种自然和社会现象空间分布、相互联系及动态变化的科学、技术与艺术相结合的科学。现阶段对地图学的定义是:研究地图信息的表达、处理和传输的理论和方法,以地理信息可视化为核心,探讨地图的制作技术和使用方法的学科。 地图学的内容非常丰富,要想研究透彻不是易事,在这里我们就地图学的研究对象、研究内容、研究分支进行相关介绍。 1.地图学的研究对象是:地球表层各种自然与社会现象的结构与特性的空间信息,包括宏观与微观、具体与抽象、现实与历史的所有空间信息。涉及地球科学、生物科学、环境科学的许多领域,而且随着人类认识范围的扩大,地图学的研究对象正向外层空间和地壳深部延伸。研究内容。 2.地图学的研究内容是:探讨以地图作为空间信息的载体与传输工具,依据数学法则,按照比例建立空间模型,运用符号系统和最佳感受效果表达人类对地理环境的科学认识;综合分析自然与社会现象的空间分布、内在联系及其时间变化;研究地图编制与应用原理、方法与工艺、技术。 3.地图学的结构及学科分支,地图学由地图理论、制图技术和地图应用三个分支学科组成。

二.地图制作的理论基础 地球椭球面是不可展的曲面,用机械的方法将它展开呈平面,必然会使曲面产生褶皱、拉伸或断裂等无规律的变形,难以在这样的平面上绘制科学、准确的地图。在这里我们可以采取一种透视的方法将球面投射在平面上,即地图投影。地图投影的讨论对象就是研究将地球表面展开成平面的理论方法,实现由球面到平面的转换。采用不同的投影设计进过解析计算可以得出不同的经纬网格,从而构成新编地图的控制框架。这里主要介绍两种投影方法: 1. 墨卡托投影(横轴等角割圆柱投影) 1569年,墨卡托设计正轴等角圆柱投影,第一次把东、西半球已知范围展现在一幅地图上。这种投影的地图能为航海者进行直线导航,为航海图所普遍采用,被命名为“墨卡托投影”,以后还出版了以他名字命名的地图集。随着航空和航天的需要,多种横轴和斜轴的墨卡托投影相继出现。墨卡托的工作被誉为16世纪欧洲地图学的里程碑,他的地图集开创了世界全图的新投影,反映了当时欧洲地图发展的特点。 (1)等角航线:是地球表面上与经线相交成相同角度的曲线。在地球表面上除经线和纬线以外的等角航线,都是以极点为渐近点的螺旋曲线。等角航线在图上表现为直线。这一特性对航海具有很重要的意义。

地图设计说明书

地图设计说明书

黑龙江科技大学 《地图学》 课程设计说明书 题目:哈尔滨市 9月降水分布图院(系):矿业工程学院 班级:城乡 12-1 姓名:周春燕 学号: 024864 指导教师:王俊杰

地图学课程设计说明书 一、资料与数据的来源 1、资料的来源 资料主要来源于网上查找的资料数据、这幅底图本身含有的内容和一些关于专题地图的资料,资料和数据是比较综合整理后。该图的比例尺为1:20万,主要突出的区域是哈尔滨市,符合规定要求。 2、数据的来源 ①首先根据上课时老师的指导找一些关于专题地图的资料数据,比如哈尔滨市的旅游地图,人口分布图等。在这过程中我确定了自己的专题地图的内容,而且结合了课程设计的需要,绘制了一幅哈尔滨市9月份降水量分布图。 ②在哈尔滨市地图的基础上,应用了原有的资料如:边界线、县级的名称。 ③根据自己设定的以哈尔滨市9月降水量分布为专题之后,经过对资料的收集和分析,并巧妙地借用了网络的优势,找到了准确可靠的哈尔滨市 9月降水量分布数据和布局状况。 ④在图书馆里面查阅相关资料,参考别人的专题地图的制作方法,和专题的布局所选用的一些图例进行参考和借鉴。 因此综合上述的资料和数据的来源主要为收集各种地图、影像、数据和文字资料,分析汇总资料,选取有效部分加工使用,利用画图软件最后绘制出专题地图。

二、分析方法与成图过程 1、专题的分析方法 专题地图的类型很多,其内容都是由地理基础和专题要素组成的。专题地图按照地图主题的要求,一般突出反映一种或几种主体要素,其中作为主题的要素表示的很详细,其它的要素则围绕表示主题的需要,作为地理基础概略表示。当前专题地图的表示方法一般有:定点符号法,线状符号法,质底法,等直线法,定位图表法,范围法,点数法,统计图表法动态线法。用到了质底法,分区统计图表法。我运用Mapgis软件,选择质底法、分区与分级统计图法绘制了哈尔滨市 9月降水量分布专题地图。 Mapgis软件的“图面配置”是经过一个叫做“版面设计”的过程完成的。版面设计能够将Mapgis项目中除了自身之外的所有组件(由视图,图表,表格,脚本等),以及一般专题地图的必备要素:图名,图例,比例尺,等,经过整饰而组合成内容充实,表现方式多样,易于编辑修改与动态更新能力强的专题地图。 2、专题地图的成图过程 (1)地理底图的编制 ①比例尺:依据地图内容、用途选用等比例尺底图。由于是对整个哈尔滨市进行降水分布的专题地图的绘画,因此应该选用比例尺较小的比例尺,因此我选用了1:20万的比例尺。 ②边界线:根据专题地图需要选取市、县、镇边界,线性符号选用与设计。对边界进行勾勒,使得线转弧段利于对区的颜色填充。

地图学课程设计教学挂图

地图学课程设计报告 学院 班级 姓名 学号 指导教师

目录 目录 .............................................................................................................................. - 1 - 引言 .............................................................................................................................. - 2 - 1.实习目的 ................................................................................................................... - 3 - 2. 实习资料 ................................................................................................................. - 3 - 3实习步骤 ................................................................................................................... - 4 - 3.1点值图绘制 .................................................................................................... - 4 - 3.2 工程输出 ..................................................................................................... - 5 - 3.2.2 光栅输出生成JPG文件.................................................................... - 6 - 4.实习感想 ................................................................................................................... - 6 - 参考文献 ...................................................................................................................... - 6 -

数据结构图的存储结构及

数据结构图的存储结构及基本操作

1.实验目的 通过上机实验进一步掌握图的存储结构及基本操作的实现。 2.实验内容与要求 要求: ⑴能根据输入的顶点、边/弧的信息建立图; ⑵实现图中顶点、边/弧的插入、删除; ⑶实现对该图的深度优先遍历; ⑷实现对该图的广度优先遍历。 备注:单号基于邻接矩阵,双号基于邻接表存储结构实现上述操作。 3.数据结构设计 逻辑结构:图状结构 存储结构:顺序存储结构、链式存储结构 4.算法设计 #include #include #include #define MAX_VERTEX_NU M 20 typedef struct ArcNode { int adjvex; struct ArcNode *nextarc;

}ArcNode; typedef struct VNode { char data[2]; //顶点就设置和书上V1等等一样吧 ArcNode *firstarc; }VNode,AdjList[MAX _VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum,arcnum; }ALGraph; typedef struct { int data[MAX_VERTEX_ NUM+10]; int front; int rear; }queue; int visited[MAX_VERTE X_NUM]; queue q; int main() { ALGraph G; int CreateUDG(ALGraph &G); int DeleteUDG(ALGraph &G); int InsertUDG(ALGraph &G); void BFSTraverse(ALGrap h G, int (*Visit)(ALGraph

地图学课程设计 1

地图学课程设计 姓名: 学号: 专业:地理信息科学 班级:2013 学期:2014-2015第一学期 指导教师:

作业一:定位点状图 实验目的:理解定位点状图的概念和相关过程 实验材料:郑州市土壤有机质含量图(.jpeg)和相关数据 实验步骤: 1、打开Arcmap并添加数据。 2、在tuyd点击右键->连接和关联->关联,填充关联数据,如下图 3、双击tuyd图层,在符号系统下设置 4、添加标题、比例尺、指南针、姓名、学号、修改图例。

实验结果: 实习感想: 1、初步学习专题地图的制作,并有选择性的删除和保留图形要素。 1、熟悉工具条中删减及合并工具的使用。 2、熟练地图的制作和修改,注意地图布局的合理和美观。 作业二:人口分布的点值图设计 实验目的:理解点值图概念,熟悉其制作原理和步骤。

实验材料:山明县各乡区域和各乡人口(word)数据 实验步骤: 1、打开ArcCatalog数据管理工作空间,右击选择New—>Shapefile,打开Creat New Shapefile 对话框,Feature Type中选择Point,点击OK确定,新建一个文件, 然后关闭。 2、打开一个空的Arcmap空间,添加山明县政区图。 3、右击zhengqu—>Joins and Relate—>Join…,打开Join Data对话框(如下图): 4、右击Layers—>Add Data..添加,山明县人口数据表(如下图): 其中沈井乡的土地面积最小,但是人口却很多,点值密度一定做大,所以以沈井乡的点值分布为对照。当每点代表150人时,沈井乡点数为n=2583/150=17.22,大约17个点,在政区内分布比较均匀,而且没有覆盖现象,故以此比例进行点值分布,将其他各乡的人口数分别进行计算,求出应该点的点数。 5点击,激活矢量文件编辑工具,选择刚才新建的点图层,按照第三步计算的数值,在各个乡内绘出相应的点数,注意点的分布,将点的大小设置的合理一些,这样利于图形的输出。 6单击布局窗口,添加主题、比例尺、指北针、图例及个人信息,输出图形。

两种实用地图着色算法的比较与实现

两种实用地图着色算法的比较与实现 摘要:地图着色算法的研究是为了是把相邻的区域用尽可能少的颜色区分开。四色猜想是从理论上指出地图着色所需最小着色数,但考虑到实际应用中速度因素,只需采用尽可能优化的地图着色方案,本文中对两种实用算法进行了比较和实现。 关键字:四色猜想;地图着色;DFS 引言 “四色猜想”虽然至今尚未得到一个严格的数学证明,但人们似乎已经默认这一著名猜想是对的,即任意一个平图都可以用至多四种不同的颜色对其平面区域进行正常着色。地图着色的应用研究是为了是把相邻的区域用尽可能少的颜色区分开,而不是针对“四色猜想”的问题本身[1]。地图着色实际应用中速度指标和颜色数目指标同样重要,目标是在可容忍时间消耗的基础上采用尽可能少的颜色进行着色[2]。 着色算法 对于平面图的着色问题的研究一直成为研究热点,特别是随着计算机的出现和广泛应用,图的着色理论也有了迅速的发展,其应用日益广泛[3][4]。现在已经成为研究系统工程、管理工程、计算机可续、通讯、网络理论、运筹学等所必须的一种手段[5][6]。,本文从实际应用角度列举的两种算法都是实现基于四色猜想的着色优化,但并不一定是最佳的着色算法。 算法1:根据图G的邻接矩阵,依次按节点序号遍历所有节点,进行着色。先用一种颜色对节点着色,判断矩阵中与该节点相邻的节点的颜色是否相同,如果不同,则继续对其他节点遍历。如果相同,则改用其他颜色尝试,直至与相邻点颜色不同。 算法中核心的颜色赋值和碰撞检测处理步骤如下: For (依次遍历图的所有节点i) {For (依次判断的最大颜色数目,颜色j) {给节点i赋值颜色j; For (序号k小于该节点序号i的节点)

地图设计说明书

黑龙江科技大学 《地图学》 课程设计说明书 题目:哈尔滨市2013年9月降水分布图 院(系):矿业工程学院 班级:城乡 12-1 姓名:周春燕 学号: 2012024864 指导教师:王俊杰

地图学课程设计说明书 一、资料与数据的来源 1、资料的来源 资料主要来源于网上查找的资料数据、这幅底图本身含有的内容和一些关于专题地图的资料,资料和数据是比较综合整理后。该图的比例尺为1:20万,主要突出的区域是哈尔滨市,符合规定要求。 2、数据的来源 ①首先根据上课时老师的指导找一些关于专题地图的资料数据,比如哈尔滨市的旅游地图,人口分布图等。在这过程中我确定了自己的专题地图的内容,并且结合了课程设计的需要,绘制了一幅哈尔滨市2012年9月份降水量分布图。 ②在哈尔滨市地图的基础上,应用了原有的资料如:边界线、县级的名称。 ③根据自己设定的以哈尔滨市2012年9月降水量分布为专题之后,通过对资料的收集和分析,并巧妙地借用了网络的优势,找到了准确可靠的哈尔滨市2012年9月降水量分布数据和布局状况。 ④在图书馆里面查阅相关资料,参考别人的专题地图的制作方法,和专题的布局所选用的一些图例进行参考和借鉴。 所以综合上述的资料和数据的来源主要为收集各种地图、影像、数据和文字资料,分析汇总资料,选取有效部分加工使用,利用画图软件最后绘制出专题地图。 二、分析方法与成图过程 1、专题的分析方法 专题地图的类型很多,其内容都是由地理基础和专题要素组成的。专题地图按照地图主题的要求,一般突出反映一种或几种主体要素,其中作为主题的要素表示的很详细,其他的要素则围绕表达主题的需要,作为地理基础概略表示。目前专题地图的表示方法一般有:定点符号法,线状符号法,质底法,等直线法,定位图表法,范围法,点数法,统计图表法动态线法。用到了质底法,分区统计图表法。我运用Mapgis 软件,选择质底法、分区与分级统计图法绘制了哈尔滨市2012年9月降水量分布专题地图。 Mapgis软件的“图面配置”是通过一个叫做“版面设计”的过程完成的。版面设计可以将Mapgis项目中除了自身之外的所有组件(由视图,图表,表格,脚本等),以及一般专题地图的必备要素:图名,图例,比例尺,等,经过整饰而组合成内容充实,表现方式多样,易于编辑修改与动态更新能力强的专题地图。 2、专题地图的成图过程 (1)地理底图的编制 ①比例尺:依据地图内容、用途选用等比例尺底图。由于是对整个哈尔滨市进行降水分布的专题地图的绘画,所以应该选用比例尺较小的比例尺,因此我选用了1:20万的比例尺。

地图着色问题

数据结构实验报告 实验一:地图着色问题 班级:计算机科学与技术1班 姓名学号 完成日期:2015.11.16 一、题目描述 已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。 二、需求分析 1.已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保 证使用的颜色总数最少; 2.将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关 系; 3.演示程序以用户和计算机的对话方式进行; 4.最后对结果做出简单分析。 三、概要设计 把34个省看成34个顶点,从选定的第一个顶点开始着色,先试第一种颜色,如果这个颜色与这个顶点的其他邻接顶点的颜色不重复,则这个顶点就是用这种颜色,程序开始对下一个顶点着色;如果着色重复,则使用下一种颜色重复上面的操作。着色过程就是一个递归的过程,直到所有的顶点都处理完后结束着色。 结构设计: 因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构选用邻接表,考虑用邻接表是因为一般的地图的某一个顶点并不会与很多的顶点相邻接,如果用邻接矩阵会浪费很多的存储空间,所以选择邻接表来存储。

其中: typedef struct ArcNode { int x; // 表示与当前顶点所表示省份相邻的省份的位置信息 struct ArcNode *next; // 指向下一个弧结点 }ArcNode; // 表示省份之间相邻关系的弧结点 typedef struct { char *name; // 顶点所表示的省份的名称 int color; // 省份的颜色,用数字表示不同的颜色 ArcNode *firstnext; // 指向第一个弧 }Province[35]; 四、详细设计 该程序一共包含三个模版:分别为初始化模版、着色模版和输出模版。 1.初始化模块 声明表示省份的顶点信息、省份之间相邻关系的弧的信息,并为其赋值。 2.着色模块 // 分别为各个省份着色。 for(i=1;i<=34;i++) { province[i].color=0; } for(i=1;i<=34;i++) { j=1; p=province[i].firstnext; while(p!=NULL) { while(p!=NULL&&j!=province[p->x].color) { p=p->next; } if(p!=NULL) j++; } province[i].color=j; } 3.输出模块 输出各个省份的颜色信息。 for(i=1;i<=34;i++) {

遥感影像专题地图课程设计

《遥感影像专题地图制图》 课程设计 刘志豪09 土木工程与建筑学院,测绘工程2010级 2012年6月 指导老师:肖东升 1.MapInfo制图基本原理 1.1MapInfo介绍 MapInfoProfessional是一套强大的基于Windows平台的地理信息系统软件。使用MapInfoProfessional,商业分析专家和GIS专家可以方便的将数据和 地理信息的关系直观的展现。MapInfoProfessional6.5版为新老用户提供了在 数据维护、可视化、数据展现、输出和可用性方面的增强。MapInfo公司将MapInfo 的市场定位总结为一个等式:MapInfo=Mapping+Information MapInfo有如下特点: 1

①多平台运作环境,支援桌面系统、内联网及互联网。 ②全面支援Java技术。 ③拥有多种信息可视化模式及多变化的图形设定。 ④快速数据查询,高速屏幕刷新,使得用户界面具有良好的图形显示效果。 ⑤数据可视化和数据分析能力较强,可以直接访问多种数据库的数据,如Oracle、MicrosoftAccess、Informix、SQLServer、dBase等。 ⑥易于与其他应用软件集成,能够根据数据的地理属性分析信息的应用开发工具,是功能强大的地图数据组织和显示软件包。 ⑦具备功能完整及高效率的二次开发工具,同时支持16/32位的应用开发,适用于多种计算机操作系统,如Windows9x/NT/2000/XP,OS/2等。 1.2彩色卫星图像制作基本原理与步骤。(本次课程设计老师提供) 2.专题地图制作关键步骤及其截图 2.1遥感图像与行政图配准 配准采用以行政区划图为地图,将遥感影像图以同名点校正的方式进行配准。根据MapInfo以及制图精度的要求,至少选取四个控制点,经过多次尝试,最终选择了6个配准点,误差分别在1、2、3、1、1、1、2个像素,符合课程设计的要求。

相关文档
最新文档