2008年11月6日
#
ArcMap自带的Identify工具雷死人了,还没怎么着,就先蹦出一窗体来。要想在地图上Identify,得先把这个窗体先移到一边去,然后才能点选或拉框选择要Identify的要素。于是就想自个写一个自定义的Identify,要求如下:
1.去掉要素属性信息中的AO系统字段值,如FID,Area,SHAPE等,最终用户谁晓得那些东西干吗的呀;
2.查找只对可见图层,至于全部图层我在想,看都看不见的图层要素有那个傻人在那点击或拉框选择查询啊;
3.要素属性信息不但可以浏览,而且还能直接修改,简化操作步骤。
UI如下:

以前AO的sample中有一个VB的代码,但那个东东使用的是最近点查找,比起ArcMap自带的Identify无论功能还是表现方式还是要差很多。研究了下Identify接口,发现92现在已经可以用来完成这个任务了,我记得91前好像还不行的。很久没动手写代码了,调试花了我一晚上的时间,搞得今天晕头晕脑的,把中间的一些注意事项总结下贴出来供大家参考吧。
1.出现“正试图在 os 加载程序锁内执行托管代码”的错误,程序无法编译执行。
问题:调试状态参数设置
解决办法:vs2005菜单的 调试->异常->Managed Debugging Assistants->LoaderLock 的选中状态去掉即可。
2.ITOOL工具编译后无法在ArcGIS Engine ToolbarControl中Add In成功,查了好几遍代码都不知道问题出在哪里。
问题:m_bitmap = new System.Drawing.Bitmap(GetType().Assembly.GetManifestResourceStream(GetType(), "SparkIdentify.bmp"));而BitMap资源文件生成操作使用了“内容”,这样上面的代码就会有问题。
解决办法:将所有的资源生成操作改为“嵌入的资源”。
3.创建DataGridView视图时,如何避免出现第一个出现的空白列。
问题: //定义dgvConnInfo列表题名称
tdtAttInfo.Columns.Add(getNewColumn("字段名", "System.String"));
tdtAttInfo.Columns.Add(getNewColumn("字段值", "System.String"));
和数据网格视图控件关联后,总会出现第一列为空白列。
解决办法:
//定义dgvConnInfo列表题名称
tdtAttInfo.Columns.Add(getNewColumn("字段名", "System.String"));
tdtAttInfo.Columns.Add(getNewColumn("字段值", "System.String"));
dgvAttribute.ColumnCount = 2;
dgvAttribute.DataSource = tdtAttInfo;
for (int i = 0; i < 2; i++)
{
dgvAttribute.Columns[i].Visible = false;
}
//设置字段名列为只读
dgvAttribute.Columns["字段名"].DefaultCellStyle.ForeColor = System.Drawing.Color.Black;
dgvAttribute.Columns["字段名"].ReadOnly = true;
以上初始化代码放在Form_Load事件中生效。
4.对于属性信息的修改保存,一直pFeature.Set_Value和pFeature.Save进行保存。
有需要源代码的朋友可留EMAIL给我。
2008年10月3日
#
前言:在翔图旅游系统需求分析报告完成后,一直在寻找WEB开发方面的高手,也就有了下文的内容。为了专业起见,系统名称也改为翔图驴友系统。
翔图驴友系统需求说明
一、 地图数据
在电子地图上需要加上景点位置,例如“故宫”;
在导游图上需要加上该景点(景区)内的各景点位置,“例如”太和殿”。
这样在查找时可以做到直接定位和特殊表现。
二、 数据组织
景点数据按照树型结构,即行政区划—》景区—》景点,例如一个行政区划下有多个景区,每个景区下有多个景点,这样便于以后进行统计和分析。
三、 首页

此页面为驴友系统首页,点击Logo时返回该页面;列表显示最新的发布照片和游记(10个),可以滚动,地图显示全国行政区划,只能点击行政区划,地图上没有放大、缩小等操作工具。
四、 游记定位

用户点击某一游记时,在地图中心定位到该游记对应的景区名,同时另外打开一个页面显示游记内容;当用户使用地图上方的地图工具对该景区点进行放大显示时,显示该景区的导游图,同时在右边的图片列表中显示该导游图内各景点发布的照片(按发布日期排序)。
五、 图片定位
用户点击某一列表中某一图片名称时,在导游图中心以动态图标方式显示该景点位置,同时在一个窗口中显示该图片;点击该景点时,显示该景点上发布的图片名称信息,如下图:

