# \[ANN\] SimpleFeatures.jl: Working with simple feature GIS data in Julia

**URL:** <https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313>\
**Category:** Package Announcements\
**Tags:** package, announcement, geo\
**Created:** [August 4, 2022, 6:09pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313 "2022-08-04T18:09:46Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![acgold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/acgold/32/38539_2.png) [@acgold](https://discourse.julialang.org/u/acgold)\
**Post date:** [August 4, 2022, 6:09pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313/1 "2022-08-04T18:09:46Z")

</div>

Hi everyone!

I’m excited to announce a new package called [SimpleFeatures.jl](https://github.com/acgold/SimpleFeatures.jl). This package is used to work with vector GIS data in Julia.

This package:

- Works with feature data as a [**DataFrame**](https://dataframes.juliadata.org/stable/).

- Stores coordinate reference system (crs) info with the DataFrame and uses it automatically

- Uses a custom geometry type to interface with [**GDAL**](https://gdal.org) and [**GEOS**](https://libgeos.org) for fast I/O and operations

SimpleFeatures.jl was inspired by the R package [sf](https://r-spatial.github.io/sf/) and aims to provide similar basic functionality - but much faster, of course!

Check out the [docs](https://acgold.github.io/SimpleFeatures.jl/dev/) for more info about available functions and how it works.

I am very new to Julia and would appreciate any feedback or contributions!

---

<div class="post-metadata">

**Author:** ![George9000](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/george9000/32/23619_2.png) [@George9000](https://discourse.julialang.org/u/George9000)\
**Post date:** [August 4, 2022, 6:50pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313/2 "2022-08-04T18:50:31Z")

</div>

Adam, It’s good to hear of efforts to bring into Julia functionality along the lines of R’s sf package. You might want to look at [JuliaGeo](https://juliageo.org/) and especially at [GeoInterface](https://juliageo.org/GeoInterface.jl/stable/background/sf/). I suspect your package will find overlap and complementarity with these others.

---

<div class="post-metadata">

**Author:** ![TheCedarPrince](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/thecedarprince/32/17323_2.png) [@TheCedarPrince](https://discourse.julialang.org/u/TheCedarPrince)\
**Post date:** [August 4, 2022, 7:03pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313/3 "2022-08-04T19:03:41Z")

</div>

Hi Adam,

Welcome to the community! This is amazing and I also saw your website - it would be wonderful to have the sort of work you are doing in the Julia community and I am sure we all would love to support you! As you say that you are also new, to @George9000 's point, please join us in Slack too and check out the #geo channel! Hope to see you around. 🙂

Link: [The Julia Language Slack](https://julialang.org/slack/)

~ tcp 🌳

---

<div class="post-metadata">

**Author:** ![acgold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/acgold/32/38539_2.png) [@acgold](https://discourse.julialang.org/u/acgold)\
**Post date:** [August 4, 2022, 7:28pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313/4 "2022-08-04T19:28:56Z")

</div>

Thanks, and joined the Slack!

---

<div class="post-metadata">

**Author:** ![acgold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/acgold/32/38539_2.png) [@acgold](https://discourse.julialang.org/u/acgold)\
**Post date:** [August 4, 2022, 8:03pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313/5 "2022-08-04T20:03:08Z")

</div>

> [@George9000](#):
>
> You might want to look at [JuliaGeo](https://juliageo.org/) and especially at [GeoInterface](https://juliageo.org/GeoInterface.jl/stable/background/sf/). I suspect your package will find overlap and complementarity with these others.

Agreed, JuliaGeo is great and looking forward to joining the community on Slack! `SimpleFeatures` relies on many of those packages - it uses some modified code for I/O from [`GeoDataFrames.jl`](https://github.com/evetion/GeoDataFrames.jl), GeoInterface for some miscellaneous calcs, [`LibGEOS.jl`](https://github.com/JuliaGeo/LibGEOS.jl) for operations, and [`ArchGDAL.jl`](https://github.com/yeesian/ArchGDAL.jl) for operations and geometry handling.

The “custom geometry type” `SimpleFeatures` uses is just a struct that contains the well-known binary (WKB) and an abbreviated well-known text (WKT) string for display. `SimpleFeatures` just converts the WKB to ArchGDAL geometries that then follow the GeoInterface standard. There’s a function in `SimpleFeatures` that does this and [converts a `SimpleFeature` object to a `GeoDataFrame`](https://acgold.github.io/SimpleFeatures.jl/dev/reference/#SimpleFeatures.sf_to_df-Tuple%7BSimpleFeatures.SimpleFeature%7D)

---

<div class="post-metadata">

**Author:** ![visr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/visr/32/17204_2.png) [@visr](https://discourse.julialang.org/u/visr)\
**Post date:** [August 4, 2022, 8:35pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313/6 "2022-08-04T20:35:54Z")

</div>

Hi, welcome, and thanks for sharing your work. I’m impressed how you managed to put this together, building on and extending existing functionality, especially as a newcomer to the community!

May I ask, why did you decide to license this package under the GPL? It would be nice to be able to learn from and perhaps use parts of the code to improve the MIT licensed packages it depends on, but I’m hesitant due to the [GPL and virality](https://discourse.julialang.org/t/gpl-and-virality/7715).

---

<div class="post-metadata">

**Author:** ![acgold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/acgold/32/38539_2.png) [@acgold](https://discourse.julialang.org/u/acgold)\
**Post date:** [August 4, 2022, 8:50pm UTC](https://discourse.julialang.org/t/ann-simplefeatures-jl-working-with-simple-feature-gis-data-in-julia/85313/7 "2022-08-04T20:50:48Z")

</div>

Thanks, @visr! I appreciate all of your work on JuliaGeo packages!

I didn’t realize that the license would be an issue. GPL is just what I have typically used for my projects. I am happy to change it to the MIT license so it can be more useful! I’ll submit a patch release soon with that change.
