本文的適用情況:
假設已經拿到了打包好的瓦片數據並且拷貝到了服務器硬盤目錄下,目的是利用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文件部分如下代碼段所示。
<?xml version="1.0" encoding="utf-8"?>
<EnvelopeN xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.1" xsi:type="typens:EnvelopeN">
<XMin>-20037507.067161843</XMin>
<YMin>-20080143.559868</YMin>
<XMax>20037507.067161843</XMax>
<YMax>20080143.559867892</YMax>
<SpatialReference xsi:type="typens:ProjectedCoordinateSystem">
<WKT>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]]</WKT>
<XOrigin>-22041257.77387803</XOrigin>
<YOrigin>-30241100</YOrigin>
<XYScale>144148035.89861274</XYScale>
<ZOrigin>-100000</ZOrigin>
<ZScale>10000</ZScale>
<MOrigin>-100000</MOrigin>
<MScale>10000</MScale>
<XYTolerance>0.001</XYTolerance>
<ZTolerance>0.001</ZTolerance>
<MTolerance>0.001</MTolerance>
<HighPrecision>true</HighPrecision>
<WKID>102100</WKID>
<LatestWKID>3857</LatestWKID>
</SpatialReference>
</EnvelopeN>
Conf.xml文件部分如下代碼段所示:
<?xml version="1.0" encoding="utf-8"?>
<CacheInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.1" xsi:type="typens:CacheInfo">
<TileCacheInfo xsi:type="typens:TileCacheInfo">
<SpatialReference xsi:type="typens:ProjectedCoordinateSystem">
<!-- 中間是空間參考信息,與con.cdi文件中相同,爲了使文章簡潔,這裏就不展示了 -->
</SpatialReference>
<TileOrigin xsi:type="typens:PointN">
<X>-20037508.342787001</X>
<Y>20037508.342787001</Y>
</TileOrigin>
<TileCols>256</TileCols>
<TileRows>256</TileRows>
<DPI>96</DPI>
<PreciseDPI>96</PreciseDPI>
<LODInfos xsi:type="typens:ArrayOfLODInfo">
<LODInfo xsi:type="typens:LODInfo">
<LevelID>0</LevelID>
<Scale>591657527.591555</Scale>
<Resolution>156543.03392800014</Resolution>
</LODInfo>
<!-- 中間有其他層的信息,爲了使文章簡潔,這裏就不展示了 -->
<LODInfo xsi:type="typens:LODInfo">
<LevelID>19</LevelID>
<Scale>1128.4971760000001</Scale>
<Resolution>0.29858214164761665</Resolution>
</LODInfo>
</LODInfos>
</TileCacheInfo>
<TileImageInfo xsi:type="typens:TileImageInfo">
<CacheTileFormat>JPEG</CacheTileFormat>
<CompressionQuality>75</CompressionQuality>
<Antialiasing>false</Antialiasing>
</TileImageInfo>
<CacheStorageInfo xsi:type="typens:CacheStorageInfo">
<StorageFormat>esriMapCacheStorageModeExploded</StorageFormat>
<PacketSize>128</PacketSize>
</CacheStorageInfo>
</CacheInfo>
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服務了。