假设已经拿到了打包好的瓦片数据并且拷贝到了服务器硬盘目录下,目的是利用arcgis server快速的发布地图服务,而不用再次切片或者构建缓存。
补充另注:千万注意如果arcgis已经汉化,下面图1中应该把第一层Layers文件夹名称修改为“图层”,不然它会又新建一个图层的文件夹然后又开始切片,那我们的目的就无从达到了。血和泪的教训,大家切切注意这一点!!!
背景的话大家可以参考,有些地方大家不一定一样。具体我的项目背景是,从别人服务器上拷贝来了切片好的瓦片数据(数据格式如图1),解压后大概有15个G,因为太大了不能放在C盘,所以放在了D盘Data文件夹下。我们的想法就是直接使用这些数据,不再进行切片和增加缓存。
图1中第二层的Status.gdb文件夹可以直接删除。
Arcgis server版本:10.1
Arcgis server默认缓存路径:C:\arcgisserver\directories\arcgiscache
Arcgis server manager路径:http://localhost:6080/arcgis/manager/login.html(服务器本地打开)
http://[IP-Adress]:6080/arcgis/manager/login.html(外部访问)
在本文中瓦片数据的路径:D:\Data\tile 图1所示即为tile文件夹的结构
1.更改缓存目录,防止占用C盘空间
2.直接利用已有的瓦片数据,防止二次切片浪费时间和机器资源
准备工作:
查看数据文件夹路径,将Conf.xml提前拷贝出来到外面文件夹D:\Data\Conf.xml。
1.打开两个配置文件(con.cdi和Conf.xml)大致查看信息,con.cdi文件描述的是瓦片的空间参考信息,Conf.xml文件描述的除空间参考信息外还有瓦片的详细信息。con.cdi文件部分如下代码段所示。
-20037507.067161843
-20080143.559868
20037507.067161843
20080143.559867892
PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0],AUTHORITY["EPSG",3857]]
-22041257.77387803
-30241100
144148035.89861274
-100000
10000
-100000
10000
0.001
0.001
0.001
true
102100
3857
Conf.xml文件部分如下代码段所示:
-20037508.342787001
20037508.342787001
256
256
96
96
0
591657527.591555
156543.03392800014
19
1128.4971760000001
0.29858214164761665
JPEG
75
false
esriMapCacheStorageModeExploded
128
2.打开ArcMap软件,执行操作:Add Data(菜单栏File --> Add Data --> Add Data),在弹出的选项框中找到并选择D:\Data\data\Layers加载瓦片数据。若数据能够正常加载,说明没什么问题,如果不行的话,根据报错解决问题或者查看步骤一中的两个文件有没有问题。完成后移除所有图层。
3.步骤二没问题后,打开ArcCatalog找个文件夹创建一个空的shapefile,操作如下:File --> New --> Shapefile。在弹出的对话框中,Feature Type选择Polygon,点击Edit按钮修改空间参考(如图2所示),这里需要根据步骤一中con.xml文件的参考系统来选择坐标系统和投影系统,本项目中的参考系统选择如图3所示。完成后点击ok就创建了一个空的名为testtile的shapefile了。注意此时shapefile的文件名称即为之后发布服务的图层名称,大家根据项目需要填写名称。
4.在ArcMap中同步骤二执行操作Add Data,找到并打开步骤三中创建的shapefile,打开后点击保存按钮,将其保存为.mxd文件。文件命名为tile(此处的名字就是之后发布的瓦片服务的名字,但是要注意这个名字一定要和自己数据文件夹的名字保持一致,这样才能找到自己的切片文件而不会再次进行切片。所以我建议在所有需要命名的地方全都使用数据文件夹的名字)。完成后不要移除图层或者关闭项目,一会还有用。
5.进入arcgis server manager进行设置(网址在文章最上面),点击菜单栏“站点”,选择“GIS服务器”、“目录”,点击“添加目录”,在弹出对话框中,名称随便起一个,“类型”修改为缓存,位置写数据文件的上级目录,在本项目中为D:\Data,点击添加按钮。如下图图4所示。
6.发布地图
在第四步ArcMap的基础上进行操作,发布地图服务,操作如下,点击菜单栏File --> Share As --> Service,在弹出对话框中选择"Publish a Service"后点击下一步,这是会弹出对话框如图5所示,默认选择下一步。
在如图6所示的弹出对话框中,默认使用root文件夹就可以,因为这里是发布服务到某个文件夹,而不是设置缓存的位置,所以这里选择root目录是不会占用太多C盘空间的。
在上图中点击continue后弹出Service Editor对话框,如图7所示,我们在此对话框中完成其他设置。
在此对话框中我们点击左侧的Caching目录,对话框内容如图8所示,我们在此界面中设置缓存。
在Caching界面中,我们首先设置绘制服务的方式,从"Dynamically from the data"更改为"Using tiles from a cache",即从数据中动态绘制更改为直接使用缓存中的瓦片。然后"Tiling Scheme"就会变为可选了,我们此时将其从"ArcGIS Online/Bing Maps/Google Maps"更改为“A tiling scheme file”,即由这三家的更改为使用自己的切片方案。选择后会弹出一个"Load Tiling Scheme"的对话框要求我们选择自己的切片方案,这是我们选择之前提前拷贝出来的Conf.xml文件,在本项目中地址为D:\Data\Conf.xml。选择切片方案后可以发现下面的"Levels of Detail"界面变化了,说明这是加载了我们自己的切片方案。这时我们可以自由选择要发布的层级。然后修改最下方的瓦片创立方式,由"Build cache automatically when the service is publish"更改为“manually”,即由自动到手动,这一个地方非常关键,因为我们已有瓦片,如果再自动的话就会浪费资源,所以一定要选择手动。修改后的界面如图9所示。
下一步进入左侧caching目录下的Advanced Settings子目录,界面如图10所示。
在这里,我们修改Cache directory目录由原来的默认目录到我们再ArcGIS Manager中建立的缓存目录D:\Data,如图11所示。
在之后我们点击顶部的Analyze分析按钮,若分析未报错,则可以publish服务了。