public void writeLineStringZone2ZoneOdPairsFromZones2Shapefile(String shapeFilename) { List<SimpleFeature> featureCollection = new ArrayList<SimpleFeature>(); SimpleFeatureTypeBuilder b = new SimpleFeatureTypeBuilder(); b.setCRS(crs); b.setName("zone2destOdPairs"); b.add("location", LineString.class); b.add("from_zone", String.class); b.add("to_dest", String.class); b.add("no trips", Double.class); SimpleFeatureBuilder builder = new SimpleFeatureBuilder(b.buildFeatureType()); int featureId = 1; for (DgZone zone : this.zones.values()) { for (DgDestination destination : zone.getDestinations()) { Coordinate startCoordinate = zone.getCoordinate(); Coordinate endCoordinate = destination.getCoordinate(); Coordinate[] coordinates = {startCoordinate, endCoordinate}; LineString lineString = geoFac.createLineString(coordinates); Object[] atts = { lineString, zone.getId(), destination.getId(), destination.getNumberOfTrips() }; SimpleFeature feature = builder.buildFeature(Integer.toString(featureId), atts); featureId++; featureCollection.add(feature); } } ShapeFileWriter.writeGeometries(featureCollection, shapeFilename); }