geoserver 的缓存技术
geoserver提到的缓存工具共有两个:tilecache和geowebcache。geowebcache是java写的,整合进geoserer中。
tilecache则是python写的一个小程序。
tilecache是由MetaCarta Labs开发的用来缓存地图,配合openlayers使地图显示更快。可以把tilecache想成一个中间件,WMS服务器不用自己缓存地图,tilecache可以帮他完成。tilecache支持多种服务器和多种OGC服务标准,以及支持多种请求方式和格式。
tilecache的配置可以看ESRI论坛的教程,因为我是用ubuntu和apache的,可能配置上有些不同,但使用大致还是相同的。tilecache中有一个tilecache.cfg文件,这是个配置文件,当有用户请求时,tilecache会载入这个文件。下面是我的配置文件,
1
2
3
|
[cache] type = GoogleDisk #默认是Disk,googledisk是以z / x / y.extension的方式存储 base = / tmp / tilecache #缓存的路径 |
1
2
3
4
5
6
7
8
|
[google] #图层的名称 type = WMSLayer # url = http: / / 192.168 . 1.106 : 8080 / geoserver / wms #wms的url layers = topp:states #wms所拥有的图层 extension = png resolutions = 156543.033900000 , 78271.516950000 , 39135.758475000 , 19567.879237500 , 9783.939618750 , 4891.969809375 , 2445.984904688 , 1222.992452344 , 611.496226172 , 305.748113086 , 152.874056543 , 76.437028271 , 38.218514136 , 19.109257068 , 9.554628534 , 4.777314267 , 2.388657133 , 1.194328567 , 0.59716428337097171575 , 0.298582142 #划分比例尺,不明白的可以看看这篇 srs = EPSG: 900913 #google map 的投影 bbox = - 20037508.3427892 , - 20037508.3427892 , 20037508.3427892 , 20037508.3427892 #显示的范围 |
如果不使用resolutions,也可以用maxResolution设定最大的比例尺,系统会根据level自动声称resolutions, 但如果同时设置,resolutions会覆盖level。bbox和resolutions要根据不同的投影来计算,之前我就是犯了这个错误,用 900913,但bbox设成了-180,-90,180,90,地图怎么也显示不出来。
接下来就用openlayers来显示,创建一个map,在option中resolutions和bbox都要和配置文件中的相同,单位要是米。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
var options = { resolutions:[ 156543.033900000 , 78271.516950000 , 39135.758475000 , 19567.879237500 , 9783.939618750 , 4891.969809375 , 2445.984904688 , 1222.992452344 , 611.496226172 , 305.748113086 , 152.874056543 , 76.437028271 , 38.218514136 , 19.109257068 , 9.554628534 , 4.777314267 , 2.388657133 , 1.194328567 , 0.59716428337097171575 , 0.298582142 ], projection: new OpenLayers.Projection(”EPSG: 900913 ″), units: “m”, maxExtent: new OpenLayers.Bounds( - 20037508.34 , - 20037508.34 , 20037508.34 , 20037508.34 ), }; map = new OpenLayers. Map (’ map ’,options); 添加google地图 var googleMap = new OpenLayers.Layer.Google( “Google 卫星图”, { type : G_SATELLITE_MAP, sphericalMercator: true } ); map .addLayer(googleMap); 添加一个tilecache的WMS wms = new OpenLayers.Layer.WMS( “wms”, “http: / / localhost / tilecache / tilecache.py”, { layers: ‘google’, srs: ‘EPSG: 900913 ′, format : ‘image / png’, transparent: true }, { maxExtent: new OpenLayers.Bounds( - 14206537.827649845 , 2721171.5119208517 , - 7133550.0444934964 , 6549529.8947561011 ), reproject: true, opacity: 0.4 , isBaseLayer: false } ); map .addLayer(wms); |
如果以能成功显示的话,那么恭喜你,你已经可以成功叠加了google map和tilecache生成的WMS,你也可以去缓存查看已缓存的图片。现在可以用openlayers的另一个类直接访问缓存,可用firebug来看下图片的请求地址,是以http://localhost/tilecache/tilecache.py/1.0.0/google/z/x/y.extension的形式。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
tms = new OpenLayers.Layer.TMS( “google”, “http: / / localhost / tilecache / tilecache.py / ”, { serviceVersion: “ 1.0 . 0 ″, layername: “google”, type : “png”, opacity: 0.4 , maxExtent: new OpenLayers.Bounds( - 14206537.827649845 , 2721171.5119208517 , - 7133550.0444934964 , 6549529.8947561011 ), isBaseLayer: false } ); map .addLayer(tms); |
但这不是我的最终目的,我是想先缓存完图片然后再访问,而不是边访问边缓存。tilecache也想到了这点,他有一个小工具tilecache_seed.py,可以帮你完成这个工作。
1
|
python tilecache_seed.py “http: / / localhost / tilecache / tilecache.py” google 5 10 - 14206537.827649845 , 2721171.5119208517 , - 7133550.0444934964 , 6549529.8947561011 |
上面代码是说将配置文件中图层名为google,在-14206537.827649845,2721171.5119208517,-7133550.0444934964,6549529.8947561011这个范围中的缩放等级为5到10的缓存起来,最后直接用OpenLayers.Layer.TMS访问就可以了。
欢迎大家来我的新家看一看 3wwang个人博客-记录走过的技术之路
geoserver 的缓存技术的更多相关文章
- 网站缓存技术总结( ehcache、memcache、redis对比)
网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...
- ASP.NET Core 缓存技术 及 Nginx 缓存配置
前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...
- .Net环境下的缓存技术介绍 (转)
.Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 ...
- [.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术
[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性. 安全性设置 设置客户端操作秘密 redis安装 ...
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...
- PHP开发中的缓存技术汇总
在PHP开发中,出于对网站服务器负载的考虑,往往需要对页面.数据等内容进行缓存处理,下面就来看看,在PHP开发中有哪些缓存方式吧. 1.页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存, ...
- .Net环境下的缓存技术介绍
.Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 1.1 ...
- ASP.NET 缓存技术分析
缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大 ...
随机推荐
- 不设目标也能通关「马里奥」的AI算法,全靠好奇心学习
在强化学习中,设计密集.定义良好的外部奖励是很困难的,并且通常不可扩展.通常增加内部奖励可以作为对此限制的补偿,OpenAI.CMU 在本研究中更近一步,提出了完全靠内部奖励即好奇心来训练智能体的方法 ...
- 关于VS+ImageWatch在线调试问题
1.使用VS肯定离不开在线调试 2.使用Opencv在VS下进行图像处理,那肯定少不了Image Watch 这两个软件在线调试都存在大坑,弄得精疲力尽才找到解决办法!!! 以下问题都可以通过这个设置 ...
- UVA-572-搜索基础题
题意 GeoSurvComp 地理调查公司负责发现石油存储,这次GeoSurvComp公司在一个大型矩形区域上工作,它用一个网格分割地表,然后用可感知装备来单独分析每块小方格区域下是否包含石油,有油的 ...
- oracle10偶然性卡住登陆
连接数据库异常:登陆数据库后以"conn /as sysdba"方式登陆正常,数据库轻载,无压力:于是检查数据库的监听器,输入"lsntctl services" ...
- PHP闭包
# 提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: $func = function() { }; //带结束符 ...
- java ee7 软件安装和环境配置
1. java ee sdk 最新版下载地址 Java EE软件开发包(Software Development Kit, SDK) http://www.oracle.com/technetwork ...
- 可视化库-seaborn-Facetgrid(第五天)
1. sns.Facetgrid 画一个基本的直方图 import numpy as np import pandas as pd from scipy import stats, integrate ...
- android MD5 SHA1
参考文章: AndroidStudio 中怎样查看获取MD5和SHA1值(应用签名)(https://www.cnblogs.com/zhchoutai/p/7102516.html) 使用 java ...
- 快速可靠网络传输协议 KCP(转)
KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果.纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定 ...
- nmap扫描工具
1.NMap工具 主要功能:探测主机是否在线.扫描主机开放端口和嗅探网络服务,用于网络探测和安全扫描. NMap支持很多扫描技术,例如:UDP.TCPconnect().TCPSYN(半开扫描).ft ...