add render2d module

This commit is contained in:
wyq 2024-03-09 23:05:40 +08:00
parent d9da7e4f73
commit 655821c9ad
48 changed files with 301 additions and 145 deletions

1
.idea/compiler.xml generated
View File

@ -15,6 +15,7 @@
<module name="meteoinfo-console" />
<module name="meteoinfo-geo" />
<module name="meteoinfo-chart" />
<module name="meteoinfo-render2d" />
<module name="meteoinfo-ndarray" />
<module name="meteoinfo-table" />
<module name="meteoinfo-data" />

2
.idea/encodings.xml generated
View File

@ -31,6 +31,8 @@
<file url="file://$PROJECT_DIR$/meteoinfo-ndarray/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/meteoinfo-projection/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/meteoinfo-projection/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/meteoinfo-render2d/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/meteoinfo-render2d/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/meteoinfo-table/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/meteoinfo-table/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/meteoinfo-ui/src/main/java" charset="UTF-8" />

4
.idea/misc.xml generated
View File

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
@ -12,9 +13,8 @@
<option value="$PROJECT_DIR$/meteoinfo-math/meteoinfo-mkl/pom.xml" />
</set>
</option>
<option name="workspaceImportForciblyTurnedOn" value="true" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="11" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

View File

@ -34,23 +34,63 @@
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-geo</artifactId>
<artifactId>meteoinfo-render2d</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-ui</artifactId>
<artifactId>meteoinfo-data</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wContour</artifactId>
<version>1.7.1</version>
<artifactId>meteoinfo-projection</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.scilab.forge</groupId>
<artifactId>jlatexmath</artifactId>
<version>1.0.7</version>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-image</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-math</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.l2fprod</groupId>
<artifactId>l2fprod-common-all</artifactId>
<version>6.9.1</version>
</dependency>
<dependency>
<groupId>org.freehep</groupId>
<artifactId>freehep-util</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.freehep</groupId>
<artifactId>freehep-graphicsio-emf</artifactId>
<version>${freehep.version}</version>
</dependency>
<dependency>
<groupId>org.freehep</groupId>
<artifactId>freehep-graphicsio-pdf</artifactId>
<version>${freehep.version}</version>
</dependency>
<dependency>
<groupId>org.freehep</groupId>
<artifactId>freehep-graphics2d</artifactId>
<version>${freehep.version}</version>
</dependency>
<dependency>
<groupId>org.freehep</groupId>
<artifactId>freehep-graphicsio-ps</artifactId>
<version>${freehep.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>

View File

@ -13,12 +13,11 @@ import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
import org.meteoinfo.common.*;
import org.meteoinfo.common.colors.ColorMap;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.colors.BoundaryNorm;
import org.meteoinfo.geometry.colors.ExtendType;
import org.meteoinfo.geometry.colors.LogNorm;

View File

@ -14,7 +14,7 @@
package org.meteoinfo.chart;
import org.meteoinfo.common.*;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import com.l2fprod.common.beans.BaseBeanInfo;
import com.l2fprod.common.beans.ExtendedPropertyDescriptor;
import com.l2fprod.common.beans.editor.ComboBoxPropertyEditor;

View File

@ -14,7 +14,7 @@
package org.meteoinfo.chart;
import org.meteoinfo.common.PointF;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import java.awt.BasicStroke;
import java.awt.Color;

View File

@ -20,7 +20,7 @@ import java.util.List;
import org.meteoinfo.common.Extent;
import org.meteoinfo.common.XAlign;
import org.meteoinfo.common.YAlign;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.meteoinfo.geometry.shape.Shape;

View File

@ -14,9 +14,8 @@ import java.awt.geom.Rectangle2D;
import org.meteoinfo.common.DataConvert;
import org.meteoinfo.common.PointF;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.legend.ArrowBreak;
import org.meteoinfo.geo.layer.VectorLayer;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.shape.WindArrow;
@ -384,9 +383,7 @@ public class ChartWindArrow {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
float zoom = 1.0f;
if (this.layer != null) {
if (this.layer instanceof VectorLayer) {
zoom = ((VectorLayer) this.layer).getDrawingZoom();
} else if (this.layer instanceof GraphicCollection) {
if (this.layer instanceof GraphicCollection) {
zoom = ((GraphicCollection) this.layer).getArrowZoom();
}
}

View File

@ -13,7 +13,7 @@ import org.meteoinfo.common.MIMath;
import org.meteoinfo.common.XAlign;
import org.meteoinfo.common.YAlign;
import org.meteoinfo.common.util.JDateUtil;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.graphic.Artist;
import org.meteoinfo.geometry.legend.LineStyles;
import org.meteoinfo.ndarray.util.BigDecimalUtil;

View File

@ -9,7 +9,7 @@ import org.meteoinfo.chart.Location;
import org.meteoinfo.chart.plot.AbstractPlot2D;
import org.meteoinfo.chart.geo.MapGridLine;
import org.meteoinfo.common.*;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.projection.ProjectionInfo;
import java.awt.*;

View File

@ -9,7 +9,6 @@ import org.meteoinfo.chart.*;
import org.meteoinfo.chart.axis.Axis;
import org.meteoinfo.chart.axis.LonLatAxis;
import org.meteoinfo.chart.axis.ProjLonLatAxis;
import org.meteoinfo.chart.geo.MapGridLine;
import org.meteoinfo.chart.graphic.WebMapImage;
import org.meteoinfo.chart.plot.Plot2D;
import org.meteoinfo.chart.plot.PlotType;
@ -19,12 +18,11 @@ import org.meteoinfo.data.mapdata.webmap.GeoPosition;
import org.meteoinfo.data.mapdata.webmap.GeoUtil;
import org.meteoinfo.data.mapdata.webmap.IWebMapPanel;
import org.meteoinfo.data.mapdata.webmap.TileLoadListener;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.geo.graphic.GeoGraphicCollection;
import org.meteoinfo.geo.layer.WebMapLayer;
import org.meteoinfo.geo.util.GeoProjectionUtil;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.chart.graphic.GeoGraphicCollection;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.chart.graphic.GraphicProjectionUtil;
import org.meteoinfo.geometry.legend.*;
import org.meteoinfo.geometry.shape.*;
import org.meteoinfo.projection.KnownCoordinateSystems;
@ -675,7 +673,7 @@ public class MapPlot extends Plot2D implements IWebMapPanel {
this.addGraphic(graphic);
return graphic;
} else {
Graphic nGraphic = GeoProjectionUtil.projectClipGraphic(graphic, proj, toProj);
Graphic nGraphic = GraphicProjectionUtil.projectClipGraphic(graphic, proj, toProj);
this.addGraphic(nGraphic);
return nGraphic;
}
@ -695,7 +693,7 @@ public class MapPlot extends Plot2D implements IWebMapPanel {
this.addGraphic(index, graphic);
return graphic;
} else {
Graphic nGraphic = GeoProjectionUtil.projectClipGraphic(graphic, proj, toProj);
Graphic nGraphic = GraphicProjectionUtil.projectClipGraphic(graphic, proj, toProj);
this.addGraphic(index, nGraphic);
return nGraphic;
}

View File

@ -1,4 +1,4 @@
package org.meteoinfo.geo.graphic;
package org.meteoinfo.chart.graphic;
import org.meteoinfo.common.DataConvert;
import org.meteoinfo.common.Extent;

View File

@ -21,11 +21,8 @@ import org.meteoinfo.data.XYListDataset;
import org.meteoinfo.data.analysis.Statistics;
import org.meteoinfo.data.meteodata.StationModel;
import org.meteoinfo.data.meteodata.StationModelData;
import org.meteoinfo.geo.drawing.ContourDraw;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.geo.layer.LayerDrawType;
import org.meteoinfo.geo.layer.VectorLayer;
import org.meteoinfo.geo.meteodata.DrawMeteoData;
import org.meteoinfo.render.java2d.ContourDraw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.legend.LegendManage;
import org.meteoinfo.geometry.colors.ExtendType;
import org.meteoinfo.geometry.colors.Normalize;
@ -49,7 +46,6 @@ import org.meteoinfo.ndarray.math.ArrayMath;
import org.meteoinfo.ndarray.math.ArrayUtil;
import org.meteoinfo.ndarray.util.BigDecimalUtil;
import org.meteoinfo.projection.ProjectionInfo;
import org.meteoinfo.table.Field;
import wcontour.Contour;
import wcontour.global.Point3D;
import wcontour.global.PolyLine;
@ -61,8 +57,6 @@ import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.List;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*

View File

@ -3,12 +3,22 @@ package org.meteoinfo.chart.graphic;
import org.locationtech.proj4j.CoordinateTransform;
import org.locationtech.proj4j.CoordinateTransformFactory;
import org.locationtech.proj4j.ProjCoordinate;
import org.meteoinfo.chart.graphic.GeoGraphicCollection;
import org.meteoinfo.geometry.geoprocess.GeoComputation;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.shape.Shape;
import org.meteoinfo.projection.ProjectionInfo;
import org.meteoinfo.projection.ProjectionNames;
import org.meteoinfo.projection.ProjectionUtil;
import org.meteoinfo.projection.Reproject;
import org.meteoinfo.table.DataColumn;
import org.meteoinfo.table.DataRow;
import org.meteoinfo.table.DataTable;
import org.meteoinfo.table.Field;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class GraphicProjectionUtil extends ProjectionUtil {
/**
@ -33,8 +43,44 @@ public class GraphicProjectionUtil extends ProjectionUtil {
}
((MeshGraphic) graphic).setVertexPosition(vertex);
return graphic;
} else if (graphic instanceof GeoGraphicCollection) {
GeoGraphicCollection geoGraphic = (GeoGraphicCollection) graphic;
try {
GeoGraphicCollection newGCollection = new GeoGraphicCollection();
DataTable dataTable = new DataTable();
for (DataColumn aDC : geoGraphic.getAttributeTable().getTable().getColumns()) {
Field bDC = new Field(aDC.getColumnName(), aDC.getDataType());
dataTable.getColumns().add(bDC);
}
int idx = 0;
for (Graphic aGraphic : geoGraphic.getGraphics()) {
List<? extends Shape> shapes = org.meteoinfo.projection.ProjectionUtil.projectClipShape(aGraphic.getShape(), fromProj, toProj);
if (shapes != null && shapes.size() > 0) {
aGraphic.setShape(shapes.get(0));
newGCollection.add(aGraphic);
DataRow aDR = geoGraphic.getAttributeTable().getTable().getRows().get(idx);
try {
dataTable.addRow(aDR);
} catch (Exception ex) {
Logger.getLogger(org.meteoinfo.chart.graphic.GraphicProjectionUtil.class.getName()).log(Level.SEVERE, null, ex);
}
}
idx += 1;
}
newGCollection.setLegendScheme(geoGraphic.getLegendScheme());
newGCollection.setSingleLegend(geoGraphic.isSingleLegend());
newGCollection.setAntiAlias(geoGraphic.isAntiAlias());
newGCollection.getAttributeTable().setTable(dataTable);
newGCollection.setProjInfo(toProj);
return newGCollection;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
} else {
return ProjectionUtil.projectClipGraphic(graphic, fromProj, toProj);
}
}
}

View File

@ -3,7 +3,7 @@ package org.meteoinfo.chart.graphic;
import org.joml.Vector3f;
import org.meteoinfo.chart.jogl.Transform;
import org.meteoinfo.common.Extent3D;
import org.meteoinfo.geo.legend.LegendManage;
import org.meteoinfo.geometry.legend.LegendManage;
import org.meteoinfo.geometry.colors.TransferFunction;
import org.meteoinfo.geometry.graphic.GraphicCollection3D;
import org.meteoinfo.geometry.legend.LegendScheme;

View File

@ -3,7 +3,7 @@ package org.meteoinfo.chart.graphic;
import org.joml.Vector3f;
import org.meteoinfo.chart.jogl.Transform;
import org.meteoinfo.common.Extent3D;
import org.meteoinfo.geo.legend.LegendManage;
import org.meteoinfo.geometry.legend.LegendManage;
import org.meteoinfo.geometry.colors.TransferFunction;
import org.meteoinfo.geometry.graphic.GraphicCollection3D;
import org.meteoinfo.geometry.legend.LegendScheme;

View File

@ -7,7 +7,7 @@ import org.meteoinfo.chart.render.jogl.RayCastingType;
import org.meteoinfo.common.Extent3D;
import org.meteoinfo.common.MIMath;
import org.meteoinfo.common.colors.ColorMap;
import org.meteoinfo.geo.legend.LegendManage;
import org.meteoinfo.geometry.legend.LegendManage;
import org.meteoinfo.geometry.colors.Normalize;
import org.meteoinfo.geometry.colors.TransferFunction;
import org.meteoinfo.geometry.graphic.GraphicCollection3D;

View File

@ -13,7 +13,7 @@ import org.meteoinfo.chart.ChartText3D;
import org.meteoinfo.chart.graphic.GraphicFactory;
import org.meteoinfo.chart.graphic.MeshGraphic;
import org.meteoinfo.common.*;
import org.meteoinfo.geo.legend.LegendManage;
import org.meteoinfo.geometry.legend.LegendManage;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.legend.LegendScheme;
import org.meteoinfo.geometry.legend.PolygonBreak;

View File

@ -25,8 +25,8 @@ import org.meteoinfo.chart.shape.TextureShape;
import org.meteoinfo.common.*;
import org.meteoinfo.common.colors.ColorMap;
import org.meteoinfo.data.Dataset;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.geo.drawing.StringType;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.render.java2d.StringType;
import org.meteoinfo.geometry.colors.BoundaryNorm;
import org.meteoinfo.geometry.colors.Normalize;
import org.meteoinfo.geometry.graphic.Graphic;

View File

@ -22,7 +22,6 @@ import org.meteoinfo.chart.shape.TextureShape;
import org.meteoinfo.common.Extent;
import org.meteoinfo.common.Extent3D;
import org.meteoinfo.common.colors.ColorMap;
import org.meteoinfo.geo.layer.ImageLayer;
import org.meteoinfo.geometry.colors.Normalize;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;

View File

@ -10,7 +10,7 @@ import org.meteoinfo.chart.axis.Axis;
import org.meteoinfo.chart.axis.LogAxis;
import org.meteoinfo.common.Extent;
import org.meteoinfo.common.PointF;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import java.awt.*;
import java.awt.geom.AffineTransform;

View File

@ -7,7 +7,7 @@ package org.meteoinfo.chart.plot;
import org.meteoinfo.chart.AspectType;
import org.meteoinfo.common.PointF;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.legend.ColorBreak;

View File

@ -23,7 +23,7 @@ import org.meteoinfo.common.MIMath;
import org.meteoinfo.common.PointD;
import org.meteoinfo.common.PointF;
import org.meteoinfo.data.Dataset;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.graphic.ImageGraphic;
@ -41,7 +41,7 @@ import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import static org.meteoinfo.geo.drawing.Draw.getHatchImage;
import static org.meteoinfo.render.java2d.Draw.getHatchImage;
/**
*

View File

@ -13,7 +13,7 @@ import org.meteoinfo.chart.plot3d.Projector;
import org.meteoinfo.common.*;
import org.meteoinfo.data.DataMath;
import org.meteoinfo.data.Dataset;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.legend.*;

View File

@ -9,9 +9,8 @@ import org.meteoinfo.chart.AspectType;
import org.meteoinfo.chart.Margin;
import org.meteoinfo.chart.graphic.GraphicFactory;
import org.meteoinfo.common.*;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.legend.LineStyles;
import org.meteoinfo.ndarray.util.BigDecimalUtil;
@ -22,7 +21,7 @@ import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.List;
import static org.meteoinfo.geo.drawing.Draw.getDashPattern;
import static org.meteoinfo.render.java2d.Draw.getDashPattern;
/**
*

View File

@ -13,7 +13,7 @@ import org.meteoinfo.common.MIMath;
import org.meteoinfo.common.PointF;
import org.meteoinfo.common.colors.ColorUtil;
import org.meteoinfo.data.*;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geometry.legend.*;
import org.meteoinfo.geometry.shape.ShapeTypes;
@ -23,8 +23,6 @@ import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*

View File

@ -82,7 +82,7 @@ public class PlotUtil {
* @param fileName The file name
* @param chart The chart
* @param width Width
* @param height Heigth
* @param height Height
* @throws FileNotFoundException
* @throws InterruptedException
*/

View File

@ -37,11 +37,6 @@
<artifactId>meteoinfo-math</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-geometry</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-table</artifactId>
@ -59,8 +54,8 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wContour</artifactId>
<version>1.7.1</version>
<artifactId>meteoinfo-chart</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.l2fprod</groupId>

View File

@ -16,7 +16,6 @@ package org.meteoinfo.geo.layer;
import org.meteoinfo.common.*;
import org.meteoinfo.geo.graphic.GeoGraphicCollection;
import org.meteoinfo.geo.mapdata.ShapeFileManage;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.legend.*;
import org.meteoinfo.geometry.geoprocess.GeoComputation;
import org.meteoinfo.common.colors.ColorUtil;

View File

@ -2,7 +2,7 @@
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.meteoinfo.chart;
package org.meteoinfo.geo.layout;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;

View File

@ -88,7 +88,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
@ -96,7 +95,6 @@ import java.util.logging.Logger;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;

View File

@ -20,14 +20,13 @@ import org.meteoinfo.common.PointD;
import org.meteoinfo.data.*;
import org.meteoinfo.data.meteodata.*;
import org.meteoinfo.dataframe.DataFrame;
import org.meteoinfo.geo.drawing.ContourDraw;
import org.meteoinfo.geo.drawing.Draw;
import org.meteoinfo.render.java2d.ContourDraw;
import org.meteoinfo.render.java2d.Draw;
import org.meteoinfo.geo.layer.*;
import org.meteoinfo.geo.legend.LegendManage;
import org.meteoinfo.geometry.colors.ExtendType;
import org.meteoinfo.geometry.geoprocess.GeometryUtil;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.legend.*;
import org.meteoinfo.geometry.shape.*;
import org.meteoinfo.geometry.geoprocess.GeoComputation;

View File

@ -20,8 +20,6 @@ import org.meteoinfo.data.GridArray;
import org.meteoinfo.geo.graphic.GeoGraphicCollection;
import org.meteoinfo.geo.layer.RasterLayer;
import org.meteoinfo.geo.layer.VectorLayer;
import org.meteoinfo.geometry.graphic.Graphic;
import org.meteoinfo.geometry.graphic.GraphicCollection;
import org.meteoinfo.geometry.shape.*;
import org.meteoinfo.geometry.geoprocess.GeoComputation;
import org.meteoinfo.geometry.geoprocess.GeometryUtil;
@ -647,54 +645,4 @@ public class GeoProjectionUtil {
oLayer.setLabelPoints(ProjectionUtil.projectGraphic(oLayer.getLabelPoints(), fromProj, toProj));
}
}
/**
* Project graphic
*
* @param graphic The graphic
* @param fromProj From projection
* @param toProj To projection
* @return Projected graphic
*/
public static Graphic projectClipGraphic(Graphic graphic, ProjectionInfo fromProj, ProjectionInfo toProj) {
if (graphic instanceof GeoGraphicCollection) {
GeoGraphicCollection geoGraphic = (GeoGraphicCollection) graphic;
try {
GeoGraphicCollection newGCollection = new GeoGraphicCollection();
DataTable dataTable = new DataTable();
for (DataColumn aDC : geoGraphic.getAttributeTable().getTable().getColumns()) {
Field bDC = new Field(aDC.getColumnName(), aDC.getDataType());
dataTable.getColumns().add(bDC);
}
int idx = 0;
for (Graphic aGraphic : geoGraphic.getGraphics()) {
List<? extends Shape> shapes = ProjectionUtil.projectClipShape(aGraphic.getShape(), fromProj, toProj);
if (shapes != null && shapes.size() > 0) {
aGraphic.setShape(shapes.get(0));
newGCollection.add(aGraphic);
DataRow aDR = geoGraphic.getAttributeTable().getTable().getRows().get(idx);
try {
dataTable.addRow(aDR);
} catch (Exception ex) {
Logger.getLogger(GeoProjectionUtil.class.getName()).log(Level.SEVERE, null, ex);
}
}
idx += 1;
}
newGCollection.setLegendScheme(geoGraphic.getLegendScheme());
newGCollection.setSingleLegend(geoGraphic.isSingleLegend());
newGCollection.setAntiAlias(geoGraphic.isAntiAlias());
newGCollection.getAttributeTable().setTable(dataTable);
newGCollection.setProjInfo(toProj);
return newGCollection;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
} else {
return ProjectionUtil.projectClipGraphic(graphic, fromProj, toProj);
}
}
}

View File

@ -1809,4 +1809,86 @@ public class LegendManage {
}
}
}
/**
* Get weather list
*
* @param weatherType Weather type
* @return Weather list
*/
public static List<Integer> getWeatherTypes(String weatherType) {
List<Integer> weatherList = new ArrayList<>();
int i;
int[] weathers;
switch (weatherType.toLowerCase()) {
case "all weather":
case "all":
default:
weathers = new int[96];
for (i = 4; i < 100; i++) {
weathers[i - 4] = i;
}
break;
case "sds":
case "dust":
weathers = new int[]{6, 7, 8, 9, 30, 31, 32, 33, 34, 35};
break;
case "sds, haze":
weathers = new int[]{5, 6, 7, 8, 9, 30, 31, 32, 33, 34, 35};
break;
case "smoke, haze, mist":
weathers = new int[]{4, 5, 10};
break;
case "smoke":
weathers = new int[]{4};
break;
case "haze":
weathers = new int[]{5};
break;
case "mist":
weathers = new int[]{10};
break;
case "Fog":
weathers = new int[10];
for (i = 40; i < 50; i++) {
weathers[i - 40] = i;
}
break;
}
for (int w : weathers) {
weatherList.add(w);
}
return weatherList;
}
/**
* Create could amount legend scheme
*
* @param size Size
* @param color Color
* @return Cloud amount legend scheme
*/
public static LegendScheme createCloudLegendScheme(int size, Color color) {
LegendScheme aLS = new LegendScheme(ShapeTypes.POINT);
aLS.setLegendType(LegendType.UNIQUE_VALUE);
int[] clouds = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int w : clouds) {
PointBreak aPB = new PointBreak();
aPB.setMarkerType(MarkerType.CHARACTER);
aPB.setSize(size);
aPB.setColor(color);
aPB.setFontName("Weather");
aPB.setStartValue(w);
aPB.setEndValue(w);
int charIdx = w + 197;
aPB.setCharIndex(charIdx);
aPB.setCaption(String.valueOf(w));
aLS.getLegendBreaks().add(aPB);
}
return aLS;
}
}

