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