Skip to content

A little Swift toolkit for working with polygons

License

Notifications You must be signed in to change notification settings

nighthawk/ASPolygonKit

Repository files navigation

ASPolygonKit

CI

Functionality:

  • Polygon union

ASPolygonKit is tested and confirmed working on on iOS, macOS and Linux. It might work on other platforms, too.

Installation

Swift Package Manager

To install ASPolygonKit using the Swift Package Manager, add the following package to the dependencies in your Package.swift file:

.package(name: "ASPolygonKit", url: "https://github.com/nighthawk/aspolygonkit.git", from: "0.4.0"),

Usage

import ASPolygonKit in any Swift file in your module.

Example, usage merging a GeoJSON polygon from GeoJSONKit:

import GeoJSONKit
import ASPolygonKit

extension GeoJSON.Polygon {
  public static func union(_ polygons: [GeoJSON.Polygon]) throws -> [GeoJSON.Polygon] {
    try ASPolygonKit.Polygon.union(polygons.map(ASPolygonKit.Polygon.init))
      .map { polygon in
        .init(exterior: .init(positions: polygon.points.map { .init(latitude: $0.lat, longitude: $0.lng) }))
      }
  }
}

private extension ASPolygonKit.Polygon {
  init(_ geojson: GeoJSON.Polygon) {
    self.init(points: geojson.exterior.positions.map { .init(latitude: $0.latitude, longitude: $0.longitude) })
  }
}

Author

[email protected]

License

ASPolygonKit is available under the MIT license. See the LICENSE file for more info.