jvmMain.io.data2viz.geojson.jackson.Polygon.kt Maven / Gradle / Ivy
package io.data2viz.geojson.jackson
import com.fasterxml.jackson.annotation.JsonIgnore
class Polygon : Geometry> {
var exteriorRing: List
@JsonIgnore
get() {
assertExteriorRing()
return coordinates[0]
}
set(points) = coordinates.add(0, points)
val interiorRings: List>
@JsonIgnore
get() {
assertExteriorRing()
return coordinates.subList(1, coordinates.size)
}
constructor()
constructor(polygon: List) {
add(polygon)
}
constructor(vararg polygon: LngLatAlt) {
add(polygon.asList())
}
fun getInteriorRing(index: Int): List {
assertExteriorRing()
return coordinates[1 + index]
}
fun addInteriorRing(points: List) {
assertExteriorRing()
coordinates.add(points)
}
fun addInteriorRing(vararg points: LngLatAlt) {
assertExteriorRing()
coordinates.add(points.asList())
}
private fun assertExteriorRing() = check(coordinates.isNotEmpty()) {"No exterior ring defined"}
override fun accept(geoJsonObjectVisitor: GeoJsonObjectVisitor): T {
return geoJsonObjectVisitor.visit(this) as T
}
override fun toString(): String = "Polygon{} ${super.toString()}"
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy