1 votos

Geotools - Crear una capa de líneas

Estoy utilizando la biblioteca Geotools para desarrollar una aplicación Java Swing. Tengo un problema al crear una capa con líneas entre puntos. ¿Puede alguien ayudarme?

Aquí mi código:

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import java.awt.Color;
import static org.geotools.coverage.processing.operation.Interpolate.TYPE;
import org.geotools.feature.DefaultFeatureCollection;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.geotools.map.FeatureLayer;
import org.geotools.map.Layer;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;

public class DrawLine {
    public Layer getLayerLineByCoord(Coordinate[] coords) {
        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
        LineString line = geometryFactory.createLineString(coords);

        SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder((SimpleFeatureType) TYPE);
        featureBuilder.add(line);
        SimpleFeature feature = featureBuilder.buildFeature("LineString_Sample");

        DefaultFeatureCollection lineCollection = new DefaultFeatureCollection();
        lineCollection.add(feature);

        Style style = SLD.createLineStyle(Color.BLUE, 1);
        return new FeatureLayer(lineCollection, style);
    }
}

1voto

Adam Ernst Puntos 6939

Su esquema es erróneo

import static org.geotools.coverage.processing.operation.Interpolate.TYPE;

debe ser

import org.opengis.feature.simple.SimpleFeatureType;

Lo que te lleva a necesitar una línea como:

SimpleFeatureType TYPE = DataUtilities.createType("test", "line", "the_geom:LineString"); 

para crear su FeatureType (o esquema).

Entonces funciona bien.

import com.ianturton.cookbook.utilities.GenerateRandomData;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import java.awt.Color;

import org.geotools.data.DataUtilities;
import org.geotools.feature.DefaultFeatureCollection;
import org.geotools.feature.SchemaException;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.geotools.map.FeatureLayer;
import org.geotools.map.Layer;
import org.geotools.map.MapContent;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;

public class DrawLine {
    public Layer getLayerLineByCoord(Coordinate[] coords) throws SchemaException {
        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
        LineString line = geometryFactory.createLineString(coords);
        SimpleFeatureType TYPE = DataUtilities.createType("test", "line", "the_geom:LineString");
        SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder((SimpleFeatureType) TYPE);
        featureBuilder.add(line);
        SimpleFeature feature = featureBuilder.buildFeature("LineString_Sample");

        DefaultFeatureCollection lineCollection = new DefaultFeatureCollection();
        lineCollection.add(feature);

        Style style = SLD.createLineStyle(Color.BLUE, 1);
        return new FeatureLayer(lineCollection, style);
    }

    public static void main(String[] args) throws SchemaException {
      MapContent map = new MapContent();
      map.setTitle("Quickstart");

      DrawLine line = new DrawLine();
      LineString ls = GenerateRandomData.createRandomLineString(10);
      Layer layer = line.getLayerLineByCoord(ls.getCoordinates());
      map.addLayer(layer);

      // Now display the map
      JMapFrame.showMap(map);

    }
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X