VS 2012中流失了的Create UnitTest

  比如说大家明日有一个要求求一个圆的周长,这大家需要统筹二种用例,1、输入一个平头值,通过统计重回周长。2、输入一个负值,抛错。下面我索要五个人来结对通过TDD格局来实现这一个Story,为了有利于清楚,我用大话设计情势的人员命名模式来指定四个开发人士,老鸟,菜鸟。

4.  坐标:究竟有多紧要

  很多时候碰到学员拿来如此的数量,坐标值不正确或者尚未坐标系,不可能和其余数据正确的叠加在一起展现,无法设置比例尺,也不能做拓扑检查之类的干活。坐标不正确的因由首要有:在用CAD等软件绘图的时候从不设立好正确的地理坐标系,或者数字化纸质量形图或映像的时候从不注意是不是经过配准这一步骤;坐标系缺失的场所就更多了,导入数据的时候只导入了坐标值新闻,或者数额格式转换的时候忘记了指定坐标系。

  而一个地物怎么着才能正确定位在地球上?答案是正确的坐标值加上坐标单位。让大家暂时丢掉地球是个三维球体,先来形成在平面图上画出一栋房子的职责,现在领悟房子的多少个拐点坐标(1,1)(3,1)(3,4)(1,4)。首先大家不可以不要先认同的是坐标原点在哪个地方?其次还要有横轴和纵轴以及单位刻度(房子的长宽是米,现在坐标轴的刻度单位也是米),这图4中所示的就是房屋应该在的岗位。而地理数据一定也是均等的规律,只然则大地坐标系的定义则是:以参考椭球体(用来模拟地球的细腻球体)中央为原点,本初子午面(大英帝国格林(格林)尼治天文台所在地点为本初子午线,即0度经线)为纵轴方向,赤道平面为横轴方向,如图5所示,黑色点的坐标就应该是(50,40),单位为度。

                           
 图片 1

                                                    图4 二维笛卡尔(Carl)坐标系

                                       
  图片 2

                                                    图5 大地坐标系

  获取科学的地理坐标究竟有多么首要?是不是自身做一幅地图所需的数码必须要理解正确的地理坐标呢?我们明白获取坐标并不是一件分外容易的事情,草根的艺术一般是在GoogleEarth上充裕地标,通过KML这种格式导入GIS软件生成矢量图,官方的路径就是经过买进了。但实在某些时候,坐标并不是我们所认为的那么重大,比如自己要做景象分析,钻探一个聚落的布局,在此基础上做一些地图,我想说,其实你真的不必为地理坐标困扰,找一个航拍图片,没有的话纸质料图也可以,直接在下面描图拿到多少,就像时辰候我们大概都撕过课本封面上的透明薄膜叠在任何图上描图,原理是一样的,只是你这时获取的坐标是相对坐标罢了,既然我不需要和另外地图叠加在一起定位,我又何须要珍爱地球坐标原点在何地啊? 
  

 

3. 比例尺:地图的亲热朋友

  早在南梁制图学家裴秀就提议“制图六体”的概念:分率、准望、道里、高下、方邪、迂直,首当其冲的分率指的就是比例尺。无论是我们购买的时势图,如故我们在软件中出图,都要提到到比例尺,对于地图而言,比例尺是不可或缺的密切朋友。就像上节中我们提到Natural
Earth提供了大千世界1:10 000 000的矢量数据下载,这里的1:10 000
000就是比例尺,它的意思是:地图上任意线段长度与它代表的无疑水平距离之比,也就是说如若地图上两点之间测量的相距为1mm,那么可靠的相距则是10km。

  简单的说,地图都是对实际世界的架空裁减,比例尺就象征了抽象的水平。比例尺越小,抽象程度越高,表明的地物就少而精炼;比例尺越大,抽象程度低,表明的地物就越详细。如图3所示,同一个湖泊在较大比重地图上以面来表示,能够观察湖泊的概略,而在较小比例尺地形图上就只是以线来表示。这一个对地物举行抽象的经过存在于数据搜集这个环节,对于采集到的多少,在软件中我们是足以兑现比例尺的无极缩放的,这时候改变的就不再是空洞程度,而是体现的地理范围了。

                                               
 图片 3

                                                                    图3
