All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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