• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.geojson;
2 
3 import java.util.Arrays;
4 import java.util.List;
5 
6 import com.fasterxml.jackson.annotation.JsonIgnore;
7 
8 public class Polygon extends Geometry<List<LngLatAlt>> {
9 
Polygon()10 	public Polygon() {
11 	}
12 
Polygon(List<LngLatAlt> polygon)13 	public Polygon(List<LngLatAlt> polygon) {
14 		add(polygon);
15 	}
16 
Polygon(LngLatAlt... polygon)17 	public Polygon(LngLatAlt... polygon) {
18 		add(Arrays.asList(polygon));
19 	}
20 
setExteriorRing(List<LngLatAlt> points)21 	public void setExteriorRing(List<LngLatAlt> points) {
22 		if (coordinates.isEmpty()) {
23 			coordinates.add(0, points);
24 		} else {
25 			coordinates.set(0, points);
26 		}
27 	}
28 
29 	@JsonIgnore
getExteriorRing()30 	public List<LngLatAlt> getExteriorRing() {
31 		assertExteriorRing();
32 		return coordinates.get(0);
33 	}
34 
35 	@JsonIgnore
getInteriorRings()36 	public List<List<LngLatAlt>> getInteriorRings() {
37 		assertExteriorRing();
38 		return coordinates.subList(1, coordinates.size());
39 	}
40 
getInteriorRing(int index)41 	public List<LngLatAlt> getInteriorRing(int index) {
42 		assertExteriorRing();
43 		return coordinates.get(1 + index);
44 	}
45 
addInteriorRing(List<LngLatAlt> points)46 	public void addInteriorRing(List<LngLatAlt> points) {
47 		assertExteriorRing();
48 		coordinates.add(points);
49 	}
50 
addInteriorRing(LngLatAlt... points)51 	public void addInteriorRing(LngLatAlt... points) {
52 		assertExteriorRing();
53 		coordinates.add(Arrays.asList(points));
54 	}
55 
assertExteriorRing()56 	private void assertExteriorRing() {
57 		if (coordinates.isEmpty())
58 			throw new RuntimeException("No exterior ring definied");
59 	}
60 
61 	@Override
accept(GeoJsonObjectVisitor<T> geoJsonObjectVisitor)62 	public <T> T accept(GeoJsonObjectVisitor<T> geoJsonObjectVisitor) {
63 		return geoJsonObjectVisitor.visit(this);
64 	}
65 
66 	@Override
toString()67 	public String toString() {
68 		return "Polygon{} " + super.toString();
69 	}
70 }
71