最近在做⼀个开源GIS的demo的⼯作,⼯作中涉及到了地图⽡⽚,选取的开发环境是geoserver+openlayers,那么地图⽡⽚⾃然⽽然也就使⽤ geowebcache,geowebcache就相当于是openlayer和geoserver之间的中介,⾸先,geowebcache会根据你的配置信息,把相应的地图图层切好图,存放在磁盘中,然后在使⽤openlayer加载地图服务的时候,把地图服务的地址指向 geowebcache,geowebcache接收到这些请求后,会根据请求的位置和⽐例尺在切⽚⽬录中到对应的⽡⽚,然后返回给你,省去了动态⽣成地图的过程,速度⼤幅度提⾼,⽽且由于请求的图⽚资源是事先⽣成好的,浏览器加载这些图⽚之后,下⼀次再去请求同样的图⽚,就会从浏览器的缓存中拉去,速度进⼀步提⾼! 下⾯说⼀下geowebcache的配置使⽤。⾸先下载war包,在tomcat中解压后,会在WEB-INF⽬录下到⼀系列配置⽂件,先到l,然后在web-app根元素下添加:
[html]
1. <context-param>
2. <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
3. <param-value>D:/data/cache</param-value>
4. </context-param>
param-value的值就是你要存放geowebcache⽡⽚的位置,配置好这⾥,重启tomcat,你会发现在你的⽡⽚⽬录下⽣成了⼀些⽂件,其中就有l,这个⽂件是geowebcache配置的关键所在,以下是这个⽂件的配置信息:
[html]
1. <?xml version="1.0" encoding="utf-8"?>
2. <gwcConfiguration xmlns:xsi="www.w
2001/XMLSchema-instance"
3. xmlns="/schema/1.5.3"
4. xsi:schemaLocation="/schema/1.
5.3 /schema/1.5.3/geowebcache.xsd">
5. <version>1.5.3</version>
6. <backendTimeout>120</backendTimeout>
7. <serviceInformation>
8. <title>GeoWebCache</title>
9. <description>GeoWebCache is an advanced tile cache for WMS servers.It supports a large variety of protocols and
10. formats, including WMS-C, WMTS, KML, Google Maps and Virtual Earth.</description>
11. <keywords>
12. <string>WFS</string>
13. <string>WMS</string>
14. <string>WMTS</string>
15. <string>GEOWEBCACHE</string>
16. </keywords>
17. <serviceProvider>
18. <providerName>lzugis</providerName>
19. <providerSite>blog.csdn/gisshixisheng</providerSite>
20. <serviceContact>
21. <individualName>lzugis</individualName>
22. <positionName>GIS⼯程师</positionName>
23. <addressType>⼯程师</addressType>
24. <addressStreet>海淀区翠微路甲3号</addressStreet>
25. <addressCity>北京</addressCity>抽油机节能
26. <addressAdministrativeArea>海淀区</addressAdministrativeArea>
27. <addressPostalCode>010010</addressPostalCode>
28. <addressCountry>中国,China</addressCountry>
29. <phoneNumber>+81 189 **** ****</phoneNumber>
30. <faxNumber>+81 189 **** ****</faxNumber>
31. <addressEmail>niujp08@qq</addressEmail>
32. </serviceContact>
33. </serviceProvider>
34. <fees>NONE</fees>
35. <accessConstraints>NONE</accessConstraints>
36. </serviceInformation>
37.
38. <gridSets>
39. <!-- Grid Set Example, by default EPSG:900913 and EPSG:4326 are defined -->
40. <gridSet>
41. <!-- This does not have to be an EPSG code, you can also have multiple gridSet elements per SRS -->
42. <name>EPSG:4326</name>
43. <srs>
44. <number>4326</number>
45. </srs>
46. <extent>
47. <coords>
48. <double>73.45100463600005</double>
49. <double>18.16324718800007</double>
50. <double>134.976797647</double>
十一刀51. <double>53.53194315200005</double>
52. </coords>
53. </extent>
54. <scaleDenominators>
55. <double>25000000</double>
白城市文化小学56. <double>1000000</double>
57. <double>100000</double>
58. <double>25000</double>
59. </scaleDenominators>
60. <tileHeight>256</tileHeight>
61. <tileWidth>256</tileWidth>
62. </gridSet>
63. </gridSets>
64.
65. <layers>
66. <wmsLayer>
67. <name>china</name>
68. <mimeFormats>
69. <string>image/gif</string>
70. <string>image/jpeg</string>
71. <string>image/png</string>
72. <string>image/png8</string>
73. </mimeFormats>
74. <wmsUrl>
75. <string>200.200.200.220:8888/geoserver/wms</string>
76. </wmsUrl>
77. <wmsLayers>geoserver:china</wmsLayers>
78. </wmsLayer>
79. </layers>
80. </gwcConfiguration>
配置好上⾯的信息之后,进⼊:,点击"Reload Configuration"重新读取配置信息,如下所⽰:
如果配置信息没错,你会发现,你所配置的图层信息已经显⽰在这个页⾯上了,点击“Seed this layer”,然后你需要输⼊下⾯这些信息:
设置好,点submit就开始切图了。在资源管理器中打开,如下图:
配置完成以后,就是如何在地图中显⽰了,下⾯是显⽰的源代码:
[html]
手机移动电池1. <pre name="code" class="html"><html xmlns="/1999/xhtml">
2. <head>
上海市教育评估院
3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4. <title>china EPSG:4326 image/png</title>
5. <link rel="stylesheet" type="text/css" href="200.200.200.220/OpenLayers-2.12/theme/default/style.css"/>
6. <style type="text/css">
7. body { font-family: sans-serif; font-weight: bold; font-size: .8em; }
8. body { border: 0px; margin: 0px; padding: 0px; }
9. #map { width: 100%; height: 100%; border: 0px; padding: 0px; }
10. </style>
11. <script type="text/javascript" src="200.200.200.220/OpenLayers-2.12/OpenLayers.js"></script>
12. <script type="text/javascript" src="200.200.200.220/OpenLayers-2.12/lib/OpenLayers/Lang/zh-CN.js"></script>
13. <script type="text/javascript">
14. var map, demolayer;
15. OpenLayers.DOTS_PER_INCH = 90.71428571428572;
16. ImageLoadErrorColor = 'transparent';
17. function init(){
18. var mapOptions = {
19. resolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.021********,
20. 0.010*********, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4,
21. 3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5,
22. 2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6,
23. 1.341104507446289E-6, 6.705522537231445E-7, 3.3527612686157227E-7
24. ],
25. projection: new OpenLayers.Projection('EPSG:4326'),
26. maxExtent: new OpenLayers.Bounds(-180.0,-90.0,180.0,90.0),
27. units: "degrees",
28. controls: []
29. };
30. map = new OpenLayers.Map('map', mapOptions );
31.
32. map.addControl(new OpenLayers.Control.PanZoomBar({
33. position: new OpenLayers.Pixel(2, 15)
34. }));
35. map.addControl(new OpenLayers.Control.Navigation());
36. map.addControl(new OpenLayers.Control.Scale($('scale')));
37. map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
38.
39. demolayer = new OpenLayers.Layer.WMS(
40. "china","200.200.200.220:8080/geowebcache/service/wms",
41. {layers: 'china', format: 'image/png' },
42. { tileSize: new OpenLayers.Size(256,256)}
43. );
44. map.addLayer(demolayer);
45. ToExtent(new OpenLayers.Bounds(73.45100463600005, 18.16324718800007,
46. 134.976797647, 53.53194315200005)
47. );
48. }
49. </script>
50. </head>
51. <body onLoad="init()">
52. <div id="map"></div>
53. </body>
54. </html>
显⽰的结果如下:
附件:
或者我的百度⽹盘,地址:pan.baidu/s/1kTJt91l