先贴一个效果图,使用的geoserver版本2.18.0,需要对应版本插件netcdf插件【Extensions》Coverage Formats》NetCDF】,使用tomcat8进行发布geoserver,端口启用的是9999;

这里面的源码以及一些工具等,可以到我的百度盘里面进行查找:

链接:https://pan.baidu.com/s/1qxfIKEoWZGG_gHd5HXPzMA 
提取码:cpnh

在使用的过程中出现各种问题,我这里也贴出来,希望贴友能够少踩这种坑

1、开始的时候我使用2.8.0,2.8.1等的版本,这些都是在官网上下载的war文件,发现部分版本的插件下载不了,这个demo需要使用到一个插件netcdf插件; 文件

2、使用2.8.x的时候,最终将发布的vms服务,直接使用leaflet将tile贴在地图上的时候,发现当地图放大到一定层级后,比如13,14及更大后,Tomcat就直接卡崩了,geoserver都刷不出来,cpu使用特别高,我换了高版本2.18.0后,这个问题解决了;

3、demo使用的数据来源noaa网站(https://psl.noaa.gov/data/gridded/data.ghcncams.html),这里面数据很多,我在上面随便找了一个温度的数据进行处理的,文件【air.mon.mean.nc】

这个数据是经纬度0.5x0.5的大小,文件nc格式,刚开始也是一脸懵,后面找到一个工具类ToolsUI.jar可以查看部分信息,这个在做demo的时候没什么用,我后面想解析nc文件,生成nc文件,就可能用到;【toolsUI.jar】

4、最终这个可以发布出去使用,可能会根据实时的数据,逐小时发布,这时就需要自动化脚本进行发布相关nc文件;

这里面使用到的3个文件:

文件1、自动发布数据和图层的命令,是根据官网上的api中curl命令进行写的;

文件2、我将上面使用到的air.mon.mean.nc文件,直接拆分成了多个nc文件,原始文件由三个维度(time,lat,on),我拆成多个nc文件,改变之后的维度是(lat,lon);

文件3、解析nc文件的格式,解读;

对curl命令行说明:

在使用命令前,需要先新建一个工作空间,本demo中的工作空间是workspace_ranfs

①发布nc文件数据存储,将nc该文件发布成栅格数据存储,发布到workspace_ranfs工作区,说明,这里面的temp0.nc文件是我自己通过上面的CreateNetCDF_2D.java生成的。

  1. curl -v -u admin:geoserver -XPUT -H "Content-type: text/plain" -d "file://D://tmp/temp0.nc" "http://localhost:9999/geoserver/rest/workspaces/workspace_ranfs/coveragestores/temp0/external.netcdf"

②修改样式,注意使用的是双引号还是单引号,在windows系统下使用单引号会报错

  1. curl -v -u admin:geoserver -XPUT -H "Content-type: text/xml" -d "<layer><defaultStyle><name>RH2Style</name><workspace>cite</workspace></defaultStyle></layer>" http://localhost:9999/geoserver/rest/layers/workspace_ranfs:temp0

③删除数据源和图层

  1. curl -v -u admin:geoserver -XDELETE "http://localhost:9999/geoserver/rest/workspaces/workspace_ranfs/coveragestores/temp0?recurse=true"

查看相关其它信息

  1. curl -v -u admin:geoserver -XGET http://localhost:9999/rest/workspaces/cite/datastores

url命令参考地址:https://docs.geoserver.org/2.10.0/user/rest/index.html#rest      这个是官方文档的地址

在NetCDF文件操作的时候,需要引入依赖:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.slf4j</groupId>
  4. <artifactId>slf4j-api</artifactId>
  5. <version>1.7.25</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/edu.ucar/netcdf -->
  8. <dependency>
  9. <groupId>edu.ucar</groupId>
  10. <artifactId>netcdf</artifactId>
  11. <version>4.3.22</version>
  12. </dependency>
  13. </dependencies>

定义样式RH2Style,我把这个样式放在cite工作空间下,样式配置参考官方文档:https://docs.geoserver.org/2.8.1/user/styling/sld-reference/ 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  3. xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
  5. <NamedLayer>
  6. <Name>rain</Name>
  7. <UserStyle>
  8. <Name>rain</Name>
  9. <Title>Rain distribution</Title>
  10. <FeatureTypeStyle>
  11. <Rule>
  12. <RasterSymbolizer>
  13. <Opacity>0.5</Opacity>
  14. <ColorMap>
  15. <ColorMapEntry color="#FFFFFF" quantity="243" opacity="0"/>
  16. <ColorMapEntry color="#9589D3" quantity="253" opacity="1"/>
  17. <ColorMapEntry color="#8ACECD" quantity="263" opacity="1"/>
  18. <ColorMapEntry color="#6197C2" quantity="273" opacity="1"/>
  19. <ColorMapEntry color="#5D8E33" quantity="283" opacity="1"/>
  20. <ColorMapEntry color="#BFA70B" quantity="293" opacity="1"/>
  21. <ColorMapEntry color="#F07F0D" quantity="303" opacity="1"/>
  22. <ColorMapEntry color="#A1350E" quantity="313" opacity="1"/>
  23. </ColorMap>
  24. </RasterSymbolizer>
  25. </Rule>
  26. </FeatureTypeStyle>
  27. </UserStyle>
  28. </NamedLayer>
  29. </StyledLayerDescriptor>

demo的html代码:(由于我使用的chineseTmsProviders.js是放在我们云上,是要根据访问流量和次数收费的),百度盘里面有这个文件

  1. <html>
  2. <head>
  3. <link rel="stylesheet" href="http://unpkg.com/leaflet@1.4.0/dist/leaflet.css" />
  4. <script src="http://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
  5. <script src="https://xxxxxx/lib/leaflet/leaflet.ChineseTmsProviders.js"></script>
  6. <style type="text/css">
  7. html,body{margin:0px;padding:0px;}
  8. </style>
  9. </head>
  10. <body>
  11. <div style="width: 100vw; height: 100vh" id="map"></div>
  12. <script type="text/javascript">
  13. // Make basemap
  14. const map = new L.Map('map', { center: new L.LatLng(32.433668, 105.829757), zoom: 5});
  15. map.setMaxZoom(18);
  16. //const osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
  17. var chinaTile = L.tileLayer.chinaProvider('Geoq.Normal.Map', {maxZoom: 17,minZoom: 2});
  18. var vms = L.tileLayer.wms("http://localhost:9999/geoserver/workspace_ranfs/wms", {
  19. layers: 'workspace_ranfs:temp0',
  20. format: 'image/png',
  21. transparent: true,
  22. attribution: "Weather data 2012 IEM Nexrad"
  23. });
  24. map.addLayer(chinaTile);
  25. map.addLayer(vms);
  26. </script>
  27. </body>
  28. </html>

参考博客:

用NetCDF创建和读取NC文件 https://blog.csdn.net/shener_m/article/details/83313037

netcdf数据nc格式数据java解析总结(三)使用java生成.nc格式文件 https://blog.csdn.net/ilovecr7/article/details/72901688

GeoServer实现NetCDF气象文件自动发布 https://blog.csdn.net/freeland1/article/details/78579971

geoserver的demo使用过程的更多相关文章

  1. Intel daal4py demo运行过程

    daal安装(记得先安装anaconda): git clone https://github.com/IntelPython/daal4py.git cd daal4py conda create ...

  2. mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程)

    写在最前 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生M ...

  3. tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

    今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...

  4. 转:RealThinClient LinkedObjects Demo解析

    这个Demo源码实现比较怪,有点拗脑,原因估是作者想把控件的使用做得简单,而封装太多. 这里说是解析,其实是粗析,俺没有耐心每个实现点都查实清楚,看源码一般也就连读带猜的. 这个Demo表达出的意义, ...

  5. 单机版简单弹幕墙demo (jqery+bootstrap)

    最近在看fcc  ,上面有一个弹幕墙设计的题目,要求从后端获取数据,显示出来.百度,谷歌都没找到相关好的例子作为借鉴,索性按照自己的思路写了一个简单的demo  .在做demo的过程中遇到最大的问题就 ...

  6. WPF常用控件应用demo

    WPF常用控件应用demo 一.Demo 1.Demo截图如下: 2.demo实现过程 总体布局:因放大缩小窗体,控件很根据空间是否足够改变布局,故用WrapPanel布局. <ScrollVi ...

  7. 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】

    文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...

  8. Jquery+ajax+json+servlet原理和Demo

    Jquery+ajax+json+servlet原理和Demo 大致过程: 用户时间点击,触发js,设置$.ajax,开始请求.服务器响应,获取ajax传递的值,然后处理.以JSON格式返回给ajax ...

  9. springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    @_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...

