dunnice
路人甲
路人甲
  • 注册日期2011-10-09
  • 发帖数1
  • QQ
  • 铜币105枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3018回复:1

[求助]请教ArcGis中密度图的实现方式

楼主#
更多 发布于:2011-10-09 16:38
<p>初学ArcGis,需要用Silverlight实现密度图,各位高手有什么好的建议?</p>
<p> </p>
<p>谢谢了</p>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2011-10-10 13:24
<p><strong>ArcGIS API for Silverlight中专题地图的实现浅析</strong></p><p><strong></strong> </p><p>专题地图是突出表现特定主题或者属性的地图。常见专题地图类型有唯一值渲染,分类渲染,柱状图,饼状图,点密度图等。这些在ArcMap里,图层属性的Symbology标签中已有很好的诠释。<br/>三种客户端API中目前为我们提供了现成的UniqueValueRenderer和ClassBreakRenderer功能,但有些食之无味,弃之可惜。原因有二:1、领导常常并不认可这两种简约而不简单的专题图,因为他们没有看到复杂的圆饼和长柱;2、API中提供的两种专题图利用GraphicsLayer自己实现也比较简单。这次以Silverlight API为例,探讨一下传统专题图实现的可能性。<br/>要呈现专题图,有两个步骤:<br/>1、绘制chart,比如饼图和柱图。有以下完成途径:<a href="http://code.google.com/intl/pt-BR/apis/charttools/index.html" target="_blank"><font color="#000066">Google Chart API</font></a>,<a href="http://silverlight.net/content/samples/sl3/toolkitcontrolsamples/run/default.html" target="_blank"><font color="#000066">Silverlight Toolkit中的Chart功能(开源)</font></a>,<a href="http://visifire.com/" target="_blank"><font color="#000066">Visifire(开源)</font></a>。前者使用最简单,后者效果最好,暂时抛弃中庸的。<br/>2、将绘制好的图形显示出来。因为是与地图服务无关的数据,所以可用GraphicsLayer来完成,而且可以利用其中的<a href="http://resources.esri.com/help/9.3/arcgisserver/apis/silverlight/samples/start.htm#SimpleClusterer" target="_blank"><font color="#000066">Cluster</font></a>功能,推荐使用此办法。此时需要将chart定制为Graphic的Symbol;也可以利用ElementLayer来显示,此时需要将chart定制为UIElement。<br/>通过三个例子来说明,专题要素是我国人口总数、城市人口数、非城市人口数。<br/>1、选用GraphicsLayer,利用cluster功能,通过google api绘制静态chart。大概步骤:通过继承GraphicsCluster基类实现cluster功能,通过形如:<a href="http://chart.apis.google.com/chart?chs=100x100;chd=t:60,40;cht=p3" target="_blank"><font color="#000066">http://chart.apis.google.com/chart?chs=100x100;chd=t:60,40;cht=p3</font></a>的请求利用google chart tools绘制chart,通过PictureMarkerSymbol承载chart,交给Graphic显示。效果如图:<br/><br/><a href="http://bbs.esrichina-bj.cn/ESRI/attachment.php?aid=102647" target="_blank"><img border="0" src="http://bbs.esrichina-bj.cn/ESRI/attachments/forumid_51/10022421287d472d11e8eb8085.jpg"/><br/></a>补充说明:1、通过google chart创建的静态图形没办法“说话”,不过可以利用GraphicsLayer的Maptip来实现简单交互;2、google chart目前还没办法创建背景透明的chart,Silverlight目前也不能去除位图背景色,但可以通过服务器上的GDI+功能来使背景透明,然后显示。<br/>2、选用GraphicsLayer,利用cluster功能,通过visifire绘制可交互的chart。大概步骤:通过继承GraphicsCluster基类实现cluster功能,通过继承MarkerSymbol来允许visifire产生的chart作为Symbol赋给Graphic,最后显示Graphic。效果如图:<br/><br/><a href="http://bbs.esrichina-bj.cn/ESRI/attachment.php?aid=102648" target="_blank"><img border="0" src="http://bbs.esrichina-bj.cn/ESRI/attachments/forumid_51/1002242128eea1ba7af83635da.jpg"/><br/></a>补充说明:visifire目前暂不支持databinding,所以利用改变MarkerSymbol的ControlTemplate办法无法动态修改chart数据。<br/>3、选用ElementLayer,通过visifire绘制可交互的chart。大概步骤:根据专题要素动态创建可交互的chart,利用Graphic的Symbol来定位。效果如图:<br/><br/><a href="http://bbs.esrichina-bj.cn/ESRI/attachment.php?aid=102649" target="_blank"><img border="0" src="http://bbs.esrichina-bj.cn/ESRI/attachments/forumid_51/100224212898f6f8e5f2f25296.jpg"/><br/></a>补充说明:可根据比例尺处理chart的详细程度,比如小比例尺时尽量精简chart,避免互相压盖,大比例尺时显示详细的chart信息;必要时可自己实现cluster算法。     <br/></p>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部