【问题标题】:How can I convert a JTS-Geometry into an AWT-Shape?如何将 JTS-Geometry 转换为 AWT-Shape?
【发布时间】:2010-09-12 21:34:05
【问题描述】:

是否可以将com.vividsolutions.jts.geom.Geometry(或其子类)转换为实现java.awt.Shape 的类?我可以使用哪个库或方法来实现该目标?

【问题讨论】:

    标签: java geometry awt shape jts


    【解决方案1】:

    还可以查看 JTS 库提供的 ShapeWriter。我使用以下代码将 jts 几何对象转换为 awt 形状。

    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Shape;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    import com.vividsolutions.jts.awt.ShapeWriter;
    import com.vividsolutions.jts.geom.Coordinate;
    import com.vividsolutions.jts.geom.GeometryFactory;
    import com.vividsolutions.jts.geom.LineString;
    import com.vividsolutions.jts.geom.Polygon;
    
    public class Paint extends JPanel{
        public void paint(Graphics g) {
    
            Coordinate[] coords  = new Coordinate[] {new Coordinate(400, 0),  new Coordinate(200, 200),  new Coordinate(400, 400), new Coordinate(600, 200), new Coordinate(400, 0) };
            Polygon polygon = new GeometryFactory().createPolygon(coords);
    
            LineString ls = new GeometryFactory().createLineString(new Coordinate[] {new Coordinate(20, 20),  new Coordinate(200, 20)});
    
            ShapeWriter sw = new ShapeWriter();
            Shape polyShape = sw.toShape(polygon);
            Shape linShape = sw.toShape(ls);
    
            ((Graphics2D) g).draw(polyShape);
            ((Graphics2D) g).draw(linShape);
    
    
        }
        public static void main(String[] args) {
            JFrame f = new JFrame();
            f.getContentPane().add(new Paint());
            f.setSize(700, 700);
            f.setVisible(true);
        }
    }
    

    编辑:结果看起来像这张图片

    【讨论】:

    • 可能是个愚蠢的问题。为什么正方形有五个坐标? ;-)
    • 不用担心。我认为多边形必须以相同的坐标开始和结束。因此第一个和最后一个是相同的
    【解决方案2】:

    根据:

    http://lists.jump-project.org/pipermail/jts-devel/2007-May/001954.html

    有一门课:

    com.vividsolutions.jump.workbench.ui.renderer.java2D.Java2DConverter
    

    哪个能做到?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-26
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2023-04-01
      • 2022-06-24
      相关资源
      最近更新 更多