概述:

前面的文章有实现IDW插值并生成等值面的,本文在前文基础上实现气象NC数据生成等值面。

效果:

Arcgis预览图

实现后

3、代码

package com.lzugis.netcdf;import com.lzugis.CommonMethod;
import com.lzugis.geotools.EquiSurface;
import ucar.nc2.NetcdfFile;
import ucar.nc2.Variable;
import ucar.nc2.dataset.NetcdfDataset;
import wContour.Contour;
import wContour.Global.Border;
import wContour.Global.PolyLine;
import wContour.Global.Polygon;import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Nc2EquiSurface {private static String rootPath = System.getProperty("user.dir");private EquiSurface equ = new EquiSurface();public Map getNcData(String ncpath) {Map map = new HashMap();NetcdfFile ncfile = null;try {ncfile = NetcdfDataset.open(ncpath);Variable varLon = ncfile.findVariable("lon");Variable varLat = ncfile.findVariable("lat");Variable varPre = ncfile.findVariable("TEM");float[] lon = (float[]) varLon.read().copyToNDJavaArray();float[] lat = (float[]) varLat.read().copyToNDJavaArray();float[][] pre = (float[][]) varPre.read().copyToNDJavaArray();double[] dLon = new double[lon.length], dLat = new double[lon.length];double[][] dPre = new double[pre.length][pre[0].length];for (int i = 0, len = lon.length; i < len; i++) {dLon[i] = Double.parseDouble(String.valueOf(lon[i]));}for (int i = 0, len = lat.length; i < len; i++) {dLat[i] = Double.parseDouble(String.valueOf(lat[i]));}for (int i = 0, len = pre.length; i < len; i++) {float[] _pre = pre[i];for (int j = 0, jlen = _pre.length; j < jlen; j++) {dPre[i][j] = Double.parseDouble(String.valueOf(_pre[j]));}}map.put("lon", dLon);map.put("lat", dLat);map.put("tem", dPre);} catch (IOException e1) {e1.printStackTrace();}return map;}public String nc2EquiSurface(Map ncData, double[] dataInterval) {String geojsonpogylon = "";List<PolyLine> cPolylineList = new ArrayList<PolyLine>();List<Polygon> cPolygonList = new ArrayList<Polygon>();double[][] _gridData = (double[][]) ncData.get("tem");int[][] S1 = new int[_gridData.length][_gridData[0].length];double[] _X = (double[]) ncData.get("lon"), _Y = (double[]) ncData.get("lat");double _undefData = -9999.0;List<Border> _borders = Contour.tracingBorders(_gridData, _X, _Y,S1, _undefData);int nc = dataInterval.length;cPolylineList = Contour.tracingContourLines(_gridData, _X, _Y, nc,dataInterval, _undefData, _borders, S1);// 生成等值线cPolylineList = Contour.smoothLines(cPolylineList);// 平滑cPolygonList = Contour.tracingPolygons(_gridData, cPolylineList,_borders, dataInterval);geojsonpogylon = equ.getPolygonGeoJson(cPolygonList);return geojsonpogylon;}public static void main(String[] args) {Nc2EquiSurface nc2equ = new Nc2EquiSurface();CommonMethod cm = new CommonMethod();long start = System.currentTimeMillis();String ncpath = rootPath + "/data/nc/gdfs1.nc";//获取NC的数据Map map = nc2equ.getNcData(ncpath);//根据NC生成等值面double[] dataInterval = new double[]{0, 5, 10, 15, 20, 25, 30, 35, 40, 45};String strGeojson = nc2equ.nc2EquiSurface(map, dataInterval);String strFile = rootPath + "/out/china_pre.json";cm.append2File(strFile, strGeojson);System.out.println("Total cost:" + (System.currentTimeMillis() - start));}
}

----------------------------------------------------------------------------------------------

如果我的文章对您有帮助,谢谢支持!

技术博客

CSDN:http://blog.csdn.NET/gisshixisheng

博客园:http://www.cnblogs.com/lzugis/

在线教程

http://edu.csdn.Net/course/detail/799

Github

https://github.com/lzugis/

联系方式

q       q:1004740957

e-mail:niujp08@qq.com

公众号:lzugis15

Q Q 群:452117357(webgis)

337469080(Android)

Geotools中实现NC转等值面相关推荐

  1. geotools中等值面的生成与OL3中的展示

    概述: 本文讲述如何在geotools中IDW插值生成等值面,并根据给定shp进行裁剪,并生成geojson数据,以及Openlayers3中展示. 效果: 插值数据 裁剪结果 裁剪区域数据 实现代码 ...

  2. 解决GeoTools中CQL解析中文字段名的问题

    GeoTools中CQL无法解析中文字段名的过滤条件,会报异常错误,经过一个下午的努力,终于通过简单有效的方式解决啦 String filterCondition = "temp='&quo ...

  3. Linux中安装nc(netcat)常见问题

    Linux中安装nc(netcat)常见问题 Spark Streaming编写wordCount程序时,在Linux集群中需要安装nc,来对程序中使用到的端口进行开放. 在安装nc的时候,常出现的问 ...

  4. GeoJson的生成与解析,JSON解析,Java读写geojson,geotools读取shp文件,Geotools中Geometry对象与GeoJson的相互转换

    GeoJson的生成与解析 一.wkt格式的geometry转成json格式 二.json格式转wkt格式 三.json格式的数据进行解析 四.Java读写geojson 五.geotools读取sh ...

  5. 电路原理图中的“NC“是什么意思?

    电路原理图中的"NC"是什么意思? 1.在看电路原理图的时候,电路原理图上有"NC",我查了下是表示"此处不贴任何电子器件",我看了下实际的 ...

  6. Geotools中蜂巢的实现

    概述 本文讲述如何在geotools中实现蜂巢效果. 效果 实现 1.扩展类IntersectionBuilder import com.vividsolutions.jts.geom.Coordin ...

  7. GeoTools中的空间关系(Geometry Relationships)和空间操作(Geometry Operations)

    参考原文:GeoTools中的空间关系和空间操作 一.GeoTools包含的空间关系和空间操作: 空间关系(Geometry Relationships): 常见的空间关系(Geometry Rela ...

  8. java操作geotiff_关于java使用geotools中的GeoTiffReader读取tif图像时报错

    关于java使用geotools中的GeoTiffReader读取tif图像时报错:找不到类 javax.media.jai.PlanarImage 的错误 代码放上: import java.io. ...

  9. Linux中的nc测试端口是否开放

    nc测试端口是否开放 在Linux中有一个级强大的网络工具netcat,在默认情况下面都是没有安装的,现在介绍一下安装过程  其实安装很简单 一.安装使用 1.只需输入命令yum安装: [root@S ...

最新文章

  1. html盒子阴影的语法,css3 盒阴影box-shadow
  2. mysql slave是什么_创建slave的搜索结果-阿里云开发者社区
  3. C#语法:多线程编程(Thread)
  4. 《JAVA与模式》之模板方法模式
  5. 【动态规划】 多米诺骨牌 (ssl 1632/luogu 1282)
  6. javafx 示例_JavaFX列表示例
  7. linux标准I/O——标准I/O介绍
  8. python3库黑客_想知道黑客为什么首先Python吗?看看这些渗透测试工具和库
  9. Linux -- 基于zookeeper的java api(二)
  10. gRPC编译和安装——Linux版
  11. A Knapsack Problem - hackerrank
  12. 未在本地计算机上注册“OraOLEDB.Oracle”提供程序
  13. 【实用开发工具】将BAT脚本打包成exe可执行文件
  14. 吹爆这个最近在用的 IDEA 神器
  15. java 8 把list中对象的属性转成list
  16. 代码 bug 嗅探器:Sanitizer
  17. 说说程序员不解风情的瞬间
  18. linux批量处理图片
  19. spring-boot-maven-plugin:3.0.0:repackage 报错【解决】
  20. STM32写FLASH期间导致中断无法响应的解决思路

热门文章

  1. 记事本中TAB键替换为空格键的方法
  2. iOS Bluetooth 打印小票
  3. 【JSONP技巧拓展】————2、JSONP 安全攻防技术
  4. 用python做dnf脚本好还是c语言好,养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨...
  5. canvas+js实现简单的坦克大战小游戏
  6. html 增加等待状态,html5--等待加载效果
  7. 睡眠手册-《斯坦福高效睡眠法》笔记
  8. CSS:文字下波浪线动画效果
  9. HelloWorld的几种百变形态,程序员真会玩
  10. 微型计算机状态标志,微机原理--指令系统--判断状态标志位!尤其是OF和CF!!...