Monthly Archives: February 2010

ArcGIS API for Silverlight中专题地图的实现浅析

        专题地图是突出表现特定主题或者属性的地图。常见专题地图类型有唯一值渲染,分类渲染,柱状图,饼状图,点密度图等。这些在ArcMap里,图层属性的Symbology标签中已有很好的诠释。
        三种客户端API中目前为我们提供了现成的UniqueValueRenderer和ClassBreakRenderer功能,但有些食之无味,弃之可 惜。原因有二:1、领导常常并不认可这两种简约而不简单的专题图,因为他们没有看到复杂的圆饼和长柱;2、API中提供的两种专题图利用 GraphicsLayer自己实现也比较简单。这次以Silverlight API为例,探讨一下传统专题图实现的可能性。
        要呈现专题图,有两个步骤:
        1、绘制chart,比如饼图和柱图。有以下完成途径:Google Chart APISilverlight Toolkit中的Chart功能(开源)Visifire(开源)。前者使用最简单,后者效果最好,暂时抛弃中庸的。
        2、将绘制好的图形显示出来。因为是与地图服务无关的数据,所以可用GraphicsLayer来完成,而且可以利用其中的Cluster功能,推荐使用此办法。此时需要将chart定制为Graphic的Symbol;也可以利用ElementLayer来显示,此时需要将chart定制为UIElement。
        通过三个例子来说明,专题要素是我国人口总数、城市人口数、非城市人口数。
        1、选用GraphicsLayer,利用cluster功能,通过google api绘制静态chart。大概步骤:通过继承GraphicsCluster基类实现cluster功能,通过形如:http://chart.apis.google.com/chart?chs=100×100&chd=t:60,40&cht=p3的请求利用google chart tools绘制chart,通过PictureMarkerSymbol承载chart,交给Graphic显示。效果如图:

        补充说明:1、通过google chart创建的静态图形没办法“说话”,不过可以利用GraphicsLayer的Maptip来实现简单交互;2、google chart目前还没办法创建背景透明的chart,Silverlight目前也不能去除位图背景色,但可以通过服务器上的GDI+功能来使背景透明,然后显示。
        2、选用GraphicsLayer,利用cluster功能,通过visifire绘制可交互的chart。大概步骤:通过继承 GraphicsCluster基类实现cluster功能,通过继承MarkerSymbol来允许visifire产生的chart作为Symbol 赋给Graphic,最后显示Graphic。效果如图:

        补充说明:visifire目前暂不支持databinding,所以利用改变MarkerSymbol的ControlTemplate办法无法动态修改chart数据。
        3、选用ElementLayer,通过visifire绘制可交互的chart。大概步骤:根据专题要素动态创建可交互的chart,利用Graphic的Geometry来定位。效果如图:

        补充说明:可根据比例尺处理chart的详细程度,比如小比例尺时尽量精简chart,避免互相压盖,大比例尺时显示详细的chart信息;必要时可自己实现cluster算法。

ESRI即将推出ArcGIS Explorer在线应用

        八卦地址:New releases of ArcGIS Explorer and ArcGIS Explorer Online at FedUC
        ESRI今年的联邦用户大会又召开了,我来给大家当个场外记者。从上面的blog可以看出几点重要新闻:
1、ArcGIS Explorer build 1200即将推出。底图中,微软饼地图可以免费使用了,不需要额外的许可。我相信目前有不少无法直接提供许可但又想尝鲜的用户会认为ArcGIS中饼的底图是个鸡肋;猜想,桌面产品中以后是不是也可以直接免费使用饼地图了呢?
2、基于Silverlight的ArcGIS Explorer Online即将推出。简而言之,就是ArcGIS Explorer的在线版本。AutoDesk有在线AutoCAD(基于Flex),猜想,ESRI以后会不会有在线的ArcMap呢?至少trial version是个好主意。
        btw,既然说到了云,就跟大家推荐一下谷歌音乐的播放器,我是今天才发现它比较好用,可以用微软的live账号登陆,完全可以成为一个在线的千千静听~

用google sync管好你的联系人

        在阿帆的唆使下完成了一项壮举。
        现在人们不怕丢手机,怕的是丢了上面的联系人。虽说大部分手机都能利用软件把联系人备份到电脑上,但如果电脑不在跟前或者硬盘坏了。。。如果你经常使用gmail,还有着一个不是太旧的手机,那google sync刚好适合你。
        以现在使用的windows mobile手机为例,可以按照以下步骤完成手机联系人和gmail联系人的同步:

    1. 打开ActiveSync;
    2. 点击“设置您的设备与之同步”;
    3. 填写gmail地址,并把“尝试自动检测Exchange Server”选项去掉,下一步;
    4. 服务器地址填写“m.google.com”,勾选ssl,下一步;
    5. 用户名填写完整gmail地址,填写密码,域留空,下一步;
    6. 如果之需要同步联系人,则只勾选“联系人”,完成。

        以上步骤是添加同步服务器,进行一次即可。联网之后一会就可完成同步工作。手机联系人会全部添加到gmail的通讯录中,根据自己需要可以与邮件联系人进行合并,整理完成后,再次与手机进行同步,345个联系人就大功告成了。这下手机的联系人中不仅有了电子邮件地址,连我gmail账户里的头像都同步下来了。
        现在google sync支持iphone,windows,nokia,blackberry手机平台,所以即使以后换手机,也可以快速同步联系人了。
        ps:同步时会将上次同步后改动一方的内容同步到未改动的一方。比如同步后,将手机上的联系人全部删除,同步,那么gmail里的联系人也会被删除;
        pps:如果想要重新从gmail上获得所有联系人,则需要:1、删除手机上所有联系人;2、删除m.google.com的同步服务器;3、重新建立m.google.com的同步服务器;4、同步;
        ppps:进行实验前强烈建议首先分别备份本地和gmail上的联系人,可别怪我没提醒哟。

moving moving moving

        http://blog.newnaw.com

        终于有了网内的blog地址,这下大家看起来就更方便了。感谢鲶总提供空间,提供wordpress,提供php超强力技术支持,虽然最后一条他准备作为保留的收费项目。把blogger上的存档搬过来了(4步:blogger导出,这里转换,wordpress导入,这里同步丢失的帖子),一切顺利。但之前的图片和视频依然是看不了的,聊胜于无吧。

        关于原先的blog地址,http://diligentpig.blogspot.com,仍然会继续更新,两个地址内容保持同步,需要订阅的朋友可以自由选择。

        今天立春。喜欢冬天的朋友也不用伤心,因为春天来了,冬天还会远吗?喜欢夏天和秋天的人自然也是皆大欢喜了。btw,这样子时间是不是过得有些快了。。。努力用你那太宽的指缝抓住它的尾巴吧:)