Skip to content
This repository has been archived by the owner on Jul 22, 2024. It is now read-only.

Commit

Permalink
Status update.
Browse files Browse the repository at this point in the history
  • Loading branch information
guidorice committed Jan 5, 2024
1 parent 34d1e10 commit d31206e
Showing 1 changed file with 28 additions and 10 deletions.
38 changes: 28 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,38 @@
[Mojo🔥](https://github.com/modularml/mojo) package for geographic and geometric
vector features and analytics, such as location data or earth observation data.

## status

| :warning: pre-alpha, not yet usable! |
|--------------------------------------|

If you are interested in contributing or discussing, please first contact me by email or DM on
[Mojo Discord](https://docs.modular.com).
## status 2024-01-05

| :construction: pre-alpha, not yet usable! |
|-------------------------------------------|

In 2023, this package (formerly `geo-features`) served for learning Mojo 0.x
and to experiment with the memory layout advocated by
[GeoArrow](https://geoarrow.org). GeoArrow seems quite promising, but is
already well served by it's C, Rust and Python implementations. In Mojo, there
is not yet support for zero-copy shared memory buffers, so I created a [feature
request for the python buffer
protocol](https://github.com/modularml/mojo/issues/1515). Until that is
supported, I not see any practical use for a GeoArrow implementation in pure
Mojo.

In 2024 and beyond I'm exploring an alternative backend and memory layout using
dual quaternions. Dual quaternions can represent rotations and translations,
and should be useful in solving the [antimeridian crossing
problem](https://macwright.com/2016/09/26/the-180th-meridian.html). Dual
quaternions have been successfully used in robotics, physics simulations, game
dev, and graphics. To this end I added "Be useful for many application
domains..." to the [project goals](#project-goals).

## project goals

- Apply Mojo's systems programming features to create a native geo package with strong
type safety and high performance.
- Be useful for many application domains, not only Geographic Information
Systems (GIS). Additionally: planetary information systems, oceanography,
robotics, gamedev, graphics, embedded systems.
- Promote [cloud native geospatial](https://cloudnativegeo.org/) computing and
open geospatial standards, ex: [GeoParquet](https://geoparquet.org/).
open geospatial standards.
- Leverage the vast Python ecosystem, wherever possible, to enable rapid
development and development and interoperability.

Expand Down Expand Up @@ -72,8 +90,8 @@ development and development and interoperability.

## architectural decisions

- Implement a columnar memory layout similar to [GeoArrow](https://geoarrow.org/), for
efficient representation of coordinates, features and attributes.
- ~~Implement a columnar memory layout similar to [GeoArrow](https://geoarrow.org/), for
efficient representation of coordinates, features and attributes.~~ See [status 2024-01-05](#status-2024-01-05).

## related software

Expand Down

0 comments on commit d31206e

Please sign in to comment.