六、 景点搜索
用户选择景点搜索页时,输入某一名称(包括景点名或景区名)时,在地图(或导游图)中心以动态图标方式显示该景点位置;如果有多个查询结果,就在下面的列表中显示结果供用户选择,如下图:

七、 本地搜索
用户选择本地搜索页时,输入某一地名时(使用在线电子地图本地搜索引擎),在地图中心显示该景点位置;如果使用地图拖动工具时,显示地图可视范围内的发布照片列表或发布游记列表。

八、 图库搜索
用户选择图库搜索页时,输入某一景点(或景区)名称时,在图片列表中显示该景点发布的图片列表;如果是输入查询的是发布日期,则按发布时间排序。

九、 游记搜索
用户选择游记搜索页时,输入某一游记名称(或发布日期)时,在图片列表中显示该景点发布的图片列表,按发布时间排序。

十、 上传照片
用户在导游图上选择某一景点时,右键时弹出上传页面,见下图。

十一、 上传游记
用户在地图上选择某一景区点位置时,右键时弹出上传页面,见下图。

十二、 其他

摘要: 前言:GIS中的一个重要概念是对现实世界的抽象和分层分类。很久以来,一直在思考地图能否会不断地被深入,从而拨开而又展现一层又一层的世界内容。人类认知的特征,通常都是从外道内,由浅及深的,那么在现有的电子地图上还能叠加那些内容,从而可以让这一思考继续深入延伸呢。旅游和人文历史是自己感兴趣的方面,便有了下文。起初想起名为“钻地行动”,但对于在GIS圈子里人而言似乎太不专业,那就...
阅读全文
长平之战,在战国乃至整个中国战争史上都有着经典和重要的意义,也成就了白起战神的辉煌顶峰和赵括纸上谈兵留憾百世的惨痛教训。
白起是秦昭王时期的军事统帅,在长达三十七年的征战生涯中,白起创造了一次又一次军事史上的奇迹,为秦国的统一奠定了坚实的基础。司马迁称赞白起“料敌合变,出奇无穷,声震天下”,而长平之战更是其杰出军事指挥艺术的巅峰之作。
赵括是赵孝成王时期的大将,乃赵国名将马服君赵奢之子,故人称马服子。赵括自少时学兵法,言兵事,以天下莫能当,赵奢也难不倒他。长平之战被秦军围困四十六天而没有获得增援,后突围被射杀,余部投降后被坑杀,至今在山西长平之地犹不时出土有尸骨残骸。
或因少时读“负荆请罪”、“胡服骑射”等历史故事的缘故,对于赵国一直充满了亲近之情,而长平之战的悲惨结局亦是深深地同情。今日重读掩卷,却有了一番深深的思索。
一、长平之战是国力的PK
自秦孝公卫鞅变法开始,秦国便将统一中国作为其历史使命,可谓立意远大。而长平之战秦赵相持三年,更是综合国力的直接战争。而赵国自赵武灵王胡服骑射后,军事实力剧增,一跃成为战国时期唯一能与秦军抗衡的强大战力。但战争远不只是军事力量的PK,以长平之战为例。秦赵两军实力相近,数量相当,结局却相当的惨烈和失衡,经济和外交策略成为了另外一个重要因素。秦国的商鞅变法是一种变革,而赵国变法只是一种改革,只是对于军事力量的重要变革,并不曾涉及其根本。因此,长平之战两军相持三年,秦军远征之师急于速战,而赵王派遣赵括急于出战,无非都是经济实力已不可能再这样被长期消耗下去而已。赵括大军被围困四十多日,其他五国居然都是按兵不动,可以说为秦国按部就班围歼赵军提供了绝好的喘息机会。这里绝非是秦国侥幸。在长平之战开始前,秦国已将这场战争定义为秦赵两国谁能最终统一中国的重要战略位置,从而在军事、经济和外交上进行了周密的部署和行动,而赵国则还将上党之地要还是不要权衡再三,可以说仗还没打,赵国已经在战略上框束了自己。
前些时间去面试,一CTO问,项目实施不下去了,什么时候需要停止?什么时候需要收手,我想只能从公司的战略层面去判断而为之。有些项目是一定以赚钱为目的的,有些项目则是以市场进入和长远发展为目的。我想国内的大多数项目经理都遇到项目超期,人员流失,成本超支、客户变更等五法八门的问题,此时大都想到的何时项目是个头。再好的项目经理,没有足够的资源,没有相应的外部环境,顺顺当当项目验收交付那是痴人梦呓。因此,项目经理一开始就需要对项目的目标和背景和很清楚的了解,包括公司领导对项目的期望和理解,这样才不至于到最后陷于两难的境地。
二、项目管理是实践工程
从我参与第一个项目开始,大大小小的项目也有十几个了。有的一两个人,也有十几个人的项目团队。读过的项目管理书籍也怕有十来本,读时每每点头赞叹,但实际项目中仍有许多问题发生,而且是书本上没有过的。长平之战赵军被围四十余天,赵括无奈领军做最后突围,便引出了和白起的如下对话。赵括认为白起用兵不合常理铤而走险,居然以先头五千铁骑分割赵军,如果赵军早攻,那么惨败的就是秦军了;既困赵军,却不攻占,便是贻误战机。白起言:“少将军经此一役,仍有就兵论兵偏离根基之痕迹,五千铁骑虽少,却是轻刃初割不为你看重,待你察觉来攻,我军已经增兵五万,谈何铤而走险?等而围之,亦是借重兵外之地利也。若我军不围赵军,列国或可来援,而我军既围赵军,列国便必不来援。邦国之道,雪中不送炭。少将军何独天真至此?最后,长平大战,我军也是伤亡惨重,能围能困,何须血战?兵士鲜血,毕竟比战机更重要。只要能最终战胜,白起宁愿保持兵力。”
白起从一名普通士兵一直到秦国的军事统帅,其战争指挥能力一直是在实际战斗中成长和积累起来的。而赵括自幼熟读兵法,大军被围四十多天而不生变,也可以说具备团队领导的才能。令人叹息的是,理论固然重要,但如果不能在实践中体会和验证,那么只能是纸上谈兵,项目管理何尝不是如此。记得自己的前一两个项目,基本上就是一摸黑走那打那,凭着一腔激情居然也马马虎虎验收通过了。再到后来,开始阅读和规范化的项目管理,才发现问题远比当初的繁杂凌乱,总是有一些书本上未曾讲过的问题出现。看长平之战,更觉水无定势,项目管理也要因时势而定,而不能一味死搬硬套。
三、关于项目资源的保障与获取
战国四大名将“吴起、白起、王翦、李牧”,其中以王翦最为老谋深算,既具备军事能力,又具备政治素养。长平之战中,秦昭王乃至秦国上下对于白起的支持都是无与伦比的,丞相范睢远交近攻的外交策略同时保证了这场战役秦国不受外来力量牵制,可以说这些资源的有力支持为白起的军事战术成功实施起到了重要的保障。在项目管理中,会遇到同样的问题,只不过我们不可能期望老板把所有的资源都划拨给你全权使用,那不现实,更不可能。长平之战赵军的败笔首先由统帅由廉颇换成了赵括开始,从项目管理的角度而言,就是廉颇作为项目经理,在上级管理层没有获得足够的资源和信任。不要小看这一点,如果老板不明白你这个项目的重要性,不理解项目的难处,不能和你有顺畅的沟通渠道,那么资源被随意抽拨,责难项目延迟等便只是时间问题。白起、李牧用兵贵在一个“真”,而王翦则以“活”见长。做程序员不真不行,但项目经理则不活不行,否则这两个著名将领的结局可见一斑,不是老板干掉你,就是用户干掉你。
2007年12月24日
#
匆匆又匆匆,又是一年末。每个平安夜,总忘不了送给你,我亲爱的老婆,我的淘淘,和远方的朋友们,道声平安快乐。
思念是一种病,又何尝不是快乐。
当你在穿山越岭的另一边
我在孤独的路上没有尽头
一辈子有多少的来不及
发现已经失去
最重要的东西
恍然大悟早已远去
为何总是在犯错之后
才肯相信错的是自己
他们说这就是人生
试著体会试著忍住眼泪
还是躲不开应该有的情绪
我不会奢求世界停止转动
我知道逃避一点都没有用
只是这段时间里尤其在夜里
还是会想起难忘的事情
我想我的思念是一种病
久久不能痊愈
当你在穿山越岭的另一边
我在孤独的路上没有尽头
时常感觉你在耳后的呼吸
却未曾感觉你在心口的鼻息
汲汲营营
忘记身边的人需要爱和关心
藉口总是拉远了距离
不知不觉无声无息
我们总是在抱怨事与愿违
却不愿意回头看看自己
想想自己到底做了甚黱蠢事情
也许是上帝给我一个试炼
只是这伤口需要花点时间
只是会想念过去的一切
那些人事物会离我远去
而我们终究也会远离
变成回忆
oh 思念是一种病
oh 思念是一种病一种病
多久没有说我爱你
多久没有拥抱你所爱的人
当这个世界不在那黱美好
只有爱可以让他更好
我相信一切都来得及
别管那些纷纷扰扰
别让不开心的事停下了脚步
就怕你不说就怕你不做
别让遗憾继续一切都来得及
2007年11月26日
#
近来有朋友问,ArcGIS Engine程序打包时如何能保证RUNTIME License的安全,也就是说Runtime 许可文件不会被任意传播。
偶把以前的InstallShield安装脚本修改了下,觉得下面的方法还是比较适合的。
第一步:打包应用程序文件
把Runtime许可文件改个名字(包括后缀,如tmp11.old),然后和应用程序打包在一起,安装时释放到系统目录中;
第二步:先安装应用程序SETUP文件(这样可以先把Runtime文件释放出来);
第三步:安装Runtime Setup,安装SP补丁 Setup;
第四步:注册Runtime 许可文件(注:这是关键的一步)
strLicenseFile=WINDIR+"\system32\tmp11.old"; //定义Runtime许可文件位置
spDir="c:\\EngineRuntime\Runtime\\SoftwareAuthorization.exe -s -lif"; //定义注册应用程序位置 ,-S表示不显示注册界面,-lif表示选择注册文件
szCmdLine = spDir + " " + strLicenseFile;
if (LaunchAppAndWait ("",szCmdLine,WAIT) <0 ) then
MessageBox ("运行文件注册失败",INFORMATION);
else
DeleteFile (strLicenseFile); //删除注册许可文件
endif;
通过这样的方法,可以使安装用户不知觉的情况下完成许可文件的注册,在一定程度上保障了许可文件不会被轻松地获取到。
2007年8月12日
#
我们在回忆
回忆那过去
在冬天的山巅
露出春的生机
我们的故事
故事多么甜蜜
在春天的好时光
留在我们心里
啊...啊...
这就是春天的美丽
我们慢慢说着过去
微风吹走冬的寒意
我们眼里的春天
有一种深情
我们在回忆
回忆那过去
在冬天的山巅
露出春的生机
我们的故事
故事多么甜蜜
在春天的好时光
留在我们心里
碍…碍…
这就是春天的美丽
一边一边深情回忆
春天带来真诚友谊
我们眼里的春天
有一种深情
我们的故事
故事多么甜蜜
在春天的好时光
留在我们心里
2007年8月10日
#
今天预报有台风,晚上福州回北京的航班不知是否能顺利出发.昨天晚上和同学去喝咖啡,回来时瞅见了宾馆附近有家西安面馆,想想就有些馋了.
中午一个人杀了过去.听口音老板应该是陕西人,感觉很亲切.看了看菜单,价格比西安贵,孜然加馍居然6元想想也是,福州嘛,也权当为陕西人民做贡献了.要了个孜然加馍,一碗哨子面,不一会上来了.饼不是想象的白吉馍,孜然加馍的辣子炒肉不是现炒的,应该是隔夜的;想想陕西面馆大都这样,咱不求精致了.吃完了馍,哨子面也上来了,哨子是大块的豆腐和黄花菜,哎,也不要求地道了.吃吧.吃着吃着,发现了一根头发,把老板叫过来看,老板也不吭气.想想老乡也怪不容易的,这也是陕西饮食的特色之一吧,就把头发检出来继续吃.没吃两吃,又发现头发了,这下真是忍无可忍了,简直是猪食嘛,大喊老板.老板娘过来了,问啥事,我让她看刚才和碗里的头发,她说那你换个面吃吧.翻了两页的菜单,对面我已实在没有兴趣了.刚才的加馍又极其地难吃.发现了煎饼,居然还是一块.老板娘说有辣椒和土豆丝,我说那各来一个吧.想着西安的煎饼,呵呵,口水都有了.煎饼很快上来了,顿时胃口没多少了.什么煎饼,其实就是北京的鸡蛋饼,更搞笑的是里面包裹的是刚才的孜然加馍中的隔夜肉.吃到一半,实在吃不下去了,那个土豆丝煎饼我也一丝兴趣都没了.
叫老板娘过来付帐,她说15.15?我怀疑自己听错了.是15,老板娘说.肉加馍6元,辣椒煎饼6元,土豆丝煎饼3元,一共15块.这个气啊,TNN的摆明了宰人嘛.问她是不是陕西的面馆,老板娘振振有辞地说怎么不是,在福州做了七年了;我说陕西的面馆有这样做生意的嘛,居然被告知,觉得不好就别来.简直要被气晕掉了,真是刁民.
离开西安后,一直对家乡很留恋,所以每到一个地方听到乡音都特感亲切,有陕西面馆也一定要去解下口馋.今天的所遇,真是让人极度地郁闷.因为环境,还是人的本性,如果听到的不是乡音,怕也不会这么郁闷吧.
2006年12月15日
#
摘要: 几年前我发表过一篇如何从CAD移植到ArcGIS的文章,参见http://www.esrichina-bj.cn/library/arcnews14/new14-CAD.htm。但是在实际应用中,我们往往遇到的是CAD和GIS进行集成整合的问题,因此,在本文中,将主要从以下三个方面讨论CAD和GIS的集成解决方案。
阅读全文
2006年11月15日
#
无可质疑,ESRI中国大会一年比一年热闹,从参会人数逐年攀升也不难想象。可能是因为92产品迟迟未见发布的原由,作为ESRI本次年会主打的拳头产品ArcGIS Server似乎显得波澜不惊。从经典的ArcInfo7一直到ArcGIS9系列产品的更新换代,主流IT技术的强大推动力首当其冲,而GIS从桌面应用、局域网一直到WEB应用,无不体现GIS在IT技术包装引领下的快速发展。ArcGIS Server服务器产品的正式推出,则展现了ESRI许久以来的宏伟构想-One world,One GIS,通过WEB达到分布式GIS应用的目的。而GOOGLE、MS、ORACLE等IT巨头在空间信息领域的步步紧逼,也促使ESRI得更加加大研发力度。诚如JACK而言,ESRI产品的定位及目标和GOOGLE等公司是完全不相同的,ESRI更专注于专业应用,而GOOGLE将一如既往在公众应用领域大力拓展。即使GOOGLE的技术不如ESRI,但其人性化的用户界面、“非GIS化”的应用方式也必将促使ESRI关注产品的易用性问题,即使面对专业用户。
ArcGIS92客户端产品似乎没有多少新意(ESRI居然将自定义范围的全图功能也作为一个新亮点来宣传,简直有些糊弄用户的意思:)),而其宣扬的性能和组件可靠性得到大幅度改善的口号也只能等待正式版发布之后,才可以真正见分晓。92真正的主角-ArcGIS SERVER92,本次用户大会上似乎没有得到最终用户的太多关注,更多是应用厂商的了解和学习。从ESRI8产品的发展,一直到JACK对于IT市场的反应,不难看出,ESRI现在所有的产品研发都是紧跟IT主流,依托SOA和COM开发技术将GIS应用扩展到WEB网络,而所有的GIS厂商无可例外,基础组件都是采用C++来完成跨平台发展,而不久的将来,ESRI的所有产品线,不论是ArcIMS,还是ArcPad,底层的GIS核心就只有一个ArcObjects。至此,ESRI将全部完成7版本的全部升级改造。对比下MS的.NET,再回首想想ESRI当年宣称的GNET,是不是有被一统天下的感叹。幸运的是,大公司和小公司的技术鸿沟被迅速的缩小,以后大家不需要在一些底层技术实现上再去费尽脑汁了(当然代价是你掏钱),可以把更多的精力投入到关注的领域内,也就是如何做到应用创新。许多以来,GIS的应用似乎更多体现在了视觉应用上,但是GIS作为一个多源数据的集成平台如何提供更有价值的分析应用,成功案例还是少得可怜。很多政府单位已对此现象有了一些认识,并且通过建立相关的基础框架和规范进行实施,但目前还是处于点点星火。随着WEB应用的进一步发展,GIS上的深入应用也必将成燎原之势。
本次会展中,也了解到了一些很有特点的应用,很多都是老外依托ESRI平台开发的应用工具,因此从某种意义上而言,对于自定义全图功能这样的开发也不见得是ESRI没有发现,而是从商业的角度考虑,更利于带动大量的开发群,以至于更多的用户群。我搭台,你唱戏,戏唱的好不好,有没有新意那是开发商需要思考和关注的事。
此外,对于92,偶个人觉得有一点非常好,那就是技术文档和支持服务的改进。不可否认,ESRI的技术文档是GIS领域的MSDN,此前看到的Engine92PreRelease版开发帮助,其组织更加合理和详尽,开发人员可以迅速上手,这对于ESRI技术的推广和应用也是很好的推动。同样,不论是对国内的GIS厂商,还是二次应用平台开发厂商,这也是需要严肃对待的工作。