Как я могу преобразовать JTS-геометрию в AWT-форму?

Можно ли преобразовать com.vividsolutions.jts.geom.Geometry (или его подкласс) в класс, реализующий java.awt.Shape? Какую библиотеку или метод я могу использовать для достижения этой цели?


person Mnementh    schedule 24.09.2008    source источник


Ответы (2)


Согласно с:

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

Есть класс:

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

который может это сделать?

person tim_yates    schedule 24.09.2008

Также обратите внимание на предоставленный ShapeWriter. библиотекой JTS. Я использовал следующий фрагмент кода для преобразования объектов геометрии 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);
    }
}

Изменить: результат выглядит следующим образом: Визуализация объектов геометрии jts в awt

person user3776894    schedule 10.06.2015
comment
Наверное глупый вопрос. Почему у квадрата пять координат? ;-) - person Sir Montes; 22.05.2020
comment
Без проблем. Я думаю, что полигон должен начинаться и заканчиваться одной и той же координатой. Следовательно, первое и последнее одинаковы - person user3776894; 23.05.2020