View File

@ -1,14 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MeteoInfo File="milconfig.xml" Type="configurefile">
<Path OpenPath="D:\Working\MIScript\Jython\mis\test">
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\bar"/>
<Path OpenPath="D:\Working\MIScript\Jython\mis\plot_types\contour">
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\3d_earth"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\json"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\imshow"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\funny"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite\FY"/>
@ -16,19 +14,21 @@
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\meteo\calc"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\test"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\contour"/>
</Path>
<File>
<OpenedFiles>
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\funny\flower_1.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\meteo\calc\frontogenesis.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\test\iter_1.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\test\iter_2.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\contour\contour_1.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\contour\conoutm.py"/>
</OpenedFiles>
<RecentFiles>
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\funny\flower_1.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\meteo\calc\frontogenesis.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\test\iter_1.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\test\iter_2.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\contour\contour_1.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\contour\conoutm.py"/>
</RecentFiles>
</File>
<Font>
@ -36,5 +36,5 @@
</Font>
<LookFeel DockWindowDecorated="true" LafDecorated="true" Name="FlatDarkLaf"/>
<Figure DoubleBuffering="true"/>
<Startup MainFormLocation="-7,0" MainFormSize="1391,795"/>
<Startup MainFormLocation="-7,-7" MainFormSize="1293,685"/>
</MeteoInfo>

