webGIS(离线版)研究路线归总
特注:不做详解,说明网上资源很多,找一篇,照着走一遍即可。
1.数据源要满足开源、Free且地理信息要完善
几经周折,选择了OSM,具体信息可以去其官方查看(它竟然把中国一分为二,大陆、台湾,坑爹!!!);
下载源:
http://download.geofabrik.de/asia.html(China TaiWan);
http://osm2vectortiles.org/downloads/
http://download.bbbike.org/osm/bbbike/
我选择了shp格式的数据源,当然你也可以选择osm,然后通过postGIS导入数据库中(postgreSQL、Oracle、DB2等),此处不做详解(http://blog.csdn.net/bobantangzlt/article/details/16992585);
2.部署geoserver (http://www.cnblogs.com/ada-zheng/archive/2013/07/16/3192921.html)(不做详解)
下载地址:http://geoserver.org/download/
具体的时候使用说明,参照官网即可;
部署后,需要用户登录(账号:admin;密码:geoserver).
具体的发布操作(不做详解),官网上有具体说明(shp、tif、osm等数据格式)
3.给每个图层加样式(sld)这个可以通过udig工具去做,所见即所得,非常便捷,况且还有些主题样式可供选择(切记:地理数据过大时,不要用table去做加载文件内的数据,程序会假死或崩掉)
4.待数据完整发布之后,该考虑用户体验啦,比较地图数据量比较大,吃内存,如果是动态提供服务的话,CPU也是很紧俏的
网上提出了很好的解决办法 :geoserver通过内置的geowebcache对发布的wms服务进行切图处理,然后通过gwc进行访问过滤,若请求的已存在(Tile)则直接返回该静态图片,若请求的不存在,则提交给geoserver重新生成图片即可
好了,重头戏来了!!!
如何实现OL3-->GWC-->GeoServer过程呢?
第一步:在geoserver\WEB-INF\web.xml文件操作如下:
此处做的修改的意义何在呢?字面上看,一目了然就是缓存的路径,不改默认是在C盘的位置,不过,实践过程中会发现,切片会比较占空间的。
第二步:在geoserver/data/gwc/geowebcache.xml
第三步:通过GWC把geoserver服务发布的地图切片(此处比较吃CPU、内存)
第四步:OL3(前)端的设置代码如下:
<pre name="code" class="html"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>china EPSG:4326 image/png</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<style type="text/css">
body { font-family: sans-serif; font-weight: bold; font-size: .8em; }
body { border: 0px; margin: 0px; padding: 0px; }
#map { width: 100%; height: 100%; border: 0px; padding: 0px; }
</style>
<script type="text/javascript" src="OpenLayers.js"></script>
<script type="text/javascript" src="zh-CN.js"></script>
<script type="text/javascript">
var map, demolayer;
OpenLayers.DOTS_PER_INCH = 90.71428571428572;
OpenLayers.Util.onImageLoadErrorColor = 'transparent';
function init(){
var mapOptions = {
resolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625,
0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 6.866455078125E-4,
3.4332275390625E-4, 1.71661376953125E-4, 8.58306884765625E-5, 4.291534423828125E-5,
2.1457672119140625E-5, 1.0728836059570312E-5, 5.364418029785156E-6, 2.682209014892578E-6,
1.341104507446289E-6, 6.705522537231445E-7, 3.3527612686157227E-7
],
projection: new OpenLayers.Projection('EPSG:4326'),
maxExtent: new OpenLayers.Bounds(-180.0,-90.0,180.0,90.0),
units: "degrees",
controls: [] };
map = new OpenLayers.Map('map', mapOptions ); map.addControl(new OpenLayers.Control.PanZoomBar({ position: new OpenLayers.Pixel(2,15 ) }));
map.addControl(new OpenLayers.Control.Navigation());
map.addControl(new OpenLayers.Control.Scale($('scale')));
map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
// map.events.register("zoomend", this, function (e) {
// if (map.getZoom() > 10)
// {
// map.setCenter(map.getCenter(),10);
// }
// if (map.getZoom() < 4)
// {
// map.setCenter(map.getCenter(),4);
// }
// }); demolayer = new OpenLayers.Layer.WMS(
"china","http://192.168.0.110:8080/geoserver/gwc/service/wms",
{layers: 'china:ChinaMap', format: 'image/png' },
{ tileSize: new OpenLayers.Size(256,256)}
);
map.addLayer(demolayer);
map.zoomToExtent(new OpenLayers.Bounds(73.45100463600005, 18.16324718800007,
134.976797647, 53.53194315200005)
); }
</script>
</head>
<body onLoad="init()">
<div id="map"></div>
</body>
</html>
至此思路已基本理清,期间收获还需亲自体察。。。
webGIS(离线版)研究路线归总的更多相关文章
- 离线版centos8安装docker笔记
嗨嗨哈哈,已经很久没有坐下来胡编乱造一点笔记了,平时云服务器搞惯了,一个命令就安装好了docker了的,但这次生不逢时的新机房就没那么幸运了,有多不逢时超乎想象,不仅仅服务器没有外网,就连周围方圆一公 ...
- [No00006D]下载离线版的github for windows【以Github for Windows 3.0.110.为例】
目录 先上地址后讲原理: 原理: 11个目录的文件怎么一口气下载呢? 最后,把下好的文件批量名,同时将GitHub.exe.manifest也放到软件根目录下(与GitHub.exe同级): 今后的猜 ...
- Chrome Restful Api 测试工具 Postman-REST-Client离线安装包下载,Axure RP Extension for Chrome离线版下载
[Postman for Chrome 离线下载] Postman-REST-Client离线安装包,可直接在Chrome浏览器本地安装使用,可模拟各种http请求,Restful Api测试, CS ...
- W3Cschool菜鸟教程离线版下载链接
请在电脑上打开以下链接进行下载w3cschool 离线版(chm):http://pan.baidu.com/s/1bniwRCV(最新,2014年10月21日更新)w3cschool 离线版(htm ...
- 搭建Mono for Android开发环境(用离线版)
上面为我现在的离线版的安装包内容(不知道为什么上传的图名字显示不出来,郁闷),这些文件可以到http://pan.baidu.com/s/1ntM8U4T这里去下载: 安装步骤如下: 1)jdk-6u ...
- Unity 3D 文件导入出错误解决方法以及unity圣典离线版下载地址
1.安装unity 时我选择了free版的,打开已有项目时出现如下错误提示. 解决方法:先把要导入的文件先拷贝到unity3d安装目录下对应的文件夹内,之后再返回unity3d软件,右键选择“导入”. ...
- Chrome小技巧:如何下载离线版安装文件
每当chrome有更新之后,都有不少用户想要下载离线版的安装文件,但苦于找不到下载地址而发愁,其实这个问题很简单,下面我来分享一下方法(仅针对Windows操作系统): 对于稳定版(正式版)Chrom ...
- visual studio 2015离线版msdn下载和安装
2014年11月13日,微软发布了Visual Studio 2015 Preview,但是Visual Studio 2015 的msdn该如何安装呢?下面脚本之家就为大家分享一篇visual st ...
- VS Code C# 插件离线版 1.6.2
VS Code C# 插件离线版,目前最新稳定版为:1.6.2 . 由于在扩展中下载C#插件总是缓慢,或者容易出现错误,特制作离线版本共享出来. 本离线版本为Windows版本,其他系统请在扩展中下载 ...
随机推荐
- 集群-Session解决方案
在集群中session安全和同步是个最大的问题,下面是收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景. 1. 客户端cookie加密 简单,高效.比较好的方法是自己采 ...
- AD10 怎样精确导入CAD 文件
1. 在 AD10 中 PCB 的形状根据实际情况设定,设定的尺寸等信息略.2. CAD 导入的格式要 CAD2004 以下的版本,AutoCAD 文件(*.DXF 或*.DWG)即可. 3. ...
- 【HDOJ】3367 Pseudoforest
并查集. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 10005 #d ...
- Node.js权威指南 (5) - 使用Buffer类处理二进制数据
5.1 创建Buffer对象 / 705.2 字符串的长度与缓存区的长度 / 725.3 Buffer对象与字符串对象之间的相互转换 / 74 5.3.1 Buffer对象的toString方法 / ...
- vaddin使用技巧
添加外部jar包的方法: 在项目目录下建立lib文件夹,把外部jar包复制到该文件夹底下.右键该jar包-构建路径-添加至构建路径即可.也可以配置构建路径-库-添加jar.
- 【转】265行JavaScript代码的第一人称3D H5游戏Demo
译文:http://blog.jobbole.com/70956/ 原文:http://www.playfuljs.com/a-first-person-engine-in-265-lines/ 这是 ...
- MVC5 学习整理
一.概述 MVC简介: • 模型(Model) “数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法.“模型”有对数据直接访问的权力,例如对数据库的访问.“ ...
- lightoj 1036 dp
题目链接:http://lightoj.com/volume_showproblem.php?problem=1036 #include <cstdio> #include <cst ...
- arm 及ndk编译
首页 » Android android的armeabi跟armeabi-v7a 网友分享于:2014-03-16 浏览:867次 android的armeabi和armeabi-v7 ...
- hdoj 3746 Cyclic Nacklace【KMP求在结尾加上多少个字符可以使字符串至少有两次循环】
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...