ArcGIS Server發佈本地瓦片

本文的適用情況:

假設已經拿到了打包好的瓦片數據並且拷貝到了服務器硬盤目錄下,目的是利用arcgis server快速的發佈地圖服務,而不用再次切片或者構建緩存。

補充另注:千萬注意如果arcgis已經漢化,下面圖1中應該把第一層Layers文件夾名稱修改爲“圖層”,不然它會又新建一個圖層的文件夾然後又開始切片,那我們的目的就無從達到了。血和淚的教訓,大家切切注意這一點!!!

背景介紹:

背景的話大家可以參考,有些地方大家不一定一樣。具體我的項目背景是,從別人服務器上拷貝來了切片好的瓦片數據(數據格式如圖1),解壓後大概有15個G,因爲太大了不能放在C盤,所以放在了D盤Data文件夾下。我們的想法就是直接使用這些數據,不再進行切片和增加緩存。

圖1中第二層的Status.gdb文件夾可以直接刪除。

圖1:文件夾結構

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的文件名稱即爲之後發佈服務的圖層名稱,大家根據項目需要填寫名稱。

圖2:完成輸入後點擊Edit
圖3:由參考信息選擇該座標系統

4.在ArcMap中同步驟二執行操作Add Data,找到並打開步驟三中創建的shapefile,打開後點擊保存按鈕,將其保存爲.mxd文件。文件命名爲tile(此處的名字就是之後發佈的瓦片服務的名字,但是要注意這個名字一定要和自己數據文件夾的名字保持一致,這樣才能找到自己的切片文件而不會再次進行切片。所以我建議在所有需要命名的地方全都使用數據文件夾的名字)。完成後不要移除圖層或者關閉項目,一會還有用。

5.進入arcgis server manager進行設置(網址在文章最上面),點擊菜單欄“站點”,選擇“GIS服務器”、“目錄”,點擊“添加目錄”,在彈出對話框中,名稱隨便起一個,“類型”修改爲緩存,位置寫數據文件的上級目錄,在本項目中爲D:\Data,點擊添加按鈕。如下圖圖4所示。

圖4:添加緩存目錄

6.發佈地圖

在第四步ArcMap的基礎上進行操作,發佈地圖服務,操作如下,點擊菜單欄File --> Share As --> Service,在彈出對話框中選擇"Publish a Service"後點擊下一步,這是會彈出對話框如圖5所示,默認選擇下一步。

圖5:選擇連接並填寫服務名稱

在如圖6所示的彈出對話框中,默認使用root文件夾就可以,因爲這裏是發佈服務到某個文件夾,而不是設置緩存的位置,所以這裏選擇root目錄是不會佔用太多C盤空間的。

圖6:選擇發佈服務到文件夾

在上圖中點擊continue後彈出Service Editor對話框,如圖7所示,我們在此對話框中完成其他設置。

圖7:Service Editor對話框

在此對話框中我們點擊左側的Caching目錄,對話框內容如圖8所示,我們在此界面中設置緩存。

圖8:Caching界面

在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所示。

圖9:修改後的界面

下一步進入左側caching目錄下的Advanced Settings子目錄,界面如圖10所示。

圖10:Caching Advanced Settings

在這裏,我們修改Cache directory目錄由原來的默認目錄到我們再ArcGIS Manager中建立的緩存目錄D:\Data,如圖11所示。

圖11:修改緩存目錄

在之後我們點擊頂部的Analyze分析按鈕,若分析未報錯,則可以publish服務了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章