小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使TileCache配合OpenLayers,產(chǎn)生地圖瓦塊的一些資料

 zhyiwww 2009-04-30

如 果能讓tilecache直接訪問緩存中的圖片,不再需要wms服務(wù),地圖加載速度就會(huì)很快,這就需要tilecache切圖與openlayers縮放 級別相互配合,翻譯了一些相關(guān)資料,都是來自于官方網(wǎng)站,可能不準(zhǔn)確,下面都有英文原文鏈接。網(wǎng)上相關(guān)資料太少了,而且大部分都是英文,特將翻譯給中國人 共享之。


配置Openlayers中的縮放級別

OpenLayers Map可以在不同的比例尺或解析度下顯示他的每一個(gè)layer
map對象含有縮放級別的引用,即ZoomLevels,而且允許他的每一個(gè)layer去自定義他們自己的縮放級別,使之看起來合適
可以通過在構(gòu)造函數(shù)中設(shè)置options屬性來配置openlayers layer的縮放級別

 == 正常圖層==
對于基于openlayers.layer的正常layer,和能夠在任何解析度下顯示的layer,存在多種不同的方式去配置縮放級別和他們各自的比例尺和解析度

“解析度數(shù)組”:
要是轉(zhuǎn)化縮放級別成為解析度,需要一個(gè){{{resolutions}}}數(shù)組,他是這個(gè)圖層所支持的不同解析度的列表,縮放級別就僅僅是一個(gè)解析度數(shù)組的索引,解析度數(shù)組始于0終于縮放級別-1

比如:
一個(gè)圖層的解析度為[a,b,c],那么縮放級別的0就是a ,1就是b。。。


 === 配置解析度數(shù)組的方式 ===

 可選項(xiàng):
 {{{scales}}} - ''Array'' -- 預(yù)先設(shè)置比例尺值的數(shù)組
{{{resolutions}}} - ''Array'' -- 預(yù)先設(shè)置解析度值的數(shù)組
 {{{minScale}}} - ''float'' --layer能夠顯示的最小比例尺
 {{{maxScale}}} - ''float'' --layer能夠顯示的最大比例尺
 {{{maxResolution}}} - ''float'' --layer能夠顯示的最大解析度
{{{minResolution}}} - ''float'' -- layer能夠顯示的最小解析度
{{{minExtent}}} - ''!OpenLayers.Bounds'' --layer能顯示出的最小范圍
{{{maxExtent}}} - ''!OpenLayers.Bounds'' -- layer能顯示出的最大范圍
{{{numZoomLevels}}} - ''int'' -- 縮放級別的總數(shù)
{{{units}}} - ''String'' - layer顯示的單位,作用于比例尺-解析度換算

Example Declarations:
{{{
    var options = { scales: [50000000, 30000000, 10000000, 5000000],
                    resolutions: [1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125],
                    minScale: 50000000,
                    maxResolution: "auto",
                    maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
                    maxResolution: 0.17578125,
                    maxScale: 10000000,
                    minResolution: "auto",
                    minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
                    minResolution: 0.0439453125,
                    numZoomLevels: 5,
                    units: "degrees"
                  };
    map = new OpenLayers.Map( $('map') , options);
}}}


顯然所有的配置項(xiàng)不能在一次設(shè)置中全都用上,因?yàn)樗麄兛赡芟嗷_突,他們會(huì)按照下面的優(yōu)先級起作用:
 
[A]【預(yù)設(shè)的縮放級別列表】縮放級別由預(yù)先設(shè)置的比例尺或解析度決定

{{{scales}}} -解析度的數(shù)組由這些比例尺直接轉(zhuǎn)化而來
{{{resolutions}}} - 解析度數(shù)組直接從初始化函數(shù)的option參數(shù)中帶來
Examples:
{{{
    var options = { scales: [50000000, 30000000, 10000000, 5000000] };
    map = new OpenLayers.Map( $('map') , options);
}}}

{{{
    var options = { resolutions: [1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125] };
    map = new OpenLayers.Map( $('map') , options);
}}}

 * '''maxResolution and numZoomLevels''' - ''!ZoomLevels are determined based on a maximum resolution and the number of desired !ZoomLevels''