随机推荐

  1. 开发工具之Git(一)

    目录 一.什么是Git 二.Git基本原理 三.Git用户交互 一.什么是Git 答:Git是一个分布式版本控制软件.另外提一句,它的开发者就是大名鼎鼎的Linux之父Linus. 版本控制,顾名思义 ...

  2. ceph的pg平衡插件balancer

    前言 ceph比较老的版本使用的reweight或者osd weight来调整平衡的,本篇介绍的是ceph新的自带的插件balancer的使用,官网有比较详细的操作手册可以查询 使用方法 查询插件的开 ...

  3. HttpClient4.3 连接池参数配置及源码解读

    目前所在公司使用HttpClient 4.3.3版本发送Rest请求,调用接口.最近出现了调用查询接口服务慢的生产问题,在排查整个调用链可能存在的问题时(从客户端发起Http请求->ESB-&g ...

  4. mysql主备切换canal出现的问题解析

    通过配置VIP,在进行主备切换时,出现的报错信息: 1.当主备节点当前binlog文件名称相同时,原主节点的position小于主备切换后的position,出现如下报错: 2020-07-02 15 ...

  5. vue 常见记录

    # vuex在组件中如何获取vuex的state对象中的属性 https://blog.csdn.net/gavincz/article/details/81049461 # vuex全局变量使用 h ...

  6. zabbix、Cacti、Nagios、open-falcon、Ganglia、Prometheus开源监控比较

    Zabbix 一个基与WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案(普遍) 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...

  7. Guitar Pro吉他指弹入门——双手泛音

    曾经有一段时间在琴行里经常遇到有人来试琴,很多人试弹得曲子就是郑成河的<Flaming>,直译过来就是热情的意思.这首曲子里面有很多泛音存在,吉他泛音类似于钟鸣或者摇铃的声音,是一种令人耳 ...

  8. httpservlet类中两个service方法

    在浏览器访问html页面时,当数据提交给servlet时发生了什么,这是我们需要了解的. 1.我们需要了解一下servlet的继承体系. servlet接口 ------->GenericSer ...

  9. java40

    时隔小半年,重新捡起Java的学习 问题: 1.eclipse好久没用,再打开时,eclipse的项目都没有了,如何找回? 打开switch-workplace-other点开,选择以前的文件所在处. ...

  10. Java Stream 源码分析

    前言 Java 8 的 Stream 使得代码更加简洁易懂,本篇文章深入分析 Java Stream 的工作原理,并探讨 Steam 的性能问题. Java 8 集合中的 Stream 相当于高级版的 ...