diff --git a/meteoinfo-chart/pom.xml b/meteoinfo-chart/pom.xml
index 9af7a1c7f..397f380b6 100644
--- a/meteoinfo-chart/pom.xml
+++ b/meteoinfo-chart/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-chart/src/main/java/org/meteoinfo/chart/graphic/GraphicFactory.java b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/graphic/GraphicFactory.java
index 51c6a3616..5b2c784cf 100644
--- a/meteoinfo-chart/src/main/java/org/meteoinfo/chart/graphic/GraphicFactory.java
+++ b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/graphic/GraphicFactory.java
@@ -1726,6 +1726,68 @@ public static GraphicCollection3D createPolygons3D(Array xa, Array ya, Array za,
return graphics;
}
+ /**
+ * Create 3D polygons
+ *
+ * @param xa X coordinate array
+ * @param ya Y coordinate array
+ * @param za Z coordinate array
+ * @param pgbs PolygonBreak list
+ * @return Graphics
+ */
+ public static GraphicCollection3D createPolygons3D(Array xa, Array ya, Array za, List pgbs) {
+ xa = xa.copyIfView();
+ ya = ya.copyIfView();
+ za = za.copyIfView();
+
+ GraphicCollection3D graphics = new GraphicCollection3D();
+ double x, y, z;
+ int n = (int) xa.getSize();
+ PolygonZShape pgs;
+ PointZ p;
+ List points = new ArrayList<>();
+ if (xa.getRank() == 1) {
+ IndexIterator xIter = xa.getIndexIterator();
+ IndexIterator yIter = ya.getIndexIterator();
+ IndexIterator zIter = za.getIndexIterator();
+ int ii = 0;
+ while (xIter.hasNext()) {
+ x = xIter.getDoubleNext();
+ y = yIter.getDoubleNext();
+ z = zIter.getDoubleNext();
+ points.add(new PointZ(x, y, z));
+ }
+ if (points.size() > 2) {
+ points.add((PointZ) points.get(0).clone());
+ pgs = new PolygonZShape();
+ pgs.setPoints(points);
+ Graphic aGraphic = new Graphic(pgs, pgbs.get(ii));
+ graphics.add(aGraphic);
+ ii++;
+ }
+ } else {
+ int[] shape = xa.getShape();
+ int nRow = shape[0];
+ int nCol = shape[1];
+ int idx;
+ for (int i = 0; i < nCol; i++) {
+ points = new ArrayList<>();
+ for (int j = 0; j < nRow; j++) {
+ idx = j * nCol + i;
+ x = xa.getDouble(idx);
+ y = ya.getDouble(idx);
+ z = za.getDouble(idx);
+ points.add(new PointZ(x, y, z));
+ }
+ points.add((PointZ) points.get(0).clone());
+ pgs = new PolygonZShape();
+ pgs.setPoints(points);
+ graphics.add(new Graphic(pgs, pgbs.get(i)));
+ }
+ }
+ return graphics;
+ }
+
/**
* Add wireframe polylines
*
diff --git a/meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/GLPlot.java b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/GLPlot.java
index 77fe92914..c9cb86f10 100644
--- a/meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/GLPlot.java
+++ b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/GLPlot.java
@@ -2162,18 +2162,19 @@ protected void drawZAxis(GL2 gl, PointF loc) {
skip = getLabelGap(this.zAxis.getTickLabelFont(), tlabs, axisLen);
float x1 = x;
float y1 = y;
- float tickLen = this.zAxis.getTickLength() * this.lenScale * transform.getYLength() / 2;
+ float yTickLen = this.zAxis.getTickLength() * this.lenScale * transform.getYLength() / 2;
+ float xTickLen = this.zAxis.getTickLength() * this.lenScale * transform.getXLength() / 2;
if (x < center.x) {
if (y > center.y) {
- y1 += tickLen;
+ y1 += yTickLen;
} else {
- x1 -= tickLen;
+ x1 -= xTickLen;
}
} else {
if (y > center.y) {
- x1 += tickLen;
+ x1 += xTickLen;
} else {
- y1 -= tickLen;
+ y1 -= yTickLen;
}
}
xAlign = XAlign.RIGHT;
diff --git a/meteoinfo-common/pom.xml b/meteoinfo-common/pom.xml
index 0f0b51aba..581b5d116 100644
--- a/meteoinfo-common/pom.xml
+++ b/meteoinfo-common/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-common/src/main/java/org/meteoinfo/common/util/GlobalUtil.java b/meteoinfo-common/src/main/java/org/meteoinfo/common/util/GlobalUtil.java
index 43031850b..92deb3b16 100644
--- a/meteoinfo-common/src/main/java/org/meteoinfo/common/util/GlobalUtil.java
+++ b/meteoinfo-common/src/main/java/org/meteoinfo/common/util/GlobalUtil.java
@@ -67,7 +67,7 @@ public class GlobalUtil {
public static String getVersion(){
String version = GlobalUtil.class.getPackage().getImplementationVersion();
if (version == null || version.equals("")) {
- version = "3.6.0-beta1";
+ version = "3.6.0";
}
return version;
}
diff --git a/meteoinfo-console/pom.xml b/meteoinfo-console/pom.xml
index 46b38dbaa..0018b3eea 100644
--- a/meteoinfo-console/pom.xml
+++ b/meteoinfo-console/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-data/pom.xml b/meteoinfo-data/pom.xml
index 2aa196cd5..28311defa 100644
--- a/meteoinfo-data/pom.xml
+++ b/meteoinfo-data/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-dataframe/pom.xml b/meteoinfo-dataframe/pom.xml
index 22bdee77b..35a575f9f 100644
--- a/meteoinfo-dataframe/pom.xml
+++ b/meteoinfo-dataframe/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-geo/pom.xml b/meteoinfo-geo/pom.xml
index b6cc0b81f..cd74b4534 100644
--- a/meteoinfo-geo/pom.xml
+++ b/meteoinfo-geo/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-geo/src/main/java/org/meteoinfo/geo/mapdata/ShapeFileManage.java b/meteoinfo-geo/src/main/java/org/meteoinfo/geo/mapdata/ShapeFileManage.java
index eda140c4d..bd4a421a7 100644
--- a/meteoinfo-geo/src/main/java/org/meteoinfo/geo/mapdata/ShapeFileManage.java
+++ b/meteoinfo-geo/src/main/java/org/meteoinfo/geo/mapdata/ShapeFileManage.java
@@ -29,6 +29,7 @@
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+ import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
@@ -106,7 +107,7 @@ public static VectorLayer loadShapeFile(String shpfilepath, String encoding) thr
loadShxFile(shxFile);
//Open shp file
- DataInputStream br = new DataInputStream(new BufferedInputStream(new FileInputStream(shpFile)));
+ DataInputStream br = new DataInputStream(new BufferedInputStream(Files.newInputStream(shpFile.toPath())));
VectorLayer aLayer;
//byte[] arr = new byte[(int)shpFile.length()];
byte[] arr = new byte[100];
@@ -394,11 +395,13 @@ private static VectorLayer readPolylineZShapes(DataInputStream br, int shapeNum)
}
//Read measure
- double mmin = buffer.getDouble();
- double mmax = buffer.getDouble();
double[] mArray = new double[numPoints];
- for (int j = 0; j < numPoints; j++) {
- mArray[j] = buffer.getDouble();
+ if (buffer.position() < buffer.capacity()) {
+ double mmin = buffer.getDouble();
+ double mmax = buffer.getDouble();
+ for (int j = 0; j < numPoints; j++) {
+ mArray[j] = buffer.getDouble();
+ }
}
//Get pointZ list
diff --git a/meteoinfo-geometry/pom.xml b/meteoinfo-geometry/pom.xml
index ff20258cf..ee4986e40 100644
--- a/meteoinfo-geometry/pom.xml
+++ b/meteoinfo-geometry/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-image/pom.xml b/meteoinfo-image/pom.xml
index c87185a58..c7eb130b5 100644
--- a/meteoinfo-image/pom.xml
+++ b/meteoinfo-image/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-lab/milconfig.xml b/meteoinfo-lab/milconfig.xml
index a80f9368c..d9132b125 100644
--- a/meteoinfo-lab/milconfig.xml
+++ b/meteoinfo-lab/milconfig.xml
@@ -1,36 +1,36 @@
-
-
-
+
-
-
-
-
+
+
+
+
+
+
-
+
-
+
@@ -38,5 +38,5 @@
-
+
diff --git a/meteoinfo-lab/pom.xml b/meteoinfo-lab/pom.xml
index 809ca558a..774f2d024 100644
--- a/meteoinfo-lab/pom.xml
+++ b/meteoinfo-lab/pom.xml
@@ -4,7 +4,7 @@
org.meteothink
MeteoInfo
- 3.6-SNAPSHOT
+ 3.6.0
meteoinfo-lab
jar
diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl$py.class b/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl$py.class
index 78a27be46..7b511765b 100644
Binary files a/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl$py.class and b/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl$py.class differ
diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py b/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py
index 24fb129c0..217074d58 100644
--- a/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py
+++ b/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py
@@ -368,14 +368,26 @@ def fill(self, x, y, z, color=None, **kwargs):
:return: Filled 3D patches.
"""
- if color is not None:
- kwargs['facecolor'] = color
- lbreak, isunique = plotutil.getlegendbreak('polygon', **kwargs)
-
x = plotutil.getplotdata(x)
y = plotutil.getplotdata(y)
z = plotutil.getplotdata(z)
- graphics = GraphicFactory.createPolygons3D(x, y, z, lbreak)
+
+ lb, isunique = plotutil.getlegendbreak('polygon', **kwargs)
+ if color is None:
+ graphics = GraphicFactory.createPolygons3D(x, y, z, lb)
+ else:
+ alpha = kwargs.pop('alpha', None)
+ colors = plotutil.getcolors(color, alpha)
+ if len(colors) == 1:
+ lb.setColor(colors[0])
+ graphics = GraphicFactory.createPolygons3D(x, y, z, lb)
+ else:
+ lbs = []
+ for c in colors:
+ nlb = lb.clone()
+ nlb.setColor(c)
+ lbs.append(nlb)
+ graphics = GraphicFactory.createPolygons3D(x, y, z, lbs)
self.add_graphic(graphics)
return graphics
diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure$py.class b/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure$py.class
index 34943befd..d42a0daec 100644
Binary files a/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure$py.class and b/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure$py.class differ
diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure.py b/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure.py
index b950c7d4e..9f974ba8f 100644
--- a/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure.py
+++ b/meteoinfo-lab/pylib/mipylib/plotlib/_glfigure.py
@@ -478,6 +478,10 @@ def _add_axes(self, ax):
self.axes.append(ax)
self.getChart().addPlot(ax._axes)
self.getChart().setCurrentPlot(self.getChart().getPlots().size())
+ if isinstance(ax, Axes3DGL):
+ self.set_mousemode("rotate")
+ else:
+ self.set_mousemode("pan")
def remove_axes(self, ax=None):
"""
diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/miplot$py.class b/meteoinfo-lab/pylib/mipylib/plotlib/miplot$py.class
index 4e0726fa9..31791b52b 100644
Binary files a/meteoinfo-lab/pylib/mipylib/plotlib/miplot$py.class and b/meteoinfo-lab/pylib/mipylib/plotlib/miplot$py.class differ
diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py b/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py
index 4d0e98752..2756c8b54 100644
--- a/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py
+++ b/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py
@@ -1162,9 +1162,9 @@ def clf():
if g_figure is None:
return
- if isinstance(g_figure, GLFigure):
- delfig()
- return
+ # if isinstance(g_figure, GLFigure):
+ # delfig()
+ # return
if g_figure.getChart() is None:
return
diff --git a/meteoinfo-map/config.xml b/meteoinfo-map/config.xml
index a60481517..128ef8e86 100644
--- a/meteoinfo-map/config.xml
+++ b/meteoinfo-map/config.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/meteoinfo-map/pom.xml b/meteoinfo-map/pom.xml
index 2c7cb6a0c..06df09bad 100644
--- a/meteoinfo-map/pom.xml
+++ b/meteoinfo-map/pom.xml
@@ -4,7 +4,7 @@
org.meteothink
MeteoInfo
- 3.6-SNAPSHOT
+ 3.6.0
meteoinfo-map
jar
diff --git a/meteoinfo-math/pom.xml b/meteoinfo-math/pom.xml
index 9c298224a..e91986044 100644
--- a/meteoinfo-math/pom.xml
+++ b/meteoinfo-math/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-ndarray/pom.xml b/meteoinfo-ndarray/pom.xml
index 11d500e44..4401a9c8f 100644
--- a/meteoinfo-ndarray/pom.xml
+++ b/meteoinfo-ndarray/pom.xml
@@ -5,7 +5,7 @@
org.meteothink
MeteoInfo
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-projection/pom.xml b/meteoinfo-projection/pom.xml
index 3c9c4be41..8853167f2 100644
--- a/meteoinfo-projection/pom.xml
+++ b/meteoinfo-projection/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-table/pom.xml b/meteoinfo-table/pom.xml
index c1b89ce27..45e816925 100644
--- a/meteoinfo-table/pom.xml
+++ b/meteoinfo-table/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/meteoinfo-ui/pom.xml b/meteoinfo-ui/pom.xml
index 7ff3489e0..2bb098022 100644
--- a/meteoinfo-ui/pom.xml
+++ b/meteoinfo-ui/pom.xml
@@ -5,7 +5,7 @@
MeteoInfo
org.meteothink
- 3.6-SNAPSHOT
+ 3.6.0
4.0.0
diff --git a/pom.xml b/pom.xml
index f4b6a5b99..95a1808ce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.meteothink
MeteoInfo
- 3.6-SNAPSHOT
+ 3.6.0
pom