View File

@ -8,17 +8,37 @@
</parent>
<artifactId>meteoinfo-lab</artifactId>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<flatlaf.version>3.3</flatlaf.version>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-chart</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-geo</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-console</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.formdev</groupId>
<artifactId>flatlaf</artifactId>
<version>${flatlaf.version}</version>
</dependency>
<dependency>
<groupId>com.formdev</groupId>
<artifactId>flatlaf-extras</artifactId>
<version>${flatlaf.version}</version>
</dependency>
<dependency>
<groupId>de.sciss</groupId>
<artifactId>docking-frames-common</artifactId>
@ -35,10 +55,6 @@
<version>1.7.25</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<build>
<plugins>

View File

@ -12,7 +12,6 @@ from org.meteoinfo.chart.plot import Plot2D, PolarPlot, PlotOrientation
from org.meteoinfo.chart.graphic import GraphicFactory
from org.meteoinfo.common import XAlign, YAlign
from org.meteoinfo.chart.axis import Axis, LonLatAxis, TimeAxis, LogAxis
#from org.meteoinfo.geo.legend import LegendManage
from org.meteoinfo.geometry.legend import BarBreak, PolygonBreak, PolylineBreak, \
PointBreak, LineStyles, PointStyle, LegendScheme, LegendType, LegendManage, ExtendFraction
from org.meteoinfo.geometry.shape import ShapeTypes

