Package com.vividsolutions.jts.geom

Examples of com.vividsolutions.jts.geom.MultiLineString


  @SuppressWarnings("unchecked")
  @Transactional(readOnly = true, rollbackFor = Throwable.class)
  public MultiLineString calculateRoute(final Point origen,
      final Point destino, final funcion f) {
    log.trace("calculateRoute(" + origen + ", " + destino + ", " + f + ")");
    MultiLineString resultado = null;
    try {
      Long origin = getVertex(origen, false);
      Long goal = getVertex(destino, true);
      List<Long> ids = new ArrayList<Long>(0);

      if (origin != null && goal != null)
        switch (f) {
        case SIMPLE:
          ids = getSimpleGid(origin, goal);
          break;
        case SHOOTING_STAR:
          ids = shortest_path_shooting_star(origin, goal);
          break;
        }

      if (ids.size() > 0) {

        Session currentSession = getSession();
        final Criteria criteria = currentSession.createCriteria(
            Routing.class).add(Restrictions.in("id", ids))
            .setProjection(Projections.property("geometria"));
        log.trace(criteria);
        List<Object> lineas = criteria.list();
        List<LineString> lineStrings = new LinkedList<LineString>();

        for (Object m : lineas) {
          if (m instanceof MultiLineString)
            for (int i = 0; i < ((MultiLineString) m)
                .getNumGeometries(); i++)
              lineStrings.add((LineString) ((MultiLineString) m)
                  .getGeometryN(i));
          else if (m instanceof LineString)
            lineStrings.add((LineString) m);
          else
            log.error("Devuelto alto extra�o: " + m);
        }

        resultado = new MultiLineString(lineStrings
            .toArray(new LineString[0]), new GeometryFactory());

        resultado.setSRID(4326);

        if (log.isTraceEnabled())
          log.trace("Resultado: " + resultado);
      }
    } catch (Throwable t) {
View Full Code Here


    MultiGenerator pg = new MultiGenerator(pgc);
    pg.setBoundingBox(new Envelope(0,10,0,10));
    pg.setNumberGeometries(3);
    pg.setGeometryFactory(geometryFactory);
   
    MultiLineString pt = (MultiLineString) pg.create();
    checkRoundTrip(pt);
  }
View Full Code Here

    MultiGenerator pg = new MultiGenerator(pgc);
    pg.setBoundingBox(new Envelope(0,10,0,10));
    pg.setNumberGeometries(3);
    pg.setGeometryFactory(geometryFactory);
   
    MultiLineString pt = (MultiLineString) pg.create();
    checkRoundTrip(pt);
  }
View Full Code Here

            LineString string = (LineString) geometry;
            Coordinate[] coordinates = string.getCoordinates();
            return createEncodings(new CoordinateList(coordinates));
        } else if (geometry instanceof MultiLineString) {
            MultiLineString mls = (MultiLineString) geometry;
            return createEncodings(new CoordinateList(mls.getCoordinates()));
        } else {
            throw new IllegalArgumentException(geometry.toString());
        }
    }
View Full Code Here

                Geometry lineParts = line.intersection(polygon);
                if (lineParts.getLength() > 0.000001) {
                    Coordinate edgeCoordinate = null;
                    // this is either a LineString or a MultiLineString (we hope)
                    if (lineParts instanceof MultiLineString) {
                        MultiLineString mls = (MultiLineString) lineParts;
                        for (int i = 0; i < mls.getNumGeometries(); ++i) {
                            LineString segment = (LineString) mls.getGeometryN(i);
                            if (segment.contains(startPoint)
                                    || segment.getBoundary().contains(startPoint)) {
                                edgeCoordinate = segment.getEndPoint().getCoordinate();
                            }
                        }
View Full Code Here

                Geometry lineParts = line.intersection(polygon);
                if (lineParts.getLength() > 0.000001) {
                    Coordinate edgeCoordinate = null;
                    // this is either a LineString or a MultiLineString (we hope)
                    if (lineParts instanceof MultiLineString) {
                        MultiLineString mls = (MultiLineString) lineParts;
                        boolean found = false;
                        for (int i = 0; i < mls.getNumGeometries(); ++i) {
                            LineString segment = (LineString) mls.getGeometryN(i);
                            if (found) {
                                edgeCoordinate = segment.getEndPoint().getCoordinate();
                                break;
                            }
                            if (segment.contains(startPoint)
View Full Code Here

    private LineString toLineString(Geometry g) {
        if (g instanceof LineString) {
            return (LineString) g;
        } else if (g instanceof MultiLineString) {
            MultiLineString ml = (MultiLineString) g;

            Coordinate[] coords = ml.getCoordinates();
            return GeometryUtils.getGeometryFactory().createLineString(coords);
        } else {
            throw new RuntimeException("found a geometry feature that's not a linestring: " + g);
        }
    }
View Full Code Here

            GeometryFactory gf = new GeometryFactory();
            int index = 10;
            Coordinate[] coords1 = { new Coordinate(0, 0), new Coordinate(++index, ++index) };
            Coordinate[] coords2 = { new Coordinate(0, index), new Coordinate(index, 0) };
            LineString[] lines = { gf.createLineString(coords1), gf.createLineString(coords2) };
            MultiLineString sampleMultiLine = gf.createMultiLineString(lines);

            SimpleFeature toBeUpdated = writer.next();
            toBeUpdated.setAttribute("SHAPE", sampleMultiLine);
            writer.write();
        } finally {
            writer.close();
        }
        LOGGER.info("Null-geom feature updated with a sample geometry.");

        Query query = new Query(testData.getTempTableName(), idFilter);
        reader = ds.getFeatureReader(query, Transaction.AUTO_COMMIT);
        try {
            assertTrue(reader.hasNext());
            feature = reader.next();
            MultiLineString recoveredMLS = (MultiLineString) feature.getDefaultGeometry();
            assertTrue(!recoveredMLS.isEmpty());
            // I tried to compare the recovered MLS to the
            // sampleMultiLineString, but they're
            // slightly different. SDE does some rounding, and winds up giving
            // me 0.0000002 for zero,
            // and 11.9992 for 12. Meh.
View Full Code Here

            transformed = factory.createMultiPoint(points);
        } else if (g instanceof LineString) {
            transformed = transformLineString((LineString) g, factory);
        } else if (g instanceof MultiLineString) {
            MultiLineString mls = (MultiLineString) g;
            LineString[] lines = new LineString[mls.getNumGeometries()];

            for (int i = 0; i < lines.length; i++) {
                lines[i] = transformLineString((LineString) mls.getGeometryN(i), factory);
            }

            transformed = factory.createMultiLineString(lines);
        } else if (g instanceof Polygon) {
            transformed = transformPolygon((Polygon) g, factory);
View Full Code Here

            for (int i = 0; i < value.length; i++) {
                geoms[i] = (LineString) value[i].getValue();
            }

            MultiLineString mp = gf.createMultiLineString(geoms);

            ElementValue[] ev = new ElementValue[1];
            ev[0] = new DefaultElementValue(element, mp);

            return AbstractGeometryType.getInstance().getValue(element, ev,
View Full Code Here

TOP

Related Classes of com.vividsolutions.jts.geom.MultiLineString

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.