不同比例尺对于地物的纸上谈兵程度

   我国规定1:5千、1:1万、1:2.5万、1:5万、1:10万、1:25万、1:50万、1:100万八种比例尺地形图为国家骨干比例尺地形图。编制这一个地图要么通过全站仪、经纬仪等大地测量的措施,要么通过航摄的艺术。因而这里又要引入三个概念:测图比例尺和航摄比例尺。由于人眼在地图上的分辨率通常为0.1mm,不同比例尺图上0.1mm所代表的确实距离,称为地形图比例尺的精度,该精度决定了测图比例尺。例如,某工程测量要可以在图上发挥出10cm的精度,则选用的测图比例尺应不小于0.1mm/10cm=1/1000。航摄比例尺与成图比例尺的涉及见下表(印象分辨率指的是形象所能识别出的很小地物单元的轻重缓急)

                                                                       
  表1  成图比例尺与航摄比例尺及映像分辨率关系

成图比例尺

航摄比例尺

影像分辨率(m)

1:500

1:2000-1:3000

0.05

1:1000

1:3500-1:4000

0.1

1:2000

1:6000-1:8000

0.2

1:5000

1:10000-1:20000

0.4-0.8

   通过上表中的相比,大家可以发现成图比例尺基本是航摄比例尺的4倍,为啥是4倍,原因是精度决定,4倍内的留影照片就够了,刚好不会冒出马普托克,假诺将视频比例尺确定得过小,造成图像模糊不清,甚至出现“Charlotte克”图案,影响成图质地;反之,将拍摄比例尺确定得太大,“大材小用”造成不必要的资源浪费。

        private int _r;
        private readonly double _pi = 3.14 * 2;

        /// <summary>
        /// TODO: Complete member initialization
        /// </summary>
        /// <param name="p">radius</param>
        public Circle(int r)
        {
            this._r = r;
        }

        public double Caculate()
        {
            return _r * _pi;
        }

5.  黑影:神马不是浮云

  我们通晓地球是一个形象不规则的椭球体,这倘若为地球画一张平面画像,这该怎么着尽可能真实地再次出现地球的实际面貌呢?后边我们精通到地理坐标系的概念:以球心为坐标原点,东西方向按经度划分为360度,南北方向按纬度划分为180度,也就是大家所说的WGS(大地坐标系)将地物举行还原,如图6即是按经纬度直接描绘出的世界地图。

                           
  图片 4

                                                             图6
未投影的世界

        
一切看起来都很健康,正如有本书所写“世界是平的”,但我们精心一看就会发觉问题,A1A2中间的距离和B1B2之间的离开在图上看起来是相等的,然而事实上,位于不同纬度的均等经度差相对是不对等的,位于赤道上的距离远比位于两极的要大过多,由此用地点提到的传真模式来做平面地图是不可以很好地表述距离,方向之间的相对地点关系的,所以我们在制图的时候才要引入投影,即将三维球面呈现到平面地图上,对于地图来讲,投影相对不是浮云。

                           
 图片 5

                                                                图7
Albers投影

  这里我们挑选了Albers(等积圆锥投影),世界地图立马显示出不雷同的模样,这里A1A2和B1B2之间的偏离也时有暴发了变形,因为影子是三维向二维的照耀,所以必然会暴发变形,大家得以为不同用途的地图选拔相应的影子形式来担保面积,方向或角度的变形最小。

鸟儿:so easy,分分钟搞定。

1. GIS:你能帮我做什么样

  “GIS是何许,能干什么?”,我想这些问题或许是困惑大多数GIS专业学生的题材,现在自然好广大,但在我们学习这会儿,完全是混混沌沌,不明了将来毕业了去干嘛,当人家很奇怪地问起自己的业内时,也很难用只言片语跟人家描述清楚,那种学了n年还说不清自己专业的羞愧呐。。。直到后来GoogleMap、GoogleEarth横空出世,当我们发现这玩意儿能在电脑上看出自己家房顶,找到玩转世界这种“君临天下”的感觉的时候,大家到底得以傲娇地说,俺的专业就是做那么些的lol(其实您领会)。

  当大家去询问GIS的概念,一般都会如此介绍——“在微机软硬件的支撑下,对地理数据举办获取、存储、分析、展现、输出的新闻连串。”

  “这GIS不就是用电脑做地图呢?”

  “GIS比总结机制图高级,因为大家有数据库支撑,咱们还足以做空间分析……”

  听起来无所不可以的GIS,但在很长日子里实际也只是停留在做出专题图的等级,像图1中的渐变色就很清晰的呈现出各省的男同胞的平均身高,各位可以很迅速地在心头得出自己有木有拖后腿的结论,再或者可以跟地图交互查询一下性能,压根儿用不到复杂的空间分析。

                                     
  图片 6

                                                                       
   图1 神州各省男性平均身高

        
