mapbox / mapbox/mapbox-java

Low level GeoJson implementation

Open
#710 13 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

GeoJson
Dominant language
Java
Stars
438
Forks
117
PR merge metrics
No merged PRs in 30d

Description

This is a request for either a rewrite or alternative implementation of the current GeoJson module found here. We need a high performance implementation that has a minimal memory footprint. The reasoning behind that is that geojson models should be scalable (eg. downstream we query the map for 1000 of features, the path currently taken to create those and the intermediate objects created for doing that isn't optimal atm).

Couple of thoughts to improve this:

  • use primitive instead of objects where possible
  • no need for AutoValue, implementation is based on a specification that doesn't change (often)
  • if geojson models are immutable, use arrays instead of List
  • limit method invocations & don't allocate memory if you can avoid it
  • don't over abstract concepts if they can be expressed more simple

More information on performance tips here
RFC of GeoJSON can be found here.

cc @mapbox/android

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the current implementation in services-geojson, then compare its model structure with RFC 7946 and the linked Android performance tips. Define how the rewrite or alternative will measure memory footprint and performance for roughly 1,000 features; done means the GeoJSON models meet the requested scalability goals without unnecessary allocations or abstractions.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
data
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.