[poll id=」1″]
2014.3.8更新v3.1
~在線切片轉換爲MBTiles時,增長RecreateEmptyCache模式。當你想繼續上次未完成的任務或打算合併多個級別/範圍的切片時,RecreateEmptyCache模式會很是適合;
~在CustomOnlineMaps.xml中自定義數據源時,增長Multi-Layer模式,好比可將標註和影像兩個數據源融合爲一個服務。具體用法請參考自帶示例;
~修復已知Bug;
2013.5.10更新v3.0
~添加以Windows服務方式運行功能;
~發佈的緩存服務增長對OGC WMTS規範的支持。詳見這裏;
~數據源增長對OGC WMS服務的支持。詳見這裏;
~數據源增長對高德本地緩存文件的支持。詳見這裏;
~預覽界面中可顯示切片來源(動態生成/文件緩存/內存緩存,以不一樣底色區分);
~添加日誌功能;
~修復已知bug;
2012.12.10更新v2.0.7
~爲影像數據源增長本地緩存(.cache文件)功能。詳見這裏;
~在線地圖轉換/下載到MBTiles格式時,增長按Shapefile文件範圍下載功能。詳見這裏;
~爲轉換後的MBTiles文件增長了」壓縮」選項,某些狀況下可大幅減少MBTiles文件體積。詳見這裏;
2012.11.14更新v2.0.6:
~Portable Basemap Server已在CodePlex上開源,LGPL協議;
~添加ArcGIS Cache/在線地圖數據源到MBTiles格式(.mbtiles)的轉換/下載工具。詳見這裏;
~爲在線地圖數據源添加本地緩存功能。詳見這裏;
~改進ArcGIS Tile Package(.tpk)格式文件的讀取速度;
~修復已知bug;
2012.4.24更新v2.0.5:
~爲數據源類型爲ArcGISDynamicMapService的PBS服務增長附加參數設置,好比layers,layerDefs等,達到控制圖層可見性,按屬性過濾圖層內容等目的。詳見這裏;
~REST Admin API爲ArcGISDynamicMapService數據源增長changeParams操做,以動態修改附加參數。詳見這裏。詳見這裏;
~數據源增長對ArcGISTiledMapService的支持;
~增長自定義在線地圖功能。可經過修改CustomOnlineMaps.xml文件內容,自行增刪在線地圖數據源(數據源須採用Google Maps/Bing Maps/ArcGIS Online地圖的緩存策略);
~增長自動保存/載入上次配置的功能;
~爲系統托盤圖標增長右鍵菜單;
~修復已知bug;
2012.1.9更新v2.0.4:
~REST Admin API增長enable/disable/clearByService三個操做,分別用於開啓/關閉內存緩存功能,清除指定服務的內存緩存數據。詳見這裏;
~界面改進:增長中文語言界面;支持最小化到系統托盤;地圖預覽加入顯示切片網格功能;
~修復一些已知Bug;
2011.11.21更新v2.0.3:
~增長REST Admin API。任何程序可經過發送HTTP(POST)請求,對PBS的服務進行管理。新增操做:添加服務(addService),刪除服務(deleteService)。詳見這裏;
~底圖風格化選項增長泛黃(tint)與浮雕(embossed)兩種效果。詳見這裏;
2011.11.08更新v2.0.2:
~數據源增長對ArcGIS Tile Package格式的支持。Tile Package是ArcGIS 10.1推出的便於分發,可將地圖服務緩存文件(compact或exploded)打包成單一文件的文件格式。詳見這裏;
~增長對單一服務的清除內存緩存功能;
2011.11.04更新v2.0.1:
~增長對單個服務是否啓用內存緩存的控制;
~增長輸出動態生成切片數量和內存緩存切片數量的信息;
~界面微調;
~修復bug:32位系統上沒法啓用內存緩存功能;
~修復bug:移動PBS文件夾後,啓用內存緩存功能時可能報錯;
~修復bug:對服務啓用反色(Invert)視覺效果後,PBS內存佔用過大;
~修復bug:在沒有網絡鏈接的狀況下,雙擊預覽沒有初始範圍的數據源時(第三方離線緩存或影像數據源),程序報錯;
2011.10.31更新v2.0:javascript
~增長內存緩存功能。可將已生成過的切片數據自動緩存在機器內存中,以後可從內存中直接返回該切片,而不是動態生成。啓用內存緩存功能後,可顯著提升PBS性能,尤爲對於動態緩存地圖服務功能(影像數據或動態地圖服務做爲數據源),在幾乎不佔用cpu資源的狀況下,支持的併發數可提升數十倍。該功能利用Memcached完成,它是一個免費的高性能分佈式緩存系統(http://memcached.org/)。詳細介紹;
2011.10.25更新v1.0.6:php
~增長底圖風格化選項。目前除了本來的底圖以外,爲全部服務提供兩個視覺風格選項:灰度圖(Gray)和反色圖(Invert),用於特殊目的。好比使用灰度圖可突出顯示業務內容,詳見這裏。詳細介紹;
2011.10.12更新v1.0.5:
~增長ArcGIS Server Endpoint(http://localhost/arcgis/rest/services?f=json)信息,以便須要此信息的程序來使用PBS發佈的服務。好比可在Silverlight Viewer中,直接加載PBS轉發的天地圖服務;
2011.8.8更新v1.0.4:
~增長配置文件功能:可將已發佈的服務保存爲配置文件,下回啓動程序時可載入配置文件以啓動相應服務;
~增長選擇本地IP地址功能:方便生成供其餘機器使用的正確服務地址;
~修復bug:在有些機器上雙擊服務進行預覽時,程序會崩潰。緣由是預覽窗口中的服務屬性使用了xaml binding,但出現了沒有捕捉到的異常(有vs2010開發環境的機器不會拋出此異常)。感謝ningjun198624的反饋;
~修復bug:在沒有vs2010開發環境的機器上發佈RasterDataset數據源報錯。緣由是程序中使用的gdal由vs2010編譯,須要用到幾個額外的動態連接庫。新版本中已將所需的文件隨壓縮包分發。
2011.7.31更新v1.0.3:
~影像數據源增長對.sid格式的支持:MrSID是LizardTech公司持有的高壓縮比影像存儲格式,根據GDAL的解釋,最初被FBI用於指紋存儲。瞭解遙感的mm同事告訴我,MrSID格式壓縮率一般比ecw格式要高,而且使用更普遍;
~數據源增長對ArcGIS影像服務的支持:在10.1版本以前,ArcGIS Server發佈的Image Service是不可以作切片的。經過PBS,可將ArcGIS Server的影像服務轉換成動態緩存地圖服務,既提升了顯示速度和效果,又省去了切圖時間和硬盤空間;
~添加平均出圖時間統計:服務信息中增長「Seconds Per Tile」統計信息,即該服務平均成功輸出一張切片所用的時間。
2011.7.24更新v1.0.2:
~影像數據源增長對.ecw格式的支持:ecw是ERDAS公司持有的高壓縮比影像存儲格式,壓縮率可達1:2~1:100。好比1m大小的ecw文件可包含3波段3000*3000(行/列)大小的影像數據;
~影像數據源增長對.vrt格式的支持:相似於ArcGIS中的Raster Catalog。好比你有不一樣空間範圍內的若干小的影像文件,可經過構建後綴名爲vrt的xml文件,直接將它們經過動態鑲嵌,發佈爲一個完整的動態緩存地圖服務;
~修復bug:ArcGISDynamicMapService數據源輸入錯誤服務地址時程序會崩潰;
~代碼重構。
2011.7.17更新v1.0.1:
~數據源加入對影像數據的支持:對於大數據量的影像文件,無需切圖,便可提供動態緩存地圖服務。數據源選擇RasterDataset,可發佈文件形式的影像數據。利用GDAL讀取柵格圖像,支持格式見這裏;不支持動態投影(TilingScheme文件中的空間參考必須與影像數據的空間參考一致);
~修復bug:未發佈服務時點擊「Copy to Clipboard」按鈕出錯;
~修復bug:預覽窗口中左上角的縮放級別信息在有的座標系下不許確。
————————————————-更新分割線————————————————-
使用如今流行的Web地圖API的第一件事情,就是往地圖控件中添加一個底圖(Basemap)圖層,作爲咱們整個GIS應用的可視化基礎。而這個底圖圖層一般有兩個特色,一是通過了緩存,即服務器端提供已經預先緩存好或動態提供固定大小(好比256*256)地圖切片,加快客戶端的訪問速度;二是該圖層由一個REST風格的網絡服務暴露出來。對於它的訪問,客戶端通常會發起若干個包含有三個關鍵參數的請求,好比http://hostaddress/servicename/LEVEL/ROW/COLUMN,將請求的結果(若干切片)拼接成咱們所看到的地圖。
目前來說,要使用這些底圖服務的前提是,咱們必須使用特定的客戶端才能加載特定的底圖服務,好比利用Google Maps API加載Google的底圖;若是要加載本身地理數據,還須要有專門的GIS軟件,好比ArcGIS Server來發布Map Service。
爲了解決這一問題,使得開發人員可以更加方便地加載各類底圖服務,從而將更多的精力投入到作出更有用的系統中去,我作了這個稱做Portable Basemap Server(簡稱PBS)的小程序供你們無償使用。它的目的是經過一個能夠拷貝到U盤裏的,免安裝的WPF程序,來加載各類數據源做爲底圖圖層,直接爲更多的客戶端API提供一致風格的REST底圖服務,從而使開發人員免去爲每一個應用程序自定義圖層的麻煩。html
關於PBS的功能java
使用起來很簡單,大體分四個步驟。一、選擇數據源類型,二、設置數據源路徑,三、設置將要發佈的服務端口號和服務名,四、啓動服務。程序界面以下:android
1、選擇數據源類型:git
- MobileAtlasCreator:MAC是一個開源的Java程序,可將在線地圖切片保存到本地,好比Sqlite數據庫中,供移動設備離線使用。介紹看這裏。不少朋友都喜歡使用Google地圖做爲底圖,之前的方法是,用第三方程序(MAC仍是比較厚道的,不加水印沒有任何功能限制)去下載切片,保存到本地,而後按照ArcGIS緩存的組織規則從新組織這些切片,再將其發佈成緩存地圖服務。最後一步比較麻煩。利用PBS,就能夠直接讀取MAC保存的Sqlite數據庫,將其中的切片直接發佈成可供多種客戶端API使用的底圖服務;
- MBTiles:相似於MAC,但它有更嚴格的規範,好比在特定位置存儲全圖範圍(MAC沒有),具體規範查看這裏。MBTiles切片存儲遵循的是TMS規範,雖然這中規範已被WMTS逐步取代,但PBS依然支持這種數據源,可直接讀取該數據源做爲多種客戶端的底圖服務。可在這裏下載一個海地的地形圖進行試驗;
- ArcGISCache:這個不用多說了,ArcGIS Server生成的地圖緩存,指定包含Conf.xml和Conf.cdi文件的文件夾做爲數據源便可,PBS會自動讀取Tiling Scheme;Exploded和Compact兩種存儲格式都可識別。若是是ArcGIS 10以前的切片,須要本身手動建立Conf.cdi文件(仿照現有的文件便可,裏面存儲的是全圖範圍);
- ArcGISTilePackage:Tile Package是ArcGIS 10.1推出的便於分發,可將地圖服務緩存文件(compact或exploded)打包成單一文件的文件格式,文件後綴名爲.tpk。之前爲了分發地圖數據,須要將樣式配置信息(針對全部圖層的地圖文檔.mxd,針對單個圖層的圖層樣式.lyer)和實際地理數據(.mdb/.gdb/.shp等)一塊兒拷貝。自9.3.1的開始,爲了便於地圖數據的分發,ArcGIS推出了Layer Package格式(.lpk),它包括了圖層樣式(.lyr)以及引用到的實際地理數據。這樣其餘用戶拿到一個文件,就可徹底還原數據自己和顯示樣式。ArcGIS10開始推出Map Package(.mpk)格式,10.1開始推出Tile Package(.tpk),Locator Package(.apk)和Geoprocessing Package(.gpk)格式;
- RasterImage:1.0.1版本開始支持。文件形式的影像數據。在項目過程當中,可能須要加入高分辨率的影像文件作爲底圖服務,但對這些影像文件切圖、保存須要耗費極大的時間、空間。利用PBS可將影像文件直接發佈爲動態緩存地圖服務,無需切圖便可達到緩存地圖服務的效果。對柵格數據的讀取是利用GDAL完成的,支持的影像格式見這裏。發佈的影像數據必須具備正確的空間參考信息(不支持動態投影);須要選擇ArcGIS Server生成的TilingScheme(Conf.xml和Conf.cdi文件)以肯定緩存服務的級別;
1.0.2版本開始支持.ecw和.vrt影像格式。
ecw是ERDAS公司持有的高壓縮比影像格式,壓縮率可達1:2~1:100。好比1m大小的ecw文件可包含3波段3000*3000(行/列)大小的影像數據;
.vrt格式相似於ArcGIS中的Raster Catalog,具備對多張影像動態鑲嵌的功能。好比你有不少空間連續的小的影像文件,它們加起來可能有上百G。經過構建後綴名爲vrt的xml文件,直接將它們經過動態鑲嵌,發佈爲一個完整的動態緩存地圖服務。vrt文件可利用gdalbuildvrt.exe工具來自動建立,發佈時PBS中數據源直接選擇.vrt文件便可。vrt格式介紹一文,供參考。
1.0.3版本開始支持.sid影像格式。
MrSID是LizardTech公司持有的高壓縮比影像存儲格式,根據GDAL的解釋,最初被FBI用於指紋存儲。我對遙感知識知之甚少,作遙感的mm同事告訴我,MrSID格式壓縮率一般比ecw格式要高,而且使用更普遍;
v2.0.7版本開始,爲影像數據源提供本地緩存功能,任何客戶端瀏覽過的切片,都會存儲在指定目錄的本地緩存文件中;本地緩存文件存在的狀況下,會首先從該文件中輸出切片,而不是動態輸出。對於多併發狀況下的影像數據源,可大幅減小cpu的使用率(與內存緩存配合可達成二級緩存的效果)。此功能可經過配置文件中的AllowFileCacheOfRasterImage參數設置,默認爲True。 - ArcGISDynamicMapService:此數據源是指利用ArcGIS Server發佈的,沒有建立過緩存的動態地圖服務。動態地圖服務如何做爲緩存地圖服務的數據源呢?這就是所謂的動態緩存服務,沒有預先建立過緩存,但可以提供緩存服務效果,而且支持動態投影的服務,也可查看超圖的在線幫助。經過PBS,也可以提供動態緩存服務了,而且不須要在客戶端再去自定義圖層,由於PBS已經爲你作好,直接使用便可。還能夠輸入多個動態服務地址,經過多個服務實例來達到加速動態緩存地圖服務的目的,原理說明可查看這篇文章。輸入服務地址後,還須要選擇Tiling Scheme。能夠選擇Google/Bing/ArcGISOnline採用的Tiling Scheme,也可指定ArcGIS Server建立的Tiling Scheme(Conf.xml和Conf.cdi文件),若是數據源的座標系與指定的Tiling Scheme座標系不一致,能夠自動進行動態投影;2.0.5版本開始,在建立服務後,可爲此數據源設置附加參數,好比layers,layerDefs等,達到控制圖層可見性,按屬性過濾圖層內容等目的,具體語法請參考ArcGIS Server REST API;
- ArcGISImageService:ArcGIS Server發佈的影像服務(ImageService)。10.1版本以前的ArcGIS,不支持ImageService的切圖。相似於上面的動態地圖服務數據源,PBS可將動態的ImageService轉成動態緩存地圖服務,既大大改善了ImageService的顯示效果和速度,又省去了切圖所需的時間和硬盤空間。支持輸入多個影像服務地址,經過多個服務實例來達到加速動態緩存地圖服務的目的。選擇此數據源,默認填入Esri發佈的全球Landsat數據影像服務地址,可經過觀察原動態影像服務,對比PBS轉換後的動態緩存地圖服務的效果;
- 各類在線地圖:這個也不用多說了。目前支持OpenStreetMap,Google Maps街道圖,Google Maps影像圖,Bing Maps街道圖,Bing Maps影像圖,天地圖(文字註記和地圖是兩個服務,可疊加)這幾種在線地圖做爲數據源,天地圖Tiling Scheme是WGS 1984座標系的,其餘幾種均是WGS 1984 Web Mercator座標系的。須要說明一點,若是你打算使用PBS爲公網用戶提供服務,選用在線數據源時可能會有延遲,由於PBS首先會下載切片到本機(內存中),而後公網用戶在下載這些結果,局域網應用可忽略此問題(2.0版本開始提供內存緩存功能,可解決此問題);若是確實慢,可考慮使用MAC數據源(Bing Maps服務最好輸入一個合法的API KEY,以用達到最快的下載速度)。v2.0.6版本開始,爲在線地圖數據源提供本地緩存功能,任何客戶端瀏覽過或在格式轉換過程當中下載過的切片,都會存儲在指定目錄的本地緩存文件中;本地緩存文件存在的狀況下,會首先從該文件中輸出切片,而不是從新下載。此功能可經過配置文件中的AllowLocalCacheOfOnlineMaps參數設置,默認爲True。還要鄭重聲明一點,這些數據源只能作試驗使用,不能直接用於商業目的,沒有技術手段限制,但你們要自覺。如需商用,還請聯繫最終服務提供商;
2、設置數據源:github
爲選擇的數據源類型設置相應的數據源位置便可。MAC和MBTile直接選去本地的Sqlite文件;ArcGISCache選擇包含有Conf.xml和Conf.cdi的文件夾;ArcGISDynamicMapService直接輸入一個或多個REST服務的地址;全部在線地圖不須要設置數據源位置,PBS已爲你作好。web
3、設置端口號和服務名sql
PBS是經過.NET Framework的WCF框架完成的。在啓動服務以前須要選擇將服務發佈到本機的哪一個端口上。一個端口上能夠發佈多個服務,也可將服務發佈在多個端口上。但同一端口上不能有同名的服務。
DisableClientCache:默認狀況下,PBS輸出的圖片能夠被緩存在客戶端,下次訪問時會直接使用客戶端的緩存而不須要從新繪製切片。勾選此選項後,PBS輸出的圖片響應會指明不容許客戶端進行緩存,從而方便客戶端每次都請求道最新的數據。
Display」NoData」Tile:勾選此項後,在Tiling Scheme範圍內,若是某些範圍或某些比例尺沒有建立緩存,則會顯示一個NoData的圖片;若是打算用此服務與其它服務疊加(保持此服務背景透明),請不要勾選。數據庫
4、啓動服務
設置好上面參數後,點擊「Start New Service」,便可啓動該服務。啓動好的服務會出如今下方的服務列表中:
5、服務管理
程序下方的服務列表內會列出全部正在運行的底圖服務,會顯示服務名,所在端口號,數據源類型,服務啓動後輸出的切片數量,平均成功輸出一張切片所需時間,以及最後一次被請求的客戶端ip地址作爲服務狀況的大體預覽。可在服務列表中雙擊某個服務,會彈出一個對話框,調用ArcGIS API for WPF查看該服務,並顯示該服務的詳細信息。若是該服務缺乏全圖範圍參數,好比MAC數據源,則會新彈出的WPF對話框會額外添加一個ArcGIS Online底圖,以便方便瀏覽到該服務的範圍。
若是加載某個切片失敗,好比下載在線數據源時網絡鏈接出現問題,會顯示失敗的圖片:
若要刪除某個服務,請在服務列表中選中,而後點擊「DeleteService」便可。
此外,還可將已發佈的所有服務保存成配置文件(v1.0.4版本以上),下回程序啓動時可載入配置文件以啓動相應的服務。配置文件保存在程序根目錄下的Config.db文件中(sqlite文件格式)。
2.0.3版本開始,PBS增長REST Admin API。任何程序可經過發送HTTP(POST)請求,對PBS的服務進行管理。PBS的REST Admin API使用HTTP基本認證,即HTTP請求頭(request header)中必須含有「Authorization」項,該項內容爲Base64編碼字符串,格式爲「用戶名:密碼」。請求認證信息中的用戶(包含正確的密碼),必須爲PBS運行機器上Administrators組中的成員,所發送的請求才會被正確處理,不然將返回包含詳細錯誤描述的響應信息。
爲了保證PBS可以正確響應請求的操做,請求中的端口必須提早打開。2.0.3版本開始,PBS默認使用7080端口,該端口會在PBS啓動時自動開啓。可修改配置文件中的DefaultPort值來更改PBS使用的默認端口號。
每項管理操做都須要相應的參數,參數提交格式爲標準JSON對象,對象中每個鍵值對即爲一個參數(鍵應爲string類型,值應爲string/int/bool/null類型)。參數應存放於HTTP請求體(request body)內。
~添加服務(addService):v2.0.3,該操做的地址爲「http://serverip:port/PBS/rest/admin/addService」,參數列表以下:
- name:(必須)須要添加的服務名稱;
- port:(必須)須要添加的服務端口號;
- dataSourceType:(必須)須要添加的服務數據源類型,例如「ArcGISTilePackage」。可選值:MobileAtlasCreator|MBTile|ArcGISCache|ArcGISTilePackage|RasterImage|
ArcGISDynamicMapService|ArcGISImageService|OpenStreetMap|BingMapsRoad|
BingMapsImagery|GoogleMapsRoad|GoogleMapsImagery|TianDiTuAnnotation|
TianDiTuMap。區分大小寫; - dataSourcePath:(必須)須要添加的服務數據源路徑。文件數據源類型可用本地路徑或UNC路徑,好比「D:\arcgisserver\arcgiscache\CharlotteRaster.tpk」或「\192.168.0.100\arcgisserver\arcgiscache\CharlotteRaster.tpk」;ArcGIS動態地圖服務或影像服務填服務地址;其他在線服務不須要此參數,填「」便可。注:RasterImage數據源路徑中不能有中文字符;
- allowMemoryCache:(可選)須要添加的服務是否容許支持內存緩存,默認爲true。可選值:true|false;
- disableClientCache:(可選)須要添加的服務是否禁止客戶端緩存,默認爲false。可選值:true|false;
- displayNodataTile:(可選)須要添加的服務是否顯示「Nodata」的切片,默認爲false。如須要和其它服務疊加,此項需爲false。可選值:true|false;
- visualStyle:(可選)須要添加的服務的視覺效果,默認爲None。可選值:None|Gray|Invert|Tint|Embossed。區分大小寫;
- tilingSchemePath:(可選)須要添加的服務使用的tiling scheme(緩存策略)文件路徑。默認爲null;
或用C#發送以下請求:
1: byte[] postData = Encoding.UTF8.GetBytes(@"{""port"":7080, ""disableClientCache"":false, ""dataSourcePath"":""D:\arcgisserver\arcgiscache\CharlotteRaster.tpk"",""dataSourceType"":""ArcGISTilePackage"", ""tilingSchemePath"":null, ""allowMemoryCache"":true, ""visualStyle"":""None"", ""name"":""ServiceName1"", ""displayNodataTile"":false}");
2: HttpWebRequest myReq = WebRequest.Create("http://localhost:7080/PBS/rest/admin/addService") as HttpWebRequest;
3: myReq.Method = "POST";
4: string username = "Administrator";
5: string password = "123456";
6: string usernamePassword = username + ":" + password;
7: //注意格式 「用戶名:密碼」,以後Base64編碼
8: myReq.Headers.Add("Authorization", Convert.ToBase64String(Encoding.UTF8.GetBytes(usernamePassword)));
9: myReq.ContentLength = postData.Length;
10: using (System.IO.Stream requestStream = myReq.GetRequestStream())
11: {
12: requestStream.Write(postData, 0, postData.Length);
13: }
14: WebResponse wr = myReq.GetResponse();
15: System.IO.Stream receiveStream = wr.GetResponseStream();
16: System.IO.StreamReader reader = new System.IO.StreamReader(receiveStream, Encoding.UTF8);
17: string content = reader.ReadToEnd();
18: receiveStream.Close();
19: reader.Close();
響應內容:JSON字符串,格式:{「success」」: [ture|false],」message」: [detail message]}。若是操做成功,detail message將返回PBS服務信息的JSON字符串,若是失敗,將返回詳細錯誤緣由。
~刪除服務(deleteService):v2.0.3,該操做地址爲「http://serverip:port/PBS/rest/admin/deleteService」,參數列表以下:
- name:(必須)須要刪除的服務名稱;
- port:(必須)須要刪除的服務所在端口號;
響應內容:JSON字符串,格式:{「success」」: [ture|false],」message」: [detail message]}。
~開啓內存緩存(enable):v2.0.4,該操做地址爲「http://serverip:port/PBS/rest/admin/memCache/enable」,參數列表以下:
- memSize:(可選)內存緩存功能佔用的內存大小,默認爲64(M)。
若是內存緩存功能已經開啓,返回結果依然爲true,但會有額外提示。
響應內容:JSON字符串,格式:{「success」」: [ture|false],」message」: [detail message]}。
~關閉內存緩存(disable):v2.0.4,該操做地址爲「http://serverip:port/PBS/rest/admin/memCache/disable」,此操做不須要參數(請求體爲空便可,若有則忽略)。若是內存緩存功能已經關閉,返回結果依然爲true,但會有額外提示。
響應內容:JSON字符串,格式:{「success」」: [ture|false],」message」: [detail message]}。
~清除某個服務的內存緩存(clearByService):v2.0.4,該操做地址爲「http://serverip:port/PBS/rest/admin/memCache/clearByService」,參數列表以下:
- name:(必須)須要清除內存緩存的服務名稱;
- port:(必須)須要清除內存緩存服務所在端口號;
響應內容:JSON字符串,格式:{「success」」: [ture|false],」message」: [detail message]}。
~改變ArcGISDynamicMapService數據源的附加參數(changeParams):v2.0.5,該操做地址爲「http://serverip:port/PBS/rest/admin/ArcGISDynamicMapService/changeParams」,參數列表以下:
- name:(必須)須要清除內存緩存的服務名稱;
- port:(必須)須要清除內存緩存服務所在端口號;
- layer:(可選),詳細說明參考ArcGIS Server REST API;
- layerDefs:(可選),詳細說明參考ArcGIS Server REST API;
- time:(可選),詳細說明參考ArcGIS Server REST API;
- layerTimeOptions:(可選),詳細說明參考ArcGIS Server REST API;
響應內容:JSON字符串,格式:{「success」」: [ture|false],」message」: [detail message]}。
後續版本將增長更多操做…
6、服務使用
啓動好的服務都會暴露出來兩個REST服務地址(v3.0版本開始支持WMTS規範),ArcGIS REST URL可供全部ArcGIS客戶端API,包括Javascript/Flex/Silverlight/iOS/Windows Phone/Android,以及即將推出的ArcGIS Runtime直接使用;因爲OpenLayer中可經過ArcGIS93REST圖層直接加載ArcGIS的服務,所以PBS服務也可直接被OpenLayers客戶端使用;而OGC WMTS URL則供全部支持WMTS規範的客戶端使用。
好比在ArcGIS API for Javascript中,咱們在地圖中添加一個底圖圖層,Url地址指向PBS發佈的某個服務:
這樣就能直接經過PBS爲咱們提供的,相似於原生ArcGIS緩存地圖服務的Url地址,訪問到第三方的底圖數據了。開發人員今後免去了在客戶端自定義圖層,去加載第三方切片的麻煩。好比經過PBS提供的服務,分別在ArcGIS API for Javascript/Flex/Silverlight中調用Google Maps地圖。
v3.0版本開始,經過PBS發佈的全部服務兼容OGC的WMTS規範(目前爲1.0.0版本),支持KVP和RESTful兩種編碼方式。下圖爲不一樣客戶端(ArcMap,OpenLayers,ArcGIS API for Silverlight,SuperMap iClient for Silverlight)加載由PBS發佈的MapBox數據源的底圖。
除此以外,從1.0.6版本開始,PBS增長了風格化的選項,能夠在不須要從新切圖的狀況下(動態地圖服務則無需切圖),直接改變全部底圖服務的視覺呈現效果。目前提供視覺風格選項:灰度圖(Gray)和反色圖(Invert),用於特殊目的。好比使用灰度圖可突出顯示業務內容,詳見這裏。
2.0.3版本新增泛黃(tint)與浮雕(embossed)兩種效果。
7、格式轉換
v2.0.6版本開始,PBS提供部分數據源格式之間的轉換功能。
- ArcGIS Cache轉換到MBTiles格式:可將ArcGIS的緩存文件(緊湊/鬆散)轉換成單個MBTiles格式文件,方便數據遷移。
- Online Maps轉換/下載到MBTiles格式:可將在線地圖下載成單個MBTiles格式文件,方便你的方便。整個過程耗時取決於你的網速和在線地圖數據源服務器的速度。v2.0.7版本開始,提供按Shapefile文件下載切片功能,對於不規則區域,可大幅減小切片下載數量。相似ArcGIS Server中的Map caching based on feature boundaries,此功能僅對大比例尺有效;請提早對Shapefile文件作要素合併,節點抽希等處理。按Shapefile文件範圍下載時,下載進度,結果文件預計大小等信息無效。
v2.0.7版本開始,爲轉換後的MBTiles文件增長了」壓縮」選項,若是轉換結果中,尤爲在大比例尺下,包含大量沙漠,海洋等區域,可大幅減少MBTiles結果文件的體積。具體原理請參考MBTiles規範。例如,存儲國內某城市0-17級切片的.mbtiles文件,不勾選」壓縮」選項時文件大小220MB,通過」壓縮」後的文件大小爲150MB。」壓縮」過程耗時取決於文件內容的多少,另外請確保磁盤剩餘空間大於壓縮前文件體積。
上述轉換會根據切片數量不一樣自動增長工做線程數:數據源爲ArcGIS Cache時,每一個線程處理128×128個切片;數據源爲在線地圖時,每一個線程處理16×16個切片。
關於PBS的性能
PBS利用WCF REST框架開發,支持多用戶,多併發請求,性能僅受機器硬件限制。初步用Apache JMeter作了測試,在個人筆記本上,經過PBS的REST服務,請求Sqlite數據庫中一張22kb的圖片,500個併發請求的響應時間在10ms如下:
在磁盤性能更好的服務器上測試,1000個併發請求的相應時間能夠在10ms如下。
而實際使用中,單個底圖服務達到上千個併發請求的狀況仍是比較少見的,因此PBS能夠知足大多數需求。
從2.0版本開始,PBS增長了內存緩存功能。可將已生成過的切片數據自動緩存在機器內存中,以後可從內存中直接返回該切片,而不是動態生成。
2.0.1版本增長對單個服務是否啓用內存緩存的控制,並增長輸出動態生成切片數量和內存緩存切片數量的信息。
2.0.2版本增長對單一服務清除內存緩存的功能。
只需在Memory Cache菜單下,勾選Enable選項,便可啓用內存緩存功能。該特性可顯著提升PBS性能,尤爲對於動態緩存地圖服務功能(影像數據或動態地圖服務做爲數據源),在幾乎不佔用cpu資源的狀況下,支持的併發數可提升數十倍。該功能利用Memcached完成,它是一個免費的高性能分佈式緩存系統(http://memcached.org/)。
默認狀況下,Memory Cache會使用64M機器內存來緩存切片數據,達到64M後,會自動替換掉最先的緩存數據。使用機器內存的大小可經過PortableBasemapServer.exe.config配置文件進行配置,只需修改其中MemcachedSize節點的數值便可。
好比對於影像數據做爲數據源的動態緩存地圖服務功能,在服務器機器上,可配置更多的物理內存(好比4G)供PBS使用。這樣一來,只需在第一個客戶端訪問時生成一次切片數據,後續的請求就可直接從內存中得到切片。之內存方式替代cpu的工做和硬盤的存儲空間,使得PBS投入實際生產運行成爲可能。
經測試(筆記本環境),對於PBS轉發的在線地圖服務(Google Maps)中的一張切片,沒有使用內存緩存功能時,100個併發請求響應時間平均爲10秒左右(和個人網速慢也有很大關係),由於每次請求都須要在線下載該切片;使用了內存緩存功能後,對於一樣的一個切片,100個併發請求響應時間平均爲2毫秒(該切片已在內存中的狀況,下同),500個併發平均響應時間爲6毫秒,1000個併發平均響應時間爲200毫秒左右。在內存更好的服務器上測試,可得到更理想的結果
總結
對於ArcGIS用戶來講,經過PBS,可直接加載第三方的離線數據源(MAC/MBTile),而不須要按照ArcGIS的切圖規則從新組織切片;可將動態地圖服務轉換成動態緩存地圖服務,無需本身在客戶端API中自定義圖層;可以使用多種數據源;
對於OpenLayers用戶,可以使用更多的,內容更豐富的底圖數據;
Portable Basemap Server可裝入U盤帶走,在任何具備.NET Framework 4.0環境的機器上直接運行,無需安裝。一個U盤便可提供多種底圖,方便開發者使用;
後續計劃加入更多數據源,好比本地影像數據(已加入),以及爲更多客戶端提供支持。
下載地址
2012.11.14:Portable Basemap Server已在CodePlex上開源,LGPL協議。
http://www.arcgis.com/home/item.html?id=48bf53da123e442ab8ac9aed52747552
若是你們對於軟件有任何意見或建議,歡迎在此篇博客中留言回覆。
要是.NET 3.5多好啊,Win7/Vista/2008都默認是3.5的,4.0的稍微有點早
呵呵,這個主要是爲開發人員準備的,因此通常機器上都應該有.net framework 4.0了。
沒法直接把google地圖增長到桌面版裏且能夠導出JPG嗎?我如今用ArcBruTile 0.2.2只能夠添加,不能保存爲JPG.
數據源裏提到的mac能夠試一下,它可以把在線地圖下載到本地,保存到sqlite數據庫中。寫程序再讀出來保存成jpg格式應該不是太困難。
對我不會開發的來說有難度。之後再請教吧。
這個東西能開放源代碼嗎?有個想法,PBS將解決逐步解決多數據源問題,能不能增長基於角色的權限控制功能,好比說用戶是普通用戶,那麼他將只能看到部分地圖服務,若是是受限的普通用戶,那麼只能對地圖服務進行查詢操做,不知道我有沒有說清楚^_^
暫時沒考慮。由於後續還要加入一些功能,作完以後你們須要的話能夠開放。用戶權限控制仍是在應用程序級別作比較好,在後臺或者對開發人員作限制不知是否有須要?
這個想法的初衷是能提供一套管理地圖服務的平臺,能夠支持多數據源,支持服務受權,目前北京**數碼已經有這樣的產品了。
PBS的初衷只是一個小工具,方便開發人員使用,沒有作成平臺的想法。能夠在本身程序中將PBS暴露出來的服務進行封裝或管理。
用兩個緩存作實,一個成功,一個程序崩潰,這個東西還真不錯!
崩潰的那個服務是如何設置的?
服務設置就是按照您文檔中的描述作的,要不我把測試數據發給你試試
好的,麻煩把大體步驟和具體數據發給我試試。郵箱:diligentpig[at] gmail.com
要是能有Android版的PBS運行在android移動設備上,就可以方便開發離線版的移動GIS,以應對網絡很差的狀況。
PBS是當作在線服務提供者的角色來使用的,不適合運行在移動端。你的需求能夠經過直接在手機上加載離線數據源來完成,請參考:http://blog.newnaw.com/?p=736
Pingback: 在ArcGIS Web API應用程序中使用灰度地圖 - 菩提老王的葡萄架
很是支持你,但願可以一直作下去!
感謝支持:)
總算有個冒泡的了,哈哈
但願支持各類切片存儲的互相轉換功能,好比arcgis cache 與sqllite的互轉,這樣的功能比較實用。
這個能夠有。打算在未來的某個版本,加入下載任意範圍切片到本地文件(arcgis server緩存文件和mac/mbtile的sqlite文件格式)的功能。
不過在線地圖牽扯到版權問題,可能不能直接下載,須要找到一種變通可行的辦法。
arcgis9.3動態地圖服務發佈失敗:
ArcGISDynamicMapService
http://localhost/ArcGIS/rest/services/Florida/MapServer
建立新服務提示以下錯誤:
Create New Service Error!
http://localhost/ArcGIS/rest/services/Florida/MapServer
is not a valid ArcGISDynamicMapService!
It does not contian expected singleFusedMapCache information.
感謝反饋,2.4版本中已經修正。
但願支持各類切片存儲的互相轉換功能!
這個功能仍是有用的啊,就拿ArcGIS 本身的瓦片來講吧,「鬆散和緊湊」,若是轉換就必需要經過ArcCatalog鏈接到Server上面再進行轉換,太麻煩了。
感謝支持~
arcgis自己這麼作的緣由應該是不想讓用戶脫離arcgis server產品自己。。。
很是不錯的工具!
但願可以開源
正在考慮,謝謝支持。
我用你文章中提到的「海地的地形圖」進行試驗;爲何在PBS中能夠預覽到地圖,用Arcgis+javascript就不能顯示地圖;求解,Arcgis+javascript代碼和LZ給的圖片中的同樣;GIS新手求解~~~
你好,我這邊試驗是徹底正常的。javascript api代碼中首先須要鏈接互聯網下載一段js腳本文件,若是機器沒法訪問互聯網的話確定是有問題的,而pbs預覽用到的wpf api則不須要。
原來是個人瀏覽器設置代理致使沒法顯示地圖;再請教個問題,MAC下載下來的Sqlite影像地圖數據在PBS中沒法預覽,是怎麼回事?
沒法預覽報什麼錯誤?mac製做時要選擇rmaps格式的sqlite文件才能夠的。
上個問題解決了,是我在聯網的時候設置了瀏覽器的代理;還有個問題,我用MAC下載的影像圖爲何在PBC中沒法預覽,怎麼解決???
有具體提示麼?確保mac建立的文件格式是rmaps sqlite才行。
請問一下,在flex中怎麼載入tpk?有具體提示麼?thanks
tile package格式其實是個zip包,裏面的主要內容是已經熟悉的compact格式的緩存切片。這樣的話就能夠讀取了。具體可參考此文:http://www.gisall.com/html/35/160435-6285.html
不過在客戶端去加載tpk,要求每一個客戶端都有一份數據,通常不會這麼作。
你好,這工具真不錯!
但我如今遇到一個問題,我用MAC下了google和microsoft的街道圖,發佈了底圖服務,
而後在arcgis發佈了動態的道路服務,這個動態道路和底圖存在一點偏移,是我設置有問題呢
仍是啥緣由呢?,謝謝,可否幫我分析分析
你好,pbs發佈mac數據的底圖服務正常?我們看到網上的電子地圖,矢量圖都是通過偏移的,這是法律規定。若是你動態服務的道路數據沒有通過偏移,那疊加起來確定就有誤差了,通常在1-200米左右。mac下載的影像圖是沒有偏移的,能夠再試驗一下。
你好,可否增長sogoumap,baidumap等四維圖新的底圖哦?目前發現支持的基本上都是MapABC的底圖。,還有就是用MAC下載圖片,有些太大,只能下載成多個db庫,莫非只有本身去合併這些庫爲一個嗎?sqlite一個文件的容量到底有好大哦?
理論上,sqlite數據庫的體積最大限制是140TB(140*1024GB)。不知你用MAC下載了多大範圍的切片?另外是不是因爲FAT32格式的4GB限制了文件體積?
若是能夠,請列出你但願加入的底圖連接,我會嘗試加入。下個版本已經肯定會加入高德地圖和nokia地圖。
我下載的切片3440640,17級,也就是整個大重慶17級的的切片,結果MAC禁止一次下載這樣大。莫非只有減少尺寸,下載爲多個sqlite文件,而後對文件進行合併?
可否支持map.sogou.com, 和map.baidu.com的地圖呢?
補充一下,我是用的MacOS的操做系統,我是用的蘋果電腦64位的操做系統Mac OS X 10.7.3版本的。
mac下載的rmaps離線文件應該沒有限制,一般一個城市下載到17級左右大小可能在幾百m,不會有問題的。http://bbs.hiapk.com/bbs/viewthread.php?tid=147574
老王您好!請教一個問題,PBS最新版本2.0.4在服務預覽中加入了網格顯示,網格原點在左上角。但MBTiles規定的原點應該在左下角吧?因此在預覽MBTiles發佈的服務時,PBS網格顯示的行列號,和MBTiles實際存儲切片的行列號是不一致的?仍是ArcGIS的這個控件在訪問MBTiles的時候,轉換了行列號?可否解答個人疑問?糾結了好久,灰常灰常感謝~~
你好,你說的這個問題確實存在,目前版本顯示MBTile的行列號是錯誤的。目前的行列號是按照ArcGIS/Google Maps/Bing Maps的緩存規則從左上角計算行列號的,沒有針對MBTile作單獨處理。下個版本中會更正這個問題,感謝提醒。
Pingback: Portable Basemap Server發佈2.0.5版本 - 菩提老王的葡萄架
感謝你的分享! 請問,這個程序是否是開源的?
原來放到codeplex上了,太讚了
歡迎使用
工具很久沒有更新了,強烈建議做者開源併成立一個討論組,讓你們一塊兒都來研究。 😀
這裏:https://geopbs.codeplex.com/
Pingback: Portable Basemap Server發佈2.0.6版本 | 菩提老王的葡萄架
果真強大,還綠色免費
感謝支持
老王,問你個flex調用天地圖服務的問題:
程序開發的時候,調用底圖,放大,原先的瓦片待新的瓦片加載以後消失。可是程序發佈後,放大,舊的瓦片沒有等新的瓦片加載完成就消失了,致使地圖瀏覽出現空白,這個問題是怎麼回事?
建議在程序發佈的環境裏,調用其餘在線服務看看。排查是程序的問題仍是天地圖數據源的問題
Pingback: Portable Basemap Server發佈2.0.7版本 | 菩提老王的葡萄架
程序中調用咱們本身的wmts服務是能夠的,調用天地圖的不行!難道是天地圖的服務有問題?
在找個第三方的服務,好比arcgisonline上的試試,看看是服務的問題仍是程序的問題。
您好,請問下載的地圖切片能在arcmap中訪問嗎,若是能怎麼操做,謝謝!
目前還不能夠。正在完成這部分工做,請繼續關注下個版本。
老王 問個問題 這個能不能把在線地圖的切片下載下來 而後用 js api 調用
2.0.6版本開始已經提供了此功能,下載格式爲mbtiles。
http://blog.newnaw.com/?p=890#FormatConvert
請問一下:這邊直接生成的 google map 或是 bing map 都是簡體中文的,有沒有辦法轉成英文或是繁體中文的地圖?
方法參考這個帖子:http://productforums.google.com/d/msg/maps-zh-cn/MPgigPVdsWQ/MdlfzIj3aZwJ
將customonlinemaps.xml中google地圖連接裏的hl=zh-CN修改爲相應的語言字母便可。我試了en和zh-TW,能夠知足你的需求。
看到這神器簡直淚流滿面啊,媽媽不再用擔憂個人地圖數據緩存不了啊…
一點建議:
能夠指定是否啓動自帶的memcache、以及啓動的端口。個人電腦上因爲已經有memcache,產生了衝突,致使內存緩存失敗……
謝謝支持。請在codeplex下載最新的程序,裏面添加了指定memcached監聽端口的功能。
我用openlayer的 wms.js 調用 此類 wmsts 服務。 始終不出圖。 您可否將你的這段代碼共享下? 麻煩了
我用的是這個代碼 http://ol3js.org/ol3/master/examples/wmts.html 把wmts.js裏相應的信息改爲pbs發佈的wmts服務信息便可。
老王,多是我沒太弄好這個, 仍是沒弄起,能不能發下你的?
上面ol例子網址裏,wmts.js的所有代碼:
var projection = ol.projection.get(‘EPSG:102100′);
var projectionExtent = projection.getExtent();
var size = ol.extent.getWidth(projectionExtent) / 256;
var resolutions = new Array(19);
var matrixIds = new Array(19);
for (var z = 0; z < 19; ++z) {
// generate resolutions and matrixIds arrays for this WMTS
resolutions[z] = size / Math.pow(2, z);
matrixIds[z] = z;//matrixIds[z] = 'EPSG:102100:' + z;
}
var map = new ol.Map({
layers: [
new ol.layer.TileLayer({
source: new ol.source.OSM(),
opacity: 1.0
}),
new ol.layer.TileLayer({
opacity: 0.8,
source: new ol.source.WMTS({
url: 'http://192.168.100.109:7080/PBS/rest/services/MapBox/MapServer/WMTS',
layer: 'MapBox',
matrixSet: 'default028mm',
format: 'image/jpg',
projection: projection,
tileGrid: new ol.tilegrid.WMTS({
origin: ol.extent.getTopLeft(projectionExtent),
resolutions: resolutions,
matrixIds: matrixIds
}),
//style: '_null',
extent: [-20037508.342789244,20037508.342789244,-20037508.342789244,20037508.342789244]
})
})
],
renderer: ol.RendererHint.CANVAS,
target: 'map',
view: new ol.View2D({
center: [0, 0],
zoom: 1
})
});
是否是還要引入 ol 這個包?
神物!!!支持!!!!!!
謝謝!
我也不能夠
我用GoogleMapsRoad作數據源
把下面這個改了改,可是什麼都看不到
http://openlayers.org/dev/examples/wmts.html
我用的是這個例子:http://ol3js.org/ol3/master/examples/wmts.html ,修改後代碼見:http://blog.newnaw.com/?p=890&cpage=1#comment-2817
請問一下轉出來的 MBTiles 能夠合併嗎? 我是說同一個服務我分兩次不一樣地方轉成 MBTiles 但我想要合併成同一個檔案能夠嗎?另外 MBTiles 支援的最大檔案容量是多少? 謝謝
PBS沒有提供合併MBTiles的功能。
若是須要下載不連續地理範圍的切片,可利用shapefile指定下載範圍便可(兩個或多個相離的多邊形);此外2.0.6版本開始提供了本地緩存文件(http://blog.newnaw.com/?p=890#OnlineMapsLocalCache),即默認下載過的切片會保存在本地緩存文件.cache中,下次下載同一範圍切片可直接從緩存中輸出而不是在線下載。若是你的.cache文件中已經有兩個須要合併範圍的切片,那利用shapefile指定兩個多變形後從新下載,絕大多數的切片都會直接從緩存文件輸出,而不需在線下載,至關於合併了,過程會很快完成。
最後,也可用sql語句來合併mbtiles,具體須要對mbtiles規範比較熟悉。
mbtiles格式是sqlite,根據官方頁面提示https://www.sqlite.org/limits.html,理論上大小可達140TB左右,但也有人建議應控制在100GB如下,供參考。
謝謝您詳細的解答
選擇以windows服務運行後,關掉UI,爲何PBS服務是’已中止’狀態,而不是‘正在運行’? 爲何要刪除服務才能重現UI呢?
只要windows服務顯示爲已中止狀態,就能夠啓動ui了,不用刪除服務。目前服務和ui不能同時運行,是想讓啓動ui時,保持pbs的便攜性(綠色),而不依賴於windows服務;以服務方式運行是爲了給想讓pbs運行在服務器上的人使用的。
若是有好的兼容或替代方式,後面會進行改進。
您好:請問下載tiles有什麼限制嗎?我下載bing map imagery到了約2.3G大小就出現了out of memory的問題,個人做業系統是windows 8 64bit,16G ram。須要做什麼設定嗎?
目前正在作測試,在mbtiles在4g大小左右時出現了別的問題,沒有重現out of memory的異常。暫時建議開啓文件緩存(allowfilecacheofonlinemaps=true),這樣程序中斷後可接着上一次進度下載。如發現bug後續會推出修正的版本,謝謝反饋!
我發現開啟文件緩存好像更快出現 out of memory 的問題耶,後來我把全部緩存的設定關閉後能夠抓到7G的大小了,但還是會 out of memory 如圖https://dl.dropboxusercontent.com/u/13830410/PBSoutof%20memory.jpg
感謝反饋,我這邊也發現了一樣的問題。因爲其餘緣由,最近投入在pbs上的精力比較少,但會盡量快的排查這個問題的緣由。在此以前我會盡快推出一個新的workaround版原本,讓用戶能避過這個問題,持續生成更大的mbtiles文件。
感謝您的無私,也期待新的版本,這軟體真的好用,謝謝
新版本還得等加入些其餘功能才能推出,不過如今已經加入了RecreateEmptyCache這個模式,能夠增量更新MBTiles文件了,利用它也能夠實現合併多個地理範圍或者多個比例尺級別的功能。測試地址在這:
https://www.dropbox.com/s/cuozmoqwblv7uto/output.7z
這樣在下載大範圍的切片時可跳過已下載好的部分(若是文件太大,這個過程仍須要必定時間),只下載未完成的部分就好了。
感謝,我來測試看看。這功能越來越強大了
現在有一個新的問題在抓某些地方的Cache時會出現「Online maps converting to MBTiles error! 索引超出範圍,必須非負數且小於集合的大小。參數名稱:index」,請問這部分我該怎麼解決呢?謝謝
原來在經度循環的時候有這個問題,新發的測試版已經把經度循環去掉了。不知道你說的這個問題經過什麼步驟和什麼具體位置能復現出來?我測試一下
😉 老王好樣的!
此回覆爲純支持!
多謝支持
老王你這個東西真的很好。
有沒有考慮在之後的版本中加入百度地圖,如今全部的地圖中百度作了最好了感受。
暫時沒有這個計劃。百度地圖的切片有偏移和加密,不能經過自定義模板加載。若有須要,能夠本身修改源代碼增長這個類。
好像arcgis調用pbs發佈的wmts服務,
在線地圖只能顯示jpg格式的圖片,
而mac下載的離線地圖只能顯示png格式的,
不知是否是這樣,但願下一版本在線、離線地圖都能顯示,謝謝!
謝謝反饋!這個問題的緣由已經找到,具體請參考
http://blog.newnaw.com/?p=1207
是由於pbs輸出的圖片格式和實際圖片格式不符形成的。在下一版本中會解決此問題:)
一個建議:建立服務後,若是要調整參數,如「視覺效果」等,則須要刪除服務,再從新創建服務,這樣太麻煩,不能修改設置後,顯示「重啓服務」按鈕嗎?
一個問題:我用格式轉換下載谷歌地圖到MBTiles,範圍是鼠標畫的江蘇到上海一塊,8-17級,上面預估大小1879M,因爲耗時較長,我每次都通宵不關電腦下載。前天開始下載,昨天早上一看出錯崩潰掉了,文件大小2.08G。而後我從新下載,昨天下班前顯示正在壓縮,文件大小2.3G,結果如今看仍是正在壓縮。不知道是由於什麼?
😛 剛發完就提示成功了。。囧
感謝建議,後續會考慮修改的。另外壓縮功能適用於大比例尺級別下連續大片範圍都是一樣切片,好比沙漠海洋地區的,城市範圍內不建議壓縮,效果基本體現不出來。
請教:天地圖的服務不能實現代理,是由於天地圖新版的地址變了嗎?
建議:將代理服務的地址寫成可交互或可查看的,便於發現問題。
在作ArcGIS 緩存轉MBTILES時遇到以下錯誤:
—————————
Error
—————————
ArcGIS cache converting to MBTiles error!
The WKID of ArcGIS Cache is not 3857 or 102100!
—————————
肯定
—————————
你好,mbtiles規範規定其存儲切片只能是wgs 1984 web mercator座標系的(wkid=3857 or 102100),因此PBS首先會作檢查。不然轉存的文件在其餘實現mbtiles規範的軟件裏讀不出來的。
有mbtiles 轉爲tif或者img格式的工具 😛 ?
這個真沒有。牽扯到版權,原本online maps->mbtiles已經屬於副產品了,不打算再提供更多更能,有須要能夠本身修改源碼實現。
謝謝,剛寫了一個轉換工具。
從mbtiles的tile_col和tile_row算出來的地理範圍,怎麼和真實相差挺大的?
座標計算思路:mbtiles(col,row)->google_tiles(col,row)->根據原點算出Web墨卡託投影下的x,y->反算出經緯度(lon,lat)
經緯度大地座標計算思路:mbtiles(col,row)->google_tiles(col,row)->根據原點算出Web墨卡託投影下的x,y->反算出經緯度(lon,lat)
是否正確?
座標計算思路:mbtiles(col,row)->google_tiles(col,row)->根據原點算出Web墨卡託投影下的x,y->反算出經緯度(lon,lat)
這個思路是正確的。源代碼裏有個utility類,裏面應該有上面幾個過程的方法,你能夠參考。
企業版有轉tif的,你能夠找菩提老王要企業版,不過賣錢的,噢噢噢噢
googlemaps衛星圖有偏移的,把原來的地址CustomOnlineMaps文件裏的google衛星圖地址改爲https://khms{$s}.google.com/kh/v=144&x={$x}&y={$y}&z={$z}&s=就變成沒有偏移的啦
後面0,1
感謝分享~
你好大師!我開始使用你的server開始作數據編輯工做,由於有一個好的離線地圖,方便地圖數字化,可是我想把某個地圖服務的投影參數修改爲爲我本身設定的參數,我該怎麼作?我查了mbtiles裏面好像沒有專門的字段儲存這個投影數據,仍是server自己能夠接受xml的參數設定?特別說明,我只是想針對某一個服務修改投影參數,而不是所有的服務
在切片生成以前,你能夠轉換地圖服務的空間參考參數,好比爲要生成的切片指定conf.xml參數。切片生成以後是改不了的,除非從新作切片。
菩提老王的東西真好,不過最近好像用Google Road Map 的時候好像加載不了了,是否是目前google地圖的服務不能調用了啊。
感謝菩提老王了,我發現問題在哪了。在國內訪問google.com有困難,因此把全部的google.com改爲google.cn就能夠解決了。
的確是國內網絡的問題,但願能早點恢復正常吧
菩提老王你好!經過這個軟件加載的地圖貌似不太準,我發佈了以後,在ArcMap里加載,而後測量距離,跟實際的怎麼不同?好比在北京地鐵西直門站到復興門站的距離,測得4.8千米,可是在管網的地圖上是3.6千米。
老王你好,我在旁邊是3.1裏添加mobac的data
G:Mobile Atlas Creator 1.9.16tilestoredb-Microsoft Earth0000000.jdb
報錯誤 不是database文件,或文件加密了