这GIS究竟能做哪些吧?首先就是采访地理信息,人类活动75%都与地理地方有关,比如想和男朋友找个电影院看视频,出差到一个生疏的都市找旅舍,这个都是地理音信,通过GIS能立竿见影地把这个都存储起来,怎么存呢?excel吗?这怎么和地图关联起来?这是后话,当然这些题目不太用大家用户担心,业界大佬们早已定义好了地理音信的各个存储格局,文件或者数据库都可以,我们只要按要求把信息录入就可以了。

        
收集到的地理消息,现在也只是电脑中的一堆表格,这怎么为人人所见到啊?这就是所谓的“可视化”了,各样图片是消息可视化的产物,那地理信息可视化的产物就是“地图”,当然地图远比GIS出现的要早,这位长辈是GIS紧要的喉舌,GIS可以方便地将募集到的信息在地图上出示,如图1用深浅变化的水彩表明身材的轻重,假如收集到的消息还有女性的身高,分秒钟就足以再做出一幅类似的女性身高图来。而即便你是一个绘制高手,可以在CorelDraw、Illustrator甚至Photoshop中绘制出图1,但却很难再此基础上立即绘制出另一幅女性身高图来。

        
而上空分析其实离大家也并不深刻,像群众点评这样的运用已经极度普及,我可以很便宜地找到周边的食堂,还有地图导航,都是由此GPS装置收集的你的地理地点然后,在地图上找到科学的地方显得,再进一步的贯彻诸如查询检索等功用。

老鸟:OK,现在大家再Run Test,果然我们这么些Case通过了。这我再写一个Test
Case。

转自:http://www.cnblogs.com/gisangela/archive/2013/02/20/2918884.html\#!comments

这儿,我Run
Test,结果是通然而,因为自身的Caculate方法还从未落实,小鸟,这您来落实这个主意。

GIS从出现到为人所知,只但是经历了短短的几十年时光,尤其是近几年,大有满园春色之势,越来越多的人起先领悟GIS。自己和GIS打交道也快10年时光了,所从事的劳作也是把“阳春白雪”变成“下里巴人”,让更多的人能驾驭并使用GIS,但通常向另外行当的人介绍GIS,还真不是三言两语可以注了解的事务,于是近来写得小文一篇,希望可以给想精通GIS的人一点点启示,也许GIS可以在你的干活中大显身手呢。

如此两种Case就全经过了。

2. 多少:有料才是王道

  大体领会了GIS是何许,我们再来讨论下图1是咋做出来的,身高之类的数量很好采访得到,不过地图呢?让我们追根溯源地想一想地图到底是怎么画出来的,在并未测绘,没有RS,没有GPS的年代,大家的老祖先们就是靠脚步来丈量土地,靠眼睛看来的来手绘地图,而方今RS可以透过卫星来给地球拍照,GPS能够实时定位,即使已经摆脱了“数据基本靠走”的一世,然而想取得数码或者要花费些代价,大多数地理数据还一向不开放需要购置,当然像图1中这样比例尺级别(第4有的我们会研讨到)的地形图,依旧很容易从网上得到,这我们下载后,就足以在GIS软件中打开,将身高数据录入,从而赶快的做出一幅地图来。

  所谓“巧妇难为无米之炊”,数据才是王道,否则GIS系统就是一个空架子。对于数据而言,GIS有两大主导存储模型,一种是矢量数据模型,一种是栅格数据模型。如图2所示,同样信息的发挥,在左边的矢量数据中,咱们见到的是清晰的点、线、面的实体,来表明河流、湖泊、地块这样的音讯;而左边的栅格数据中,大家看出的则是一个个的格子,相平等的像元值在地形图上展现出相同的颜色,从而也显示出河流、湖泊、地块的形制。即使都能发挥出一致的消息,可是这二种存储模型是完全两样的,矢量是以目标为单位,我们可以把一个湖泊的面积等性能都存储在该目的中;而用栅格表明的话,湖泊是由一组像元组成的,大家不容许将所有湖泊的面积分别授予每个像元。

                                                       
  图片 7

                                                                     图2
