20 package org.matsim.core.utils.gis;
22 import java.util.Collections;
23 import java.util.LinkedHashMap;
26 import org.geotools.api.feature.simple.SimpleFeature;
27 import org.geotools.api.feature.simple.SimpleFeatureType;
28 import org.geotools.api.referencing.crs.CoordinateReferenceSystem;
29 import org.geotools.feature.simple.SimpleFeatureBuilder;
30 import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
31 import org.locationtech.jts.geom.Coordinate;
32 import org.locationtech.jts.geom.GeometryFactory;
33 import org.locationtech.jts.geom.Point;
43 private final GeometryFactory
fac =
new GeometryFactory();
44 private final SimpleFeatureBuilder
builder;
49 this.builder =
new SimpleFeatureBuilder(this.featureType);
56 public SimpleFeature
createPoint(
final Coordinate coordinate) {
57 return this.
createPoint(coordinate, Collections.<String, Object> emptyMap(), null);
60 public SimpleFeature
createPoint(
final Coordinate coordinate,
final Map<String, Object> attributeValues,
final String
id) {
61 Point p = this.fac.createPoint(coordinate);
64 for (String name : this.attributes.keySet()) {
65 Object value = attributeValues.get(name);
66 this.builder.add(value);
69 return this.builder.buildFeature(
id);
72 public SimpleFeature
createPoint(
final Coordinate coordinate,
final Object[] attributeValues,
final String
id) {
73 Point p = this.fac.createPoint(coordinate);
77 public SimpleFeature
createPoint(
final Point point,
final Object[] attributeValues,
final String
id) {
78 this.builder.add(point);
79 for (
int i = 0; i < attributeValues.length; i++) {
80 Object value = attributeValues[i];
81 this.builder.add(value);
83 return this.builder.buildFeature(
id);
86 public SimpleFeature
createPoint(
final Coord coordinate,
final Object[] attributeValues,
final String
id) {
87 Point p = this.fac.createPoint(
new Coordinate(coordinate.
getX(), coordinate.
getY()));
90 for (
int i = 0; i < attributeValues.length; i++) {
91 Object value = attributeValues[i];
92 this.builder.add(value);
94 return this.builder.buildFeature(
id);
98 private CoordinateReferenceSystem
crs = null;
100 private Map<String, Class<?>> attributes =
new LinkedHashMap<String, Class<?>>();
111 this.attributes.put(name, type);
121 SimpleFeatureTypeBuilder b =
new SimpleFeatureTypeBuilder();
122 b.setName(this.name);
124 b.add(
"the_geom", Point.class);
125 for (Map.Entry<String, Class<?>> attr :
this.attributes.entrySet()) {
126 b.add(attr.getKey(), attr.getValue());
128 SimpleFeatureType featureType = b.buildFeatureType();
SimpleFeature createPoint(final Coordinate coordinate, final Map< String, Object > attributeValues, final String id)
Builder addAttribute(final String name, final Class<?> type)
Builder setName(final String name)
final SimpleFeatureType featureType
SimpleFeature createPoint(final Coord coordinate, final Object[] attributeValues, final String id)
SimpleFeatureType getFeatureType()
final GeometryFactory fac
PointFeatureFactory(Map< String, Class<?>> attributes, SimpleFeatureType featureType)
final Map< String, Class<?> > attributes
final SimpleFeatureBuilder builder
SimpleFeature createPoint(final Point point, final Object[] attributeValues, final String id)
SimpleFeature createPoint(final Coordinate coordinate)
SimpleFeature createPoint(final Coordinate coordinate, final Object[] attributeValues, final String id)
PointFeatureFactory create()
CoordinateReferenceSystem crs
Builder setCrs(CoordinateReferenceSystem crs)