worace / circe-geojson

Scala-friendly ADT and Circe-based encoders/decoders for GeoJSON

Version Matrix

circe-geojson

Build Status Sonatype Nexus (Snapshots) Sonatype Nexus (Snapshots)

A library for working with GeoJSON in idiomatic Scala.

import works.worace.geojson.GeoJson

GeoJson.parse("""{"type":"Point","coordinates":[1.0,-1.0]}""")
// res: Either[io.circe.Error, GeoJson] = Right(
//   Point(Coordinate(1.0, -1.0, None, None), None, None)
// )

Includes:

  • An Algebraic Data Type (works.worace.geojson.GeoJson) for representing GeoJSON data in accordance with the RFC 7946 Spec
  • Circe-based encoders and decoders for converting GeoJSON to and from JSON
  • Optional extensions for converting between GeoJson types and Java Topology Suite (JTS) geometries

See the full Docs for usage examples and more information

Scaladoc

Development

  • Run tests with sbt test
  • Releases are pushed by CI (Github Actions) using sbt-ci-release
  • Markdown doc examples are compiled using mdoc
  • Build Mdoc: sbt docs/mdoc
  • Run Mdoc live server: sbt docs/mdoc --watch
  • Push Scaladoc to GitHub Pages: sbt ghpagesPushSite
  • Run scalafmt: sbt scalafmtAll

Releasing

  • Check the last version with git tag
  • Tag the next one, e.g. git tag v0.1.3
  • Push git push origin v0.1.3 and sbt-ci-release will push the release to sonatype

Upcoming / TODOs

  • Docs
    • Readme Usage examples (tut/md - compile-time check)
    • Scaladoc
    • Publish scaladoc to github pages somehow? (sbt-site - sbt ghpagesPushSite)
    • Push github pages site from CI (may need a token or ssh key)
  • Cross-build (2.11, 2.12, 2.13? Will these even work?)