[B]【最大解析度 &縮放級別的總數(shù)】縮放級別在最大解析度和縮放級別的總數(shù)上被決定
B1 最大解析度的確定
 {{{minScale}}}  --解析度的值從比例尺由單位{{{units}}}轉(zhuǎn)化來
 {{{maxExtent}}} AND {{{maxResolution == "auto"}}} --解析度由地圖的div尺寸和maxExtent屬性計(jì)算而來。若maxExtent屬性未指定,默認(rèn)從map繼承,即全世界
 {{{maxResolution}}}--解析度的值直接從layer的options參數(shù)中帶來,若沒指定,則默認(rèn)為從map的options中帶來
B2 縮放級別的總數(shù)確定
    B2_a基于最大和最小解析度的比值來計(jì)算--確定最小解析度:
 {{{maxScale}}} --解析度的值從比例尺由單位{{{units}}}轉(zhuǎn)化來
 {{{minExtent}}} AND {{{minResolution == "auto"}}}--解析度的值基于地圖div尺寸和minExtent屬性來計(jì)算。minExtent屬性必須被指定,默認(rèn)不從map繼承
 {{{minResolution}}} --解析度的值從layer指定的option參數(shù)中直接帶來,若沒指定,最小解析度保持為空,縮放級別數(shù)直接接受
    B2_b {{{numZoomLevels}}}縮放級別數(shù)直接從layer指定的option參數(shù)帶來,若沒有指定默認(rèn)從map的option帶來

Examples:

||maxResolution||Converted from minScale using specified units||
||numZoomLevels||Default from map||
{{{
    var options = { minScale: 50000000,
                    units: "degrees"
                  };
    map = new OpenLayers.Map( $('map') , options);
}}}
[[BR]]

||maxResolution||Calculated based on div size and default maxExtent from map||基于div的尺寸和地圖最大范圍計(jì)算
||numZoomLevels||Calculated using ratio of maxResolution/minResolution||用最大最小分辨率的比值計(jì)算
{{{
    var options = { maxResolution: "auto",
                    maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
                    minResolution: 0.0439453125
                  };
    map = new OpenLayers.Map( $('map') , options);
}}}
[[BR]]

||maxResolution||Specified||
||numZoomLevels||Specified||
{{{
    var options = { maxResolution: 0.17578125,
                    numZoomLevels: 15
                  };
            map = new OpenLayers.Map( $('map') , options);
}}}
[[BR]]

||maxResolution||Default from map||
||numZoomLevels||Converted maxScale (using default units from map) to minResolution, then uses ratio of maxResolution/minResolution to calculate numZoomLevels||
{{{
    var options = { maxScale: 10000000 };
    map = new OpenLayers.Map( $('map') , options);
}}}
[[BR]]

||maxResolution||Specified||
||numZoomLevels||Calculated minResolution based on div size and default minExtent from map, then uses ratio of maxResolution/minResolution to calculate numZoomLevels||
{{{
    var options = { maxResolution: 0.17578125,
                    minResolution: "auto",
                    minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
                  };
    map = new OpenLayers.Map( $('map') , options);
}}}