矢量数据模型与栅格数据模型

       
网上公开免费的数量哪儿可以下到呢?在美利坚合众国数码的绽开程度仍然优秀高的,像人口普查之类的详实数据完全可以拿走到(http://thistract.com/),另外还有一些网站可以获取数据:

大地90m分辨率的DEM(高程数据)下载:

http://srtm.csi.cgiar.org/index.asp

Natural Earth提供了中外1:10 000 000、1:50 000 000、1:110 000
000比例尺的矢量和栅格数据下载,格式为ESRI的shp、Geodatabase以及tiff:

http://www.naturalearthdata.com

Bathymetry是汪洋大海深度的测量数据,在 British Oceanographic Data Centre
的网站上可以下到全球海洋深度数据:

https://www.bodc.ac.uk/data

Globe land cover facility提供免费卫星图像,如Landsat、 Modis、 Ikonos、
Quickbird等,下载地址:

http://glcf.umiacs.umd.edu/

   对于中国用户,开放的免费数据得到途径有限,国家基础地理信息中央揭橥过全国1:400万比例尺的矢量图,详细到县级行政数据。此外,假若大家只是需要背景地图突显的话,可以无需获取原始数据,而使用叠加地形图服务的点子。中国的ArcGIS
Online(http://www.arcgisonline.cn)为中华用户提供了免费的地图服务,大家只需要将其与我们的数量叠加,就可以高速做出一幅地图来,当然这里的地形图服务不可知一贯开展查询,它的成效类似于背景图片。

        public double Caculate()
        {
            if (_r < 0)
            {
                throw new ArgumentException();
            }
            return _r * _pi;
        }
        private int _r;
/// <summary>
        /// TODO: Complete member initialization
        /// </summary>
        /// <param name="p">radius</param>
        public Circle(int r)
        {
            this._r = r;
        }

  前言:新近正在探究一个新类型的开发工作,这些类其余要求是必须写UnitTest,对于我个人来讲是很不爱好写UnitTest的感觉这么些事物会很大程度的误工开发进度,所在此之后面项指标UnitTest是能不写就不写,好在作坊式的付出不在乎你写不写,功效Work就OK了,好多技巧大拿都对UnitTest情有独钟,可能对于我这种码农来说不可能知晓其利益呢,小小抱怨也无力改变什么,只好研商探讨UnitTest了。

其一小例子就是了结了,能够看出来,我们透过TDD的主意,根据Test
Case来计划代码逻辑,可以使我们的逻辑没有此外过度设计,而且这样的措施使UnitTest的代码覆盖率很高。

  当自家在VS12中想透过右键找到Create
UnitTest那多少个选项的时候,我发觉10中给写UnitTest带来极大方便的选项在12
13中竟然没有了(也可见我多长时间没写UnitTest了lol),为何微软要将这些效率撤销了吧,我个人觉得是为了更好的满意TDD的支付情势,微软对于TDD的支出格局可以说是竭力的支撑,甚至用VS
2012的付出公司为模板来向大家这多少个屌丝程序员来呈现怎么样是优雅的C#付出。那何为TDD呢,下边切入主旨来说说我的少数知晓。

  TDD此种情势最有含义的地点在于:不会因为你先去想代码实现而发生过度设计的题目,假使从骨子里的要求出发,你写出来的代码是最简单易行,最直接满意需求的法子,就不会发生过度设计的题目。在这边自己一样想到了一种编程模式:结对编程,结对编程是一种将文化传播下去的法门,意思是熟稔此地逻辑的长者可以和新人一起来编排一块逻辑,通过去修改BUG,写代码,老人带着新娘将那块一起做下去,包括新成员进入的时候可以经过此种情势将文化传播下去。这也是一种Code
Review,五人一道看,总比一个人看发现题目标机遇要多一些,因为六人的思绪是例外的,总是一个人付出是有问题的。由此那里是想将结对编程和TDD结合的措施。一个人写Test
Case,另一个人经过Test
Case来写实现。下边就通过实际的事例来演示一下(演示的代码没有实际意义,只是想透过例子来呈现结对编程和TDD结合)。

  TDD(测试驱动开发)
是测试先行的法子,也就是说遵照需求写驱动(写测试用例)。通过用例从红灯变成绿灯,使其经过了把实现的代码生成出来。平时我们的支出格局是先写完Code,然后Create
UnitTest,此种情势属于测试后行。对于此二种艺术,我个人感觉无法说就势必要TDD而完全否认测试后行的艺术,然则TDD给我们带来的便民是明日想要谈的主题,对于二种艺术的研讨,欢迎我们来辩。

再Run Test,又破产了。

        [TestMethod]
        public void TestPerimeter_FirstCase()
        {
            Circle worker = new Circle(1);
            double result = worker.Caculate();
            Assert.AreEqual(result, 6.28);
        }
         [TestMethod]
        [ExpectedException(typeof(ArgumentException))]
        public void TestPerimeter_SecCase()
        {
            Circle worker = new Circle(-1);
            double result = worker.Caculate();
        }

下一场自己起头写UnitTest,先创立一个UnitTest工程,然后写Test
Case,写好后生成Caculate方法,设置断言,想取得正确结果。

老鸟:我写一个类Circle,写好它的构造函数。

鸟儿:哦,因为尚未对参数举行判断,没有设想小于零的情况,我修改下Caculate方法的贯彻。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website