利用免费的地图来解决实际问题
Google Map的API虽然免费,好用,但终究需要那么一些Javascript基础;ESRI最近推出的Mapping for Everyone使用起来就更简便,内容也更丰富,能够让大家轻松地在自己网页里嵌入一张可互动的地图,比如这样就可以查看美国09年的失业率统计: 它能够帮助我们做什么呢?这就有个例子,这位老兄正利用一张地图,劝说他的好友卖掉房子,准备搬家呢:)
世界上最好的SUV,就是自己的两条腿
Google Map的API虽然免费,好用,但终究需要那么一些Javascript基础;ESRI最近推出的Mapping for Everyone使用起来就更简便,内容也更丰富,能够让大家轻松地在自己网页里嵌入一张可互动的地图,比如这样就可以查看美国09年的失业率统计: 它能够帮助我们做什么呢?这就有个例子,这位老兄正利用一张地图,劝说他的好友卖掉房子,准备搬家呢:)
首先来思考几个Linear Referencing的应用场景(后面会对这些场景一一实现): 1、对于某条公路上的一点进行Identify操作,要求返回该点处在公路上的里程值; 2、输入起始和终止桩号,要求将其间的路段显示在地图上; 3、类似GoogleMap的交通流量地图。 要将这些功能在ArcGIS Server中“落地”,首先决定采用哪种开发方式:客户端API还是Web ADF?两者皆可。但是稍加思考,两种方式的API中都没有提供有关Linear Referencing的解决办法。所以,Linear Referencing在ArcGIS Server中的实现原理还是得依靠ArcObjects了。 ArcObjects中,Linear Referencing的功能在ESRI.ArcGIS.Location库中,请见:http://resources.esri.com/help/9.3/ArcGISEngine/dotnet/10745641-b5e3-4600-979f-cdf9d2bbc7ce.htm#About%20linear%20referencing。 为了实现上述功能,其中比较关键的有两个类:RouteLocator和RouteEventSource。RouteLocator的IRouteLocator2接口有Identify和Locate两个方法,前者可根据地理坐标识别出Route上的位置(M值);后者可根据M值来定位出Route上相应的Geometry。如果已有EventTable,需要对上面的每个Event进行定位,除了重复使用IRouteLocator2.Locate方法(或者LocateRow方法)外,也可通过构建RouteEventSource来实现。它是一种特殊的FeatureClass(继承自FeatureClass),其中的每个Feature代表了EventTable中的一个Event,而这个Feature的Shape字段内容则是根据EventTable和Route FeatureClass,利用Dynamic Segmentation技术实时计算出来的。 关于如何获得可用的IRouteLocator2接口和RouteEventSource,文档中已经讲的很清楚;另外ESRI.ArcGIS.Location中还提供了实现ArcMap中Linear Referencing里所有功能的接口,有兴趣的朋友可以仔细阅读。
Linear Referencing背景 定位:介绍Linear Referencing背景;在ArcMap中关于Linear Referencing的结构和功能;以及ArcGIS Server中几个应用场景的实现。 注:有关更详细的操作可查看在线帮助,或搜索论坛。什么是Linear Referencing Linear Referencing(下文引用为LR)翻译过来是线性参考,在公路,管网等行业的GIS应用中时常提到。LR是一种利用沿着可测量的线要素的相对方位来存储地理位置的方法。比如下图中: 下面线的长度一次标为0,10,20,30,40……,而沿着这条线,我们看到上面有: 一个位于坐标12处的点; 一个位于坐标10东侧4个坐标的点; 一段起始坐标分别为18和26的线段; 一段起始坐标为28,长度为12的线段。 为什么要用到LR技术?主要有两个原因:1、很多事件,像上边的例子一样,是通过沿着(曲)线的相对位置来记录的;2、要显示一条线上的多个属性集合时,由于各个属性在(曲)线上所对应的位置不同,同一数据源如果不做处理,很难达到要求。使用LR技术可解决此问题。 以公路方面的一个应用场景为例说明。我们要显示一条公路的4种不同属性:道路管辖情况、路面材料、路段限速情况和路况,假设该公路长100公里:1、前40公里为交警2大队管辖,后60公里为交警4大队管辖;2、30至70公里为水泥路面,其余为沥青路面;3、0-20公里的路段限速45km/h,20-40公里的路段限速35km/h,40-70公里路段限速45km/h,70-100公里路段限速55km/h;4、0-20公里路况一般,20-40公里路况很好,40-60公里路况很差,60-100公里路况很好。 属于同一数据源对应多个属性(且属沿线分布)的情况。如果不使用LR技术,那么需要4个公路图层,每个图层的公路根据属性分成长短不同的段落(Feature),才能够将这些属性展示出来;而是用了LR技术后,只需要一个公路数据(Feature数量不限),和四个事件表即可在不改变实际公路数据的情况下,按要求显示上述四种属性。 Dynamic Segmentation:动态分段,属于LR采用的一种技术(一般应称之为线性参考问题中的动态分段技术)。是根据属性表中存储的相对位置信息,以及相应的线性数据,动态计算出线性数据上相对位置所对应的实际地理坐标的过程。动态分段正是因为表达不同属性时,不用去分割实际的地理数据,而是动态计算出该属性对应的地理位置而得名。ArcGIS中Linear Referencing的实现原理 ArcGIS中实现Linear Referencing主要通过以下两种数据结构:1、Route FeatureClass2、Event Table 通过Dynamic Segmentation技术,Event Table中不同位置的Event就定位到了Route FeatureClass下对应的Line Feature上。Route FeatureClass 实际上是拥有两个特殊字段的Polyline FeatureClass:1、必须包含有M(Measure)值的Shape字段。拥有M值的Shape字段,不但能存储x,y(,z)坐标,还能够多存储一个M数值;2、必须包含有一个标识线段ID的字段,可以是Number或者Text类型。 除了上述两个字段要求,还可以有其他字段。 Route FeatureClass不同于普通的Polyline FeatureClass,是因为它具有一个测量系统,而这个测量系统的原理就是,通过存储在Feature的Vertice中的M值以及该Feature实际的ShapeLength,来动态插值出线上每一点的相对位置。比如一条公路数字化时,有两个节点(Vertice),分别表示该公路的起始桩号0公里和结束桩号100公里,该Feature存储在WGS1984坐标系中,ShapeLength为2.00,那么该公路上40公里处的位置,就应该位于图上该Feature的40%的位置,也就是ShapeLength为0.80的位置。 而ArcGIS中,不要求每个节点都必须有M值。对于没有M值的节点其M值会标记为NaN(not a number): 此外在不违反逻辑错误的情况下,M值可以随意设置。比如上图左边的图形,0-10段的实际ShapeLength看起来比10-20段的ShapeLength明显要长,也可以将上述四个节点的M值随意地设置为0,3,7,30。但是如果设置为0,10,5,30的话就产生了逻辑错误(route measure anomalies),ArcMap中会将其突出显示,提醒用户使用工具修改。Event Table 实际上是拥有2-3个特殊字段的表(ArcGIS支持的表均可,甚至可以是有特定格式的text文件):1、类似Route FeatureClass中RouteID的一个字段。用来存储与Route FeatureClass中哪个线Feature对应。可以是Number或Text类型;2、根据Event类型不同而必须的1-2个字段: Point Event:比如108国道1900公里处发生了交通事故这个Event,需要一个Number类型的字段来记录1900这个相对位置; Line Event:比如108国道1850到1950公里段的路况很差这个 Event,需要两个Number类型的字段来分别记录1850、1950这两个起止位置。 除了上述两个字段要求,还可以有其他字段。 Event Table中一条记录就对应了需要在线上定位的一个点或一段距离,可以用来标识事件或属性等。下图描述了Dynamic Segmentation技术利用Route FeatureClass和Event Table产生的结果:ArcGIS桌面中对Linear Referencing的实现 ArcGIS桌面中不仅提供了专门的Linear Referencing Toolbox,对于产生的结果图层,也能像普通图层一样进行各种操作,而针对Linear Referencing的方方面面也提供了非常细粒度的操作供用户调整。 对Route FeatureClass的创建与修改。包括:通过Catalog或Tool或向导创建RouteFeatureClass;利用Tool从已有的Polyline FeatureClass创建Route FeatureClass;通过Tool或向导利用已有的Point FeatureClass来校准Route FeatureClass的M值(注:通过对RouteID字段建立索引,可提高Dynamic Segmentation的效率); 利用Route Editing Toolbar对其进行修改; 将Route FeatureClass作为图层显示,并对其进行查询。包括:对Route进行Identify。查询出线上任意点的M值(Identify Route Locations工具需从Customize中调出);查找某条线上指定M值的位置(包括Point和Line两种),通过Find工具实现;自定义符号显示M值的异常。包括逻辑错误等,可通过Route图层的属性对话框实现;在地图上像刻度尺一样任意显示Route的M值(Hatch)。通过将定义Hatch Definition(可多个),将其组织在Hatch Class(可多个)下,并附加SQL Query和Range Scale操作,基本实现任意复杂的“道路标尺”,而“标尺”的Label也可进行Script的高级控制,最终还能将“标尺”转换为Graphics,或将“标尺”风格另存为Style。在Route图层的属性对话框中实现; 通过Tool和Attribute … Continue reading ArcGIS中的线性参考/动态分段技术(一):Linear Referencing背景
其实应该是自己想成为一个摄影记者,但估计实现的可能性非常小的一个梦想。 记者,从某种程度上来说与老师一样,是非常值得令人尊重的职业,有着非常崇高的职业道德和敬业精神。而摄影记者更是不易,他们不做采访也不做评论,只是将最真实的一面呈献给大众,他们需要把想要表达的东西凝固在那一瞬间;从另一个角度来说,他们也无需用文字表达,把思考的过程和空间都留给读者或者观众。 下面就是一个名为Dan Chung的英国华裔摄影记者(《卫报》长派中国记者),用它的佳能5D Mark2,7D还有尼康D700拍摄的国庆阅兵短片。慢动作部分是用7D的720p,60帧/秒摄影功能完成,时间流动效果由其他两部机器完成。 一个个的慢动作仿佛记录的不仅是现在,而且还有历史、思考和未来。以我外行的眼光来看,这正是一个合格并且优秀的摄影记者为什么会让人肃然起敬的原因。[youtube=http://www.youtube.com/watch?v=SyeLcb1IvtU]
《我们俩》,本以为这个电影演的是90年代大学生租房住的事情,可看了之后才发现不是,讲的是亲情。亲情是很长时间的故事,电影里把它浓缩了;但都抓到了点子上,看了又让人能想起许多电影里没演的事情。很多年以后,可能爱情的片子已经无法让你悸动,但是关于亲情的片子,肯定会感人一生。 makeing life look as good as cinema,其实大可不必刻意这样去做,因为真实的生活本来就很精彩。 这部影片的导演是马俪文,很难想象她最后“沦落”到拍出《我叫刘跃进》(个人定义:疯狂的石头,我叫刘跃进,疯狂的赛车并成为疯狂三部曲)的地步;电影配乐是窦唯,这倒是很容易让人想到他的《觉是》。ps:丰富的风格vs执着的坚持?
两年前看过《An Inconvenient Truth》,今天又看了《Home》,人类虽然还没有被自己逼到绝境上,但也到了“要悲观已经太迟”的地步了。 即使人类如此万能,至今也没能在宇宙中找到一颗类似地球的行星;地球上一个物种的从无到有,需要经历的无数的轮回。人类能出现在今天的历史舞台上,实在已经是一件值得庆幸和感恩的事情了。 而我们又是如何对待养育我们的地球呢?贪婪不绝地、拼命地从地球身上抽取石油;将肮脏的,自己闻了都嫌臭的垃圾导入蔚蓝的大海;出于炫富的心理,攀比着购买对于有些人来说可买可不买的汽车,在抱怨油价高、交通状况差的时候却从来没有考虑过因为排放尾气,自己又该为气候变暖,臭氧空洞承担多少责任?所有其它的生物也都理应与我们一样,拥有居住在这个星球上的权利,可我们已经因为自己的不负责任的行为,造成了数以千计物种的灭绝,打破了天然的,异常完美的生态平衡;今天,我们吃猪肉,买鸡蛋,喝牛奶,多么平常的事情,可站在它们的立场上呢?猪想,我生来就拥有拼命的长,然后宰杀的命运么?难道一天吃吃睡睡,晒晒太阳的日子不好么?鸡想,我的小宝宝还没出生,都已经被你们端到了餐桌上,这是怎么一回事情?难道带着自己的小宝宝,和爸爸玩玩老鸡捉小鸡的游戏不好么?牛想,我吃的是草,挤出的是奶,自己却连一口也喝不到,难道一天到晚散散步,闻闻稻香的日子不好么?已经有太多不应该发生的事情,被我们麻木地当成了理所当然。 清晰记得小学的时候,有一年冬天看到第一场雪,我在本子上记下了11月14号的日子。而现在呢?小朋友们可能以为西安一年不下雪是很正常的了吧……有时候,思念雪要比思念童年更加忧伤。 看《E.T.》的时候,当外星人抬头望着天空,眨着它那硕大的眼睛,激动的说出:“Home…”的一幕,眼眶不觉的湿润。希望我们人类不要沦落到这一天,在别的星球上,指着远方的地球,感伤的说出:“那曾是我们的家园”……
介绍:esri 09用户大会上的视频,其中详细介绍了于明年二季度即将发布的ArcGIS 9.4产品中,ArcMap 9.4的9大亮点。 视频地址在这里:ArcGIS 9.4:Desktop Usabilityflv格式(体积更小)wmv格式(更清晰) 在这里拣重点的东西翻译一下: 题外话1:Jack说,过去的三年时间里,我们都致力于9.4版本的开发,有时候我们也称它为version 10,但最后我们还是将版本定为了9.4。(看来ArcGIS 10是呼之欲出了); 题外话2:9.4版本将可以和9.3.1版本同时安装在一台机器上。 下面进入特性倒数,由Jack非常赏识的一位名叫John Coken的年轻人演讲:9、新的用户界面(主要是dockable windows):可停靠的toc。与visual stuidio的诸多可停靠面板一样,使用最多的table of contents面板将可以停靠。隐藏toc后,屏幕可以显示更多的地图内容:并且,当toc从自动隐藏或从自动隐藏中恢复时,地图内容不需要刷新。集成到的arcmap中的catalog管理界面(可以将其他的地图数据从此界面中直接拖入,以实现add data的功能,此功能将会greatly improve your productivity):并且也可以进行停靠: 8、新的Attribute Table界面:图层的属性表也实现了停靠,默认是在窗口正下方:可同时打开多个图层属性表。虽然现在版本中也可以实现,但实际中打开两个或以上属性表后,程序的可操作性大大下降,不得不在多个属性表中来回切换。现在可以将他们作为多个标签页,同时放在可停靠窗口中。除此之外,还可以在可停靠窗口中并排显示多个属性表内容,便于进行内容比对: 7、强大而实用的即时搜索功能:使用这个搜索面板,可以轻易搜索出多方面的内容:比如,需要额外的地图数据,像google那样在这里进行搜索,从列出的结果列表中,将图层拖拽到地图上即可实现添加地图数据。可以看出,搜索是在ArcGIS Online上进行的,随着以后ArcGIS Online的不断强大,会有越来越多的用户将自己可以共享的数据发布到AGOL上面,使得AGOL逐渐成为一个强大的“云端”,相比于自己购买的成本或为者获取数据的难度,既方便又快捷,何乐而不为呢?虽然AGOL从理论上的强大到实际中的可用,还有很长的路要走,但不可否认这是一个新颖而正确的趋势,所以不熟悉新版AGOL的朋友,赶紧熟悉一下吧。(推荐flyingis大侠的一片博文,另外参见9.3.1中的LayerPackage)除此之外,还可以对GP工具(arctoolbox里的内容)进行搜索(搜索本地的内容,带有auto completion的功能),快速定位到需要使用的工具,在结果列表中点击即可打开: 6、新的报表功能:通过向导式的创建方式,可以轻易的从现有数据创建出复杂的报表(样子比较像DevExpress控件开发出来的报表),包括可选的样式模板。从最后一幅图可看出,创建完成后还可以对报表的模板进行编辑,随时插入或删除需要补充和多余的内容。 5、更强大的ModelBuilder和Geoprocessing:Geoprocesssing,是GIS的核心。在ArcGIS的桌面产品中提供了源远流长的ModelBuilder和Python Scritps。 ModelBuilder可以快速,直观,方便的为自己的问题定制科学的解决办法,与编程处理方式是相得益彰。94版本中的ModelBuilder,当把鼠标移动到一个tool或parameter上时,可以不通过右键,直接以tooltip的方式查看到它的所有属性:还有一个比较令人兴奋的地方就是ModelBuilder中终于加入了Undo和Redo的功能(上图中红圈的部分包括对Auto Layout和误删除的恢复),经常因为手快而误操作的朋友可以宽心了。此外,还允许在customize的过程中,将自己常用的tool或者model直接拖拽的任何一个toolbar上,以实现更快捷的访问。再此外,对于任何一个tool,在执行的时候,新的Geoprocess options里面有一个background Geoprocess选项,可以使得此工具的每次执行都在后台进行,在执行的过程中,除了有右下角的进度条,用户仍可在前台对ArcMap进行任何操作,结果出来后会以气泡的方式进行提示。对于耗时的工具来说,这是个令人兴奋的功能。 4、TOC中新的Layers标签页:演讲者将其称为smart legend。现在的TOC中有Display,Source和Selection三个标签页,最后这个更是少用。这个新的Layers标签页,会根据当前范围内的,可见的地图内容来显示图例,不在当前范围,或者不可见的内容,都不会进行显示;而移动和地图范围或者改变了图层的可见性(可在Layers标签页中直接更改图层可见性和可选择设定)后,面板中的图例会动态发生变化,仍然只显示当前范围内的可见图层的图例。点击某个图例后,使用该图例的所有feature会以动画的方式在地图上进行闪烁,非常直观的定位出所有使用该图例的feature。 3、可以搜索的Symbol Selector:目前版本的ArcMap,若想改变一个图层的符号,单击该符号后,在Symbol Selector中只能凭肉眼去从近2000个符号(默认情况下)里寻找想要的符号,94中,如下图,有了搜索工具条,可以直接输入想要的符号名称,即可快速定位到该符号。比如直升机符号输入helicopter即可: 2、ArcMap变得更加Time-Aware:每个图层属性对话框中将有一个新的Time标签页,类似92版本推出的Animation功能,可以更容易和快速的展示时间有关的地图数据,比如10年的火场历史等。提示:视频中这个特性讲完后,小伙子会展示特有的美式肢体语言,来博得现场的掌声,也是我们演讲过程中所应该学习的内容:) 1、Fast Basemaps:首先看下图:现阶段非常别扭的一个用户体验就是,当移动地图后,仍然按住鼠标左键,会看到地图新范围上并没有内容,而是大片的空白,释放鼠标左键后,此区域的内容才会重绘。94版本中,可在data frame中通过右键新建一个basemap layer,实际上是一个特殊类型的group layer,之后,可以再toc中,把想要作为底图的所有图层添加到这个basemap layer下。之后,移动地图,神奇的事情发生了:不论怎样快速移动,basemap layer下的几个图层都会始终呈现(实际上是快速重绘),再也看不到任何的空白了……bravo!(现阶段:ArcGIS Engine中,使用Dynamic Display技术的地图也会有类似的体验;ArcGIS Server中,如果是做过缓存的map service,而且缓存获取的速度足够快(比如在本机上,不受带宽的影响),也会有类似的体验。)
仔细查看9.3.1中本地的Desktop帮助会发现,没有任何先兆的情况下,An overview of writing geoprocessing scripts主题介绍了Arcpy模块,与在线帮助中该主题的内容完全不一样。而这个Arcpy就是9.4中arcgisscripting的升级版。文档编写人员在本地帮助中为9.4打了一个广告:) 从win32com到arcgisscripting,geoprocessor实现了跨平台;从gp.create()到gp.create(9.3),脚本中许多对象得到了质的升级。而arcpy正是arcgisscripting的继承者,它将为我们带来包括数据分析,数据转换,数据管理,及工作自动化在内的更加智能化的编程体验。在ESRI 2009 UC的视频中也能看到,ArcGIS Desktop 9.4中将Python环境更紧密的结合到了ArcMap中来。这也再次说明了Python作为scientific programming language for GIS的重要性。 Geoprocessing是ArcGIS产品的三大核心(Geodatabase,Geovisualization,Geoprocessing)理念之一,也是AGS中gp服务的基石。Desktop之所以强大,在很大程度上取决于Geoprocessing Framework的支撑。若要深入掌握Geoprocessing,除了反复操练ArcToolbox,还得写的一手好的Python Scripts才行。
以前也看到论坛中有朋友说这个问题,前两天刚好碰到,记录一下,方便其他朋友查阅。 症状:1、在ArcCatalog中,通过Local方式连接gis server没有问题,通过Internet方式连接(首先保证输入的字符串格式正确)提示:the request method (get.post,ect) was not allowed。。。。2、ADF开发时(比如新建一个web mappling application模板),在MapResourceManager中,通过Local方式连接数据源没有问题,通过Internet连接时出错如下图: 解决办法:很有可能是安装时未进行Web Application Post Install引起的,(重)做一遍Web Application Post Install即可。
昨晚做了个梦,感觉很深奥,赶紧记下来。 眼前是草坪,远处是树林。有个女的拿了几封信,放到草坪上的一个邮箱(《苏菲的世界》)里,开心地跑开了;后面跟来一个男的,面对那个女孩跑开的方向,背对邮箱,用手从后面取出那几封信,露出一种描述不清的表情,确切的说应该是看不太清。这时候一个旁白的声音响起了: 找到这几封信对研究简奥斯丁(《成为简·奥斯丁》)的生平非常有帮助 …… 男孩根本不愁没有漂亮的女孩来找她 但眼前这个女孩充其量不过是有一双大眼睛罢了 尤其是面对生死离别的时候,她的眼神简直是脆弱不堪 ……