Swiftpack.co - kiliankoe/GeoJSON as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by kiliankoe.
kiliankoe/GeoJSON 0.6.1
🌍 Swift types for working with GeoJSON data
⭐️ 7
🕓 25 weeks ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/kiliankoe/GeoJSON.git", from: "0.6.1")

🌍 GeoJSON

This is a Swift package for working with GeoJSON data. It contains necessary types conforming to Codable for easy de-/encoding of data.

The implementation of this package tries to follow the specification defined in RFC 7946 as closely as possible. One exception are Foreign Members, which - according to the spec - MAY be implemented, but are not supported at all by this package.

Usage

You can give this package a quick spin by cloning the repository and running swift run --repl inside it.

Encoding

Create a FeatureCollection or just a single Feature to create some GeoJSON data.

let features = FeatureCollection(features: [
    Feature(
        geometry: .point(Point(longitude: 125.6, latitude: 10.1)),
        properties: [
            "name": "Dinagat Island"
        ]
    )
])

let json = try JSONEncoder().encode(features)

Decoding

It works the same way in the other direction. Use a standard JSONDecoder to decode GeoJSON data into a fitting type.

let features = try JSONDecoder().decode(FeatureCollection.self, from: json)

If you don't know if the data to decode is a Feature or FeatureCollection, decode a value of type GeoJSONDocument, which handles both.

let document = try JSONDecoder().decode(GeoJSONDocument.self, from: json)
switch document {
case .feature(let feature):
    // ...
case .featureCollection(let featureCollection):
    // ...
}

Installation

This package is available via Swift Package Manager, add its clone URL to your project to get started.

GitHub

link
Stars: 7
Last commit: 25 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics