您的位置:首页 > 其它

ArcGIS.Server.9.2.DotNet在地图中显示xml数据(自带例子 九、一)

2008-08-31 13:35 615 查看
目的:

1.arcgis server9.2 ADF实现自定义数据源,在地图中显示自定义的xml数据。

准备工作:

1.用ArcGis Server Manager或者ArcCatalog发布一个叫usa的Map Service,并且把这个Service启动起来。

2.参考DeveloperKit\SamplesNET\Server\Web_Applications目录下的Common_CustomDataSourceCSharp.zip。

开始:

1.数据显示实现说明:Map控件->MapResourceManager控件->数据源,MapResourceManager控件选择不同的数据源(GISDataSource)加入应用成为Resource,这样Map控件可以通过Resource与数据源进行交互,一个GISDataSource可以有多个Resource,常用的是MapResource 和 GeocodeResource。一个Resource可以有多个Functionatily,通常分为common API和special API两种,data source 决定了resource能做什么(能实现哪些功能的接口或functionality)。这样通过上面的描述就很容易明白一个自定义的xml数据要在Map控件中显示必须先能加入到MapResourceManager控件中成为Resource。

2.在MapResourceManager的MapResourcesItem集合编辑器的Map Resource Definition Editor工具中ESRI已经内置了很多的DataSource类型,在Type选项中有GraphicsLayer、ArcGIS Server Local、OGC (WMS) Service、ArcIMS、ArcGIS Server Internet、ArcWeb Services这几种类型可以选择,现在要显示自定义的xml数据源,就需要为添加新的一个DataSource类型来实现。

3.在MapResourcesItem集合编辑器的Map Resource Definition Editor工具中DataSource类型,是通过一个config的配置文件来实现的,在ArcGIS.Server.9.2.DotNet中这些配置文件放置在ArcGisServer安装目录的DotNet文件内,这里能找到ArcGIS Server Local、GraphicsLayer、ArcIMS等所有DataSource类型的配置文件,可以用记事本打这些文件学习一下它是如何构成的。在这里DotNet文件内添加一个名为ESRI.ArcGIS.ADF.Web.DataSources.REXMLData.config的配置文件用来给我们的工程用,具体的内容和说明如下:

<?xml version="1.0" encoding="utf-8" ?>

2<DataSources>

3 <!--Data Source的Type名称-->

4 <DataSource name="REXML Data">

5 <!--Data Source的定义-->

6 <Implementation assembly="REXMLDataSource" class="REXMLDataSource.GISDataSource"></Implementation>

7 <!--Identity属性编辑器不可用-->

8 <IdentityEditorForm assembly="ESRI.ArcGIS.ADF.Web.UI.WebControls" class="ESRI.ArcGIS.ADF.Web.UI.WebControls.Design.UnusedPropertyEditor"></IdentityEditorForm>

9 <!--Data Source属性编辑器定义-->

10 <DefinitionEditorForm assembly="" class=""></DefinitionEditorForm>

11 <Resource type="Map">

12 <DefinitionEditorForm assembly="" class=""></DefinitionEditorForm>

13 <!--Resource属性-->

14 <Implementation assembly="REXMLDataSource" class="REXMLDataSource.MapResource">

15 </Implementation>

16 </Resource>

17 </DataSource>

18</DataSources>
4.有了上面的大概的思路后就开始动手具体功能实现,新建名为CustomDataSource的ASP.NET Web应用程序,然后添加一个Default_REXMLData.aspx页面用来具体功能的展示。

5.在CustomDataSource的解决方案中在添加一个名为REXMLDataSource的类库工程,用来实现自定义DataSource类型和MapResource的功能。同时在CustomDataSource的ASP.NET Web应用程序中添加对这个REXMLDataSource的类库工程的引用。

6.从上面ESRI.ArcGIS.ADF.Web.DataSources.REXMLData.config配置文件看,我们需要实现REXMLDataSource.GISDataSource、REXMLDataSource.MapResource这2个类。

7.新建GISDataSource.cs文件,具体的代码和说明如下:

1namespace REXMLDataSource

2
8.新建MapResource.cs文件,具体的代码和说明如下:
1namespace REXMLDataSource

2