英文原版:http://trac./wiki/SettingZoomLevels
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TileCache配置
=============
有一些參數(shù)是控制tilecache并且應(yīng)用于所有的圖層
bbox-圖層的外圍框范圍,解析度數(shù)組默認(rèn)的解析度等于外圍框范圍除以512(2000個(gè)瓦塊)
debug--是否發(fā)送調(diào)式信息到error.log,默認(rèn)是yes,可以設(shè)置為no
description--圖層描述,用在一些返回元數(shù)據(jù)的響應(yīng)中,默認(rèn)為空
extension--圖層的文件擴(kuò)展(名?),用來從WMS服務(wù)器中請求圖片,也用在產(chǎn)生緩存(圖片)文件時(shí)
layers--用來描述圖層的字符串,主要是被直接傳給渲染器。WMSLayer發(fā)送http請求,MapServerLayer根據(jù)這個(gè)字符串選擇響應(yīng)的圖層來呈現(xiàn)。若沒有提供layer,layer name 被用來填充這個(gè)屬性
levels--一個(gè)整數(shù),描述縮放級別的數(shù)字或支持的比例尺。若忽略則被解析度覆蓋。
mapfile--mapfile的絕對路徑,是MapServer 和Mapnik layers所需要的
maxResolution--解析度的最大值,若這個(gè)被設(shè)置了,解析度的數(shù)組會(huì)自動(dòng)地被計(jì)算出來,計(jì)算時(shí)依據(jù)levels的值
metaTile--設(shè)置yes會(huì)打開metaTiling,這將會(huì)請求更大的瓦塊,并且用Python Imaging library切開,默認(rèn)為no
metaBuffer--需要設(shè)置在呈現(xiàn)出的瓦塊周圍的像素?cái)?shù)。很好的解決不同地圖返回后產(chǎn)生的邊緣問題,默認(rèn)為10
metaSize--一對由逗號隔開的整數(shù),用來決定當(dāng)用metaTiling的時(shí)候應(yīng)當(dāng)呈現(xiàn)多少瓦塊,默認(rèn)為5,5
resolutions--你想讓TileCache支持的一組解析度的列表,由逗號隔開
size--逗號隔開的整數(shù),描述瓦塊的寬/高,默認(rèn)為256,256
srs--空間參考系的字符串,默認(rèn)為 "EPSG:4326"
type--圖層的類型,選項(xiàng)有WMSLayer, MapnikLayer, MapServerLayer, ImageLayer
url---遠(yuǎn)程 WMS 服務(wù)器的訪問地址,為WMSLayer必須
watermarkImage--水印圖片參數(shù)是在每一個(gè)圖層被指定的,你想作用在每個(gè)地圖瓦塊上的的圖片的路徑。我們建議你用和瓦塊尺寸大小相同的圖片,如果你用了默認(rèn)的瓦塊尺寸,你就應(yīng)該用一張256*256的圖片
注意:Python Imaging Library不支持交織的圖片(??)
watermarkOpacity--這個(gè)參數(shù)在每個(gè)圖層上被指定,用來配置水印的不透明度,這是個(gè)0-1的浮點(diǎn)數(shù),是可選的
extent_type--設(shè)置成‘loose’將會(huì)允許TileCache在最大邊界框之外產(chǎn)生圖片。在客戶端不知道何時(shí)停止請求地圖瓦塊時(shí)很有用。
tms_type--設(shè)置成‘google’將會(huì)時(shí)瓦塊轉(zhuǎn)換垂直放上的順序(即,符合google類型的x/y模式)


配合OpenLayers使用TileCache
===============================
使用 tilecache運(yùn)行openlayers的時(shí)候,OpenLayers.Layer.WMS構(gòu)造函數(shù)中的URL必須指向tilecache腳本,比如 tilecache.cgi或tilecache.py.可以參考例子,tilecache中的index.html

【讓tilecache工作的配置方法。。略】
最重要的是保證openlayers的圖層和你的tilecache圖層具有相同的解析度和邊框。
你可以在openlayers中通過resolutions或者maxResolution選項(xiàng)來定義解析度,定義的maxExtent應(yīng)當(dāng)和TileCache圖層所定義的bbox相匹配

如果你用tilecache來覆蓋的話,你應(yīng)當(dāng)設(shè)置圖層的reproject選項(xiàng)為false

讓TileCache播種
======================
tilecache_seed.py腳本能夠自動(dòng)地產(chǎn)生地圖瓦塊,你需要安裝tilecache按照上面的配置好

用法
-----
     tilecache_seed.py [options] <layer> [<zoom start> <zoom stop>]

可選項(xiàng)
-------
  --version             顯示程序的版本且退出
  -h, --help            顯示幫助信息且退出
  -f, --force           強(qiáng)制重新生成瓦塊,即使緩存中已經(jīng)存在
  -b BBOX, --bbox=BBOX  限制在指定的邊界內(nèi)
  -p PADDING, --pading=PADDING
                         在產(chǎn)生瓦片的目標(biāo)區(qū)外邊緣的額外的瓦塊,默認(rèn)為0(一些邊緣瓦塊將會(huì)變沒)。值為1會(huì)保證所有的瓦塊被創(chuàng)建,但是一些瓦塊可能在你定義的邊界之外

參數(shù)
---------

    layer
       tilecache.cfg中配置的layer名字
    zoom start
       開始的縮放級別
    zoom end
       結(jié)束的縮放級別

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多