拖延了很久总算写了头条号的第一篇文章,哈哈。值得鼓励,啪啪啪,此处应该有掌声。
最近要搞个展示平台,奈何自己手上没人,只能用现成的了,开源白嫖当然很爽了~。正好整理一下geoserver的教程,方便大家学习。
因为标题长度限制,我就把副标题写在这里了,这是geoserver地图发布服务教程的第一篇,主要是介绍如何下载安装以及配置geoserver运行环境。
目录
- geoserver介绍
- java安装
- geoserver下载
- geoserver服务启动和停止
- 关于跨域问题解决
- X-Frame-Options跨域设置
geoserver介绍
geoserver确实是简单好用,不仅支持矢量和栅格的wfs和wms服务发布,还可以设置自己的配色方案。具体的还是看百度吧,比我说的清楚专业,哈哈哈。链接: https://baike.baidu.com/item/geoserver/2912114?fr=aladdin。咱们直接切入正题。
java安装
- 因为geoserver是java编出来的所以要有java的开发环境或者运行环境,这里我们就下载jdk就可以了。下载网址 https://baike.baidu.com/item/geoserver/2912114?fr=aladdin,我这里下载的是8,点击JDK下载就可以了。因为别的程序的原因我就只能用8,你们可以尝试一下最新的。

- 默认一路安装下来,然后开始环境配置,计算机->属性->高级系统设置->环境变量->系统变量->新.三个变量
- 变量名输入:JAVA_HOME
变量内容输入:E:Program FilesJavajdk-12.0.2(根据JAVA的安装路径来确定,实际上是使用JAVA安装路径下JDK的目录) - 变量名输入:Path(这个变量可能已经存在,存在的话就加个;往后添加) 变量内容输入:%JAVA_HOME%bin
- 变量名输入:classpath 变量内容输入:.;%JAVAHOME%libdt.jar;%JAVAHOME%libools.jar (注意最前面的点 . 不要漏掉。)
- 测试一下,打开cmd,输入java - version,就可以了。我这里安装是JRE。其实安装哪一个都不影响geoserver的使用。

geoserver下载
- 打开geoserver官网链接: http://geoserver.org/,选择稳定版最新的即可。既然有稳定最新的,当然用最新的啦。如下图所示。

- 点击这里,下载安装包,这个应该是与平台无关的,主要是我还没在linux上尝试,所以这里暂时还不确定。

- 下载后,恭喜你获得geoserver-2.17.1-bin.zip文件,解压缩,获得如下文件。

geoserver服务启动和停止
- 进入bin文件夹下,双击打开startup.bat就可以启动服务了,双击shutdown.bat就可以停止服务了。

- 当你双击startup之后,弹出命令行,经过等待后得到这张图的时候,恭喜你,服务启动了。

- 打开浏览器,输入默认网址http://localhost:8080/geoserver/就可以登陆了,初始的用户名是admin,密码是geoserver。

- 登陆后点击左侧的layer preview,看到多个发布的图层,随便选择一个,点击openlayers展示。就可以看到展示的图层了。恭喜恭喜,你已经可以开启你的地图发布之旅了。p.s.我点击的是us population那个。



关于跨域问题解决
- 找到程序相对路径下 webappsgeoserverWEB-INF中的web.xml,搜索“cross-origin”,找到两个标签,全部去掉注释。


- 修改成这样保存。

- 接下来很多教程会交给你让你复制匹配的版本的jar包,我是没找到在哪看geoserver的版本和jar包版本对应的信息,如果有知道的小伙伴,麻烦留言告诉我,感激不尽。那我怎么来找到这些jar包呢?找到程序相对路径下的lib文件夹,打开进去,意不意外,惊不惊喜,全都在里面!把划红线的三个拷贝到webappsgeoserverWEB-INFlib下面就可以了。重新启动,跨域问题安排了~

X-Frame-Options跨域设置
X-Frame跨域用来设置GeoServer站点页面是否允许被其他网页使用iframe方式引用 X-Frame-Options三个参数:
- DENY 表示该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许。
- SAMEORIGIN 表示该页面可以在相同域名页面的frame中展示。如果没有设置的话,默认是这个。所以在本机上展示没有问题,用别的机子调用就会报错。
- ALLOW-FROM uri 表示该页面可以在指定来源的frame中展示
- ALLOW-ALL 可在所有来源的frame中展示,但是我最新查的没有这个选项了。使用第三个吧。
解决方案同样是打开web.xml,将这段代码复制进去即可。
geoserver.xframe.shouldSetPolicy true geoserver.xframe.policy ALLOW-FROM就像这样,找个contex-param标签附近,拷贝进去,保存,重启服务即可。

如果请求出现如下错误,这是因为ALLOW-FROM[uri]后面参数没设置,不影响使用
Invalid 'X-Frame-Options' header encountered when loading '。。。。。326&format=application/openlayers': 'ALLOW-FROM' is not a recognized directive. The header will be ignored.最后求关注,求点赞,欢迎大家关注我的公众号,微信搜索“遥感程序员”。或者点击了解更多。
记录所学所用,包括但不限于遥感、地信、气象、生态环境,机器学习知识,相关文献阅读,编程代码实现。偶尔荒腔走板的聊聊其他。欢迎不同领域的朋友们加入进来,多多交流。