9.MapResource类的几个主要方法执行顺序帮助理解:MapResource()->LoadState()->Initialize()->SupportsFunctionality()->CreateFunctionality()->SupportsFunctionality()->SaveState()->Dispose()

10.在MapResource类相关的MapInformation、MapFunctionality、MapTocFunctionality、QueryFunctionality4个类的实现可以参考Common_CustomDataSourceCSharp.zip样例,代码比较多比较简单这里就不详细说了。

11.xml数据内容如下:

<?xml version="1.0" encoding="utf-8" ?>

2<REXML version="1.0">

3 <LAYER id="1" name="mypoints">

4 <SIMPLERENDERER>

5 <SIMPLEMARKERSYMBOL color="0,255,0" type="star" width="16" outlinecolor="0,0,0"/>

6 </SIMPLERENDERER>

7 <FEATURES>

8 <FEATURE featureid="1">

9 <FIELD name="SHAPE" type="-98" >

10 <FIELDVALUE>

11 <POINT x="-117.1" y="34.0" />

12 </FIELDVALUE>

13 </FIELD>

14 <FIELD name="Status" type="12">

15 <FIELDVALUE valuestring="Start Trip" />

16 </FIELD>

17 </FEATURE>

18 <FEATURE featureid="2">

19 <FIELD name="SHAPE" type="-98" >

20 <FIELDVALUE>

21 <POINT x="-120.6" y="39.5" />

22 </FIELDVALUE>

23 </FIELD>

24 <FIELD name="Status" type="12">

25 <FIELDVALUE valuestring="Mid Trip" />

26 </FIELD>

27 </FEATURE>

28 <FEATURE featureid="3">

29 <FIELD name="SHAPE" type="-98" >

30 <FIELDVALUE>

31 <POINT x="-110.5" y="34.7" />

32 </FIELDVALUE>

33 </FIELD>

34 <FIELD name="Status" type="12">

35 <FIELDVALUE valuestring="End Trip" />

36 </FIELD>

37 </FEATURE>

38 <FEATURE featureid="4">

39 <FIELD name="SHAPE" type="-98" >

40 <FIELDVALUE>

41 <POINT x="-120.5" y="44.7" />

42 </FIELDVALUE>

43 </FIELD>

44 <FIELD name="Status" type="12">

45 <FIELDVALUE valuestring="End Trip" />

46 </FIELD>

47 </FEATURE>

48 </FEATURES>

49 </LAYER>

50</REXML>

51
12.这样就完成了一个Data Srouce以及Reaource的定义,接下在我们在页面上加载显示这个数据源。

13.在CustomDataSource的ASP.NET Web应用程序的Default_REXMLData.aspx页面中添加Map1、MapResourceManager1、Toc13个控件,然后做相应的设置,把上发布的usa的Map Service添加到MapResourceManager1中设置为ArcGIS Server Internet类型,名称为Server Resource,具体设置可以参考前面的文章。

14.接下来在MapResourceManager1中在Server Resource上面在新增加名为REXML Resource,在弹出的Map Resource Definition Editor中Type:选择REXML Data就是上面添加到DotNet文件内的ESRI.ArcGIS.ADF.Web.DataSources.REXMLData.config中定义的名字,在Data Source:输入上面的那个xml的地址,如:D:\rexml_point_wgs84.xml,然后确定就完成了设置。这里的Data Source为了方便是输入的方式了,最好的做法可以参考Common_CustomDataSourceCSharp.zip样例为它做一个xml文件选择界面,具体的参考CustomDataSource_CSharp\REXMLDataSource_CSharp\Design\DataSourceDefinitionEditorFormREXML.cs,是一个Winform的选择节目,只有在config文件配置一下,就可以在 Map Resource Definition Editor中调用自己定制的编辑器。

15.运行查看效果,可以看到在usa的地图上有4个绿色的五星,这4个5星就是从xml里定义的点。

16.通过自己实现GISData Source、MapResource、MapFunctionality的定义和实现就对ADF的WebControls、GISData Source、MapResource、MapFunctionality、具体的地图数据 这几者之间的关系就非常容易理解了,这样就让一些特殊的数据格也可以在ADF中使用了大大提高了数据的灵活性。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: