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中使用了大大提高了数据的灵活性。
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中使用了大大提高了数据的灵活性。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/04/b2b831b1b2acc53b0f1cfa11c3e0de44.jpg)
相关文章推荐
- ArcGIS.Server.9.2.DotNet自带例子分析(六、一)
- ArcGIS.Server.9.2.DotNet 查询地图元素进行定位显示
- ArcGIS.Server.9.2.DotNet自带例子分析(八、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(五、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(七、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(一、二)
- ArcGIS.Server.9.2.DotNet自带例子分析(一、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(一、二)
- ArcGIS.Server.9.2.DotNet自带例子分析(一、五)
- ArcGIS.Server.9.2.DotNet自带例子分析(二、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(六、二)
- ArcGIS.Server.9.2.DotNet自带例子分析(一、三)
- ArcGIS.Server.9.2.DotNet自带例子分析(三、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(四、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(一、一)
- ArcGIS.Server.9.2.DotNet自带例子分析(一、三)
- ArcGIS.Server.9.2.DotNet实现在线编辑EditorTask使用(自带例子 十、二)
- ArcGIS.Server.9.2.DotNet实现EditorTask功能扩展(自带例子 十、三)
- ArcGIS.Server.9.2.DotNet使用Google Maps卫星图片数据
- Arcgis Server javascript— ExtJS显示查询数据