Swiftpack.co -  MonsantoCo/GeospatialSwift as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
MonsantoCo/GeospatialSwift
Geospatial swift framework for GeoJson with geohashing, calculations, and much more
.package(url: "https://github.com/MonsantoCo/GeospatialSwift.git", from: "1.1.2")

GeospatialSwift

Carthage Compatible Swift 5.1 Platforms

What is GeospatialSwift?

GeospatialSwift is an interface to translate a GeoJson document / dictionary into a swift object which fully conforms to the more recent GeoJson specification - August 2016.

A GeoJsonObject can be transformed to a bounding box.

Features

  • Unit tested with high coverage
  • Ongoing development

Installation

Carthage

github "MonsantoCo/GeospatialSwift" ~> 1.0.0

Package Manager

.package(url: "git@github.com:MonsantoCo/GeospatialSwift.git", from: "1.0.0")

Geospatial

Geospatial

  • The main interface consisting of 4 sub interface

GeoJson

Geospatial.geoJson

  • Full GeoJson specification support to create a GeoJsonObject
  • A GeoJsonObject is the base object of GeospatialSwift functionality
  • Bounding Box generated from any GeoJsonObject
  • GeoJson generated from any GeoJsonObject

GeoJsonObjects

  • Minimum distance to a given point (Optional error distance)

  • Contains a given point (Optional error distance)

  • Bounding box for any shape

  • GeoJson returned as a Dictionary

  • Coordinates array for the associated geometry

  • Line segments with midpoint and bearing functions

  • Point

    • Normalize
  • MultiPoint

  • LineString

    • Length
  • MultiLineString

    • Length
  • Polygon

    • Centroid
    • Area
  • MultiPolygon

    • Area
  • GeometryCollection

  • Feature

  • FeatureCollection

Geohash

Geospatial.geohash

  • Create a geohash from a coordinate or bounding box
  • Get geohash neighbors (8)
  • Create a bounding box for a geohash

WKT - Not Fully Supported

Geospatial.parse(wkt: String) -> GeoJsonObject

  • Minimal WKT parsing support which transforms to a GeoJsonObject.
  • POINT, LINESTRING, MULTILINESTRING, POLYGON, MULTPOLYGON.
  • This is currently only intended to parse a very simple WKT string

Running GeospatialSwift in XCode

  • Bootstrap Example: rm -rf *.xcodeproj || rm -rf .build || swift package resolve && swift package generate-xcodeproj && open *.xcodeproj
  • In the Target GeospatialSwift, select the tab Signing & Capabilities and check the box Automatically manage signing
  • In the scheme menu, select Edit Scheme..., select the Test item on the left, select the tab Options, and check the box Gather coverage for "all targets"
  • In the target GeospatialSwiftTests select the tab Build Phases and add a Run Script Phase with the body $PROJECT_DIR/Scripts/parrot.sh and move the item to the top of the Buld Phases just below Dependencies.
  • In the target GeospatialSwift select the tab Build Phases and add a Run Script Phase with the body $PROJECT_DIR/Scripts/swiftlint.sh.

Extending GeospatialSwift in XCode

Option 1: Run with the current XCode project as is

Option 2: Rebuild it using generate-xcodeproj

  • Setup: Package Manager Example: rm -rf *.xcodeproj || rm -rf .build || swift package resolve && swift package generate-xcodeproj && open *.xcodeproj
  • Building: In the Target GeospatialSwift, select the tab Signing & Capabilities and check the box Automatically manage signing
  • Code Coverage: In the scheme menu, select Edit Scheme..., select the Test item on the left, select the tab Options, and check the box Gather coverage for "all targets"
  • Mocking: In the target GeospatialSwiftTests select the tab Build Phases and add a Run Script Phase with the body $PROJECT_DIR/Scripts/parrot.sh and move the item to the top of the Buld Phases just below Dependencies.
  • Linting: In the target GeospatialSwift select the tab Build Phases and add a Run Script Phase with the body $PROJECT_DIR/Scripts/swiftlint.sh.

GitHub

link
Stars: 4
Last commit: 4 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Related Packages

Release Notes

Expose Interface and added Bisecting Bearing and Cross
4 weeks ago

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