ArcGIS Server中使用多个地图服务时的注意事项

        作为网络应用中的地图数据,通常有不同的来源,或者用途不同,经常被组织并发布成不同的服务,在一个应用程序中使用多个地图服务是常有的事情。
        如果一个web app中使用了多个地图服务,那么就需要将其中的一个服务设置成为Map控件的Primary Map Resource,之后,该服务变决定了整个地图的coordinate system和zoom levels。比如说有一个服务world,使用WGS84坐标系,做了4个比例尺的cache,将它设置成了Primary Map Resource。以下的情况会发生:
1、如果另有一个使用Xi’an 1980坐标系的名为China的dynamic service要和world叠加:
        web app的zoom level只有4级,与world服务一致;在呈现时,world的数据是去取cache的,而China的数据是在服务器上经过动态投影,然后与world叠加起来;

2、如果另有一个使用Xi’an 1980坐标系的名为China的cached service(做了3级缓存,其中有两个比例尺与world中的两个比例尺一致)要和world叠加:
        如下图:

        A是China服务,B是world服务。那么web app的zoom level还是4级,这是world决定的。呈现时,world服务是取cache,而China服务不管是哪级比例尺,都是经过服务器动态投影成WGS84坐标系后,动态生成图片进行叠加(到这里,China服务的所有cache已经是白做了);而且,China只能在比例尺缩放到2、3、4时看到,这是因为,比例尺1 world服务没有,所以web app中没有,而比例尺5超过了China cache时的最大比例尺,即使是动态生成图片也不会创建。对于cached service,因为比例尺级别不符,动态生成图片显示时,超过cache时最大、最小比例尺级别的比例尺是不会显示的;

3、同2类似,cached service,还是3个级别,不过这回China的坐标系也是WGS84:
        那么在缩放到比例尺2、4的时候,两个服务都是取cache;比例尺3的时候,world取cache,China动态创建,不过不用动态投影了;比例尺5的时候China不可见;

4、China在做cache时,与world比例尺完全相同,坐标系相同:
        那么,这种情况是最理想的,呈现数据时均取cache,速度最快。

        所以,如果要将自己的数据与ArcGIS online的数据叠加使用,那么:1、应该选择后者为Primary Map Resource(有一种情况下,可以将自己的服务作为Primary Map Resource,就是自己数据的坐标系与ArcGIS Online或Google Map的坐标系相同,但cache的比例尺级别只是它们其中一个子集。);2、对于自己数据的地图文档,在data frame中将坐标系选择成Predefined > Geographic Coordinate Systems > World > WGS 1984,ArcMap会将你的数据动态投影到该坐标系下;3、做cache的时候选择load an existing tiling scheme from ArcGIS Online Services,这样能保证比例尺级别与其相同,ArcGIS Online默认有十几级cache,对于自己的数据,可以创建其中的几级,但可能出现的情况请参照前面的分析。对于要和Google Map叠加的数据,步骤也是上面的1、2、3,注意在2中要选择:Predefined > Projected Coordinate Systems > World > WGS 1984 Web Mercator。
        如果在步骤3中,点击load an existing tiling scheme时出错,那很有可能是你跳过了步骤2。

2 thoughts on “ArcGIS Server中使用多个地图服务时的注意事项”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>