View File

@ -12,9 +12,7 @@ from org.meteoinfo.chart.form import ChartForm
from org.meteoinfo.chart.jogl import JOGLUtil
from org.meteoinfo.chart.plot import Plot2D, Plot3D
from org.meteoinfo.chart.geo import MapPlot
from org.meteoinfo.geo.legend import LegendManage
from org.meteoinfo.geo.meteodata import DrawMeteoData
from org.meteoinfo.geometry.legend import LegendScheme, LegendType
from org.meteoinfo.geometry.legend import LegendManage, LegendScheme, LegendType
from org.meteoinfo.geometry.shape import ShapeTypes
from org.meteoinfo.image import AnimatedGifEncoder
@ -2298,11 +2296,11 @@ def weatherspec(weather='all', size=20, color='b'):
:returns: Weather symbol legend.
"""
if isinstance(weather, str):
wlist = DrawMeteoData.getWeatherTypes(weather)
wlist = LegendManage.getWeatherTypes(weather)
else:
wlist = weather
c = plotutil.getcolor(color)
return DrawMeteoData.createWeatherLegendScheme(wlist, size, c)
return LegendManage.createWeatherLegendScheme(wlist, size, c)
def cloudspec(size=12, color='b'):
@ -2315,7 +2313,7 @@ def cloudspec(size=12, color='b'):
:returns: Cloud amount symbol legend.
"""
c = plotutil.getcolor(color)
return DrawMeteoData.createCloudLegendScheme(size, c)
return LegendManage.createCloudLegendScheme(size, c)
@_copy_docstring_and_deprecators(MapAxes.masklayer)

View File

@ -19,6 +19,11 @@
<artifactId>meteoinfo-chart</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-geo</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-console</artifactId>

View File

@ -43,7 +43,7 @@ import org.meteoinfo.map.config.GenericFileFilter;
import org.meteoinfo.image.AnimatedGifEncoder;
import org.meteoinfo.geo.layer.LayerDrawType;
import org.meteoinfo.geo.layer.MapLayer;
import org.meteoinfo.chart.LayoutChart;
import org.meteoinfo.geo.layout.LayoutChart;
import org.meteoinfo.geo.layout.MapLayout;
import org.meteoinfo.geo.legend.LegendManage;
import org.meteoinfo.geometry.shape.ShapeTypes;

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>MeteoInfo</artifactId>
<groupId>org.meteothink</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>meteoinfo-render2d</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>meteoinfo-geometry</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wContour</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.scilab.forge</groupId>
<artifactId>jlatexmath</artifactId>
<version>1.0.7</version>
</dependency>
</dependencies>
</project>

View File

@ -11,7 +11,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details.
*/
package org.meteoinfo.geo.drawing;
package org.meteoinfo.render.java2d;
import org.meteoinfo.common.MIMath;

View File

@ -11,7 +11,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details.
*/
package org.meteoinfo.geo.drawing;
package org.meteoinfo.render.java2d;
import org.meteoinfo.common.*;
import org.meteoinfo.geometry.geoprocess.GeometryUtil;

View File

@ -3,7 +3,7 @@
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.meteoinfo.geo.drawing;
package org.meteoinfo.render.java2d;
/**
*

View File

@ -29,6 +29,7 @@
<module>meteoinfo-data</module>
<module>meteoinfo-projection</module>
<module>meteoinfo-mkl</module>
<module>meteoinfo-render2d</module>
</modules>
<properties>