GeometryOps

GeoInterface-based geometry operations

https://github.com/juliageo/geometryops.jl

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.6%) to scientific vocabulary

Keywords

geometry geospatial julia
Last synced: 6 months ago · JSON representation ·

Repository

GeoInterface-based geometry operations

Basic Info
Statistics
  • Stars: 56
  • Watchers: 5
  • Forks: 8
  • Open Issues: 120
  • Releases: 28
Topics
geometry geospatial julia
Created almost 3 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Citation

README.md

GeometryOps.jl

Lifecycle:In Development Stable Dev Build Status

GeometryOps logo

[!WARNING] This package is still under heavy development! Use with care.

GeometryOps.jl is a package for geometric calculations on (primarily 2D) geometries.

The driving idea behind this package is to unify all the disparate packages for geometric calculations in Julia, and make them GeoInterface.jl-compatible. We are focusing primarily on 2/2.5D geometries for now. All methods in this package will consume any geometry which is compatible with GeoInterface - see its integrations page for more info on that!

Most of the use cases are driven by GIS and similar Earth data workflows, so this might be a bit specialized towards that, but methods should always be general to any coordinate space.

We welcome contributions, either as pull requests or discussion on issues!

Methods

GeometryOps tries to offer most of the basic geometry operations you'd need, implemented in pure Julia and accepting any GeoInterface.jl compatible type.

  • General geometry methods (OGC methods): equals, extent, distance, crosses, contains, intersects, etc
  • Targeted function application over large nested geometries (apply) and reduction over geometries (applyreduce)
    • Both apply and applyreduce consume arbitrary tables as well, like DataFrames!
  • signed_area, centroid, distance, etc for valid geometries
  • Line and polygon simplification (simplify)
  • Polygon clipping, intersection, difference and union
  • Generalized barycentric coordinates in polygons (barycentric_coordinates)
  • Projection of geometries between coordinate reference systems using Proj.jl
  • Polygonization of raster images by contour detection (polygonize)
  • Segmentization/densification of geometry, both linearly and by geodesic paths (segmentize)

See the "API" page in the docs for a more complete list!

How to navigate the docs

GeometryOps' docs are divided into three main sections: tutorials, explanations and source code.
Documentation and examples for many functions can be found in the source code section, since we use literate programming in GeometryOps.

  • Tutorials are meant to teach the fundamental concepts behind GeometryOps, and how to perform certain operations.
  • Explanations usually contain little code, and explain in more detail how GeometryOps works.
  • Source code usually contains explanations and examples at the top of the page, followed by annotated source code from that file.

Performance comparison to other packages

From the wonderful vector-benchmark,

download-3

More benchmarks coming soon!

Planned additions

  • Buffering, hulls (convex and otherwise)
  • Checks for valid geometries (empty linestrings, null points, etc) (#14)
  • Operations on spherical (non-Euclidean) geometry (#17)

Owner

  • Name: JuliaGeo
  • Login: JuliaGeo
  • Kind: organization

Geospatial packages for Julia

Citation (CITATION.bib)

@misc{GeometryOps.jl,
	author  = {Anshul Singhvi <anshulsinghvi@gmail.com> and contributors},
	title   = {GeometryOps.jl},
	url     = {https://github.com/JuliaGeo/GeometryOps.jl},
	version = {v1.0.0-DEV},
	year    = {2023},
	month   = {5}
}

GitHub Events

Total
  • Create event: 98
  • Commit comment event: 48
  • Release event: 13
  • Issues event: 60
  • Watch event: 24
  • Delete event: 54
  • Issue comment event: 236
  • Push event: 560
  • Pull request review event: 113
  • Pull request review comment event: 145
  • Pull request event: 112
  • Fork event: 3
Last Year
  • Create event: 98
  • Commit comment event: 48
  • Release event: 13
  • Issues event: 60
  • Watch event: 24
  • Delete event: 54
  • Issue comment event: 236
  • Push event: 560
  • Pull request review event: 113
  • Pull request review comment event: 145
  • Pull request event: 112
  • Fork event: 3

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 87
  • Total pull requests: 198
  • Average time to close issues: 6 months
  • Average time to close pull requests: 29 days
  • Total issue authors: 15
  • Total pull request authors: 10
  • Average comments per issue: 2.94
  • Average comments per pull request: 1.97
  • Merged pull requests: 135
  • Bot issues: 0
  • Bot pull requests: 7
Past Year
  • Issues: 35
  • Pull requests: 123
  • Average time to close issues: 3 months
  • Average time to close pull requests: 20 days
  • Issue authors: 10
  • Pull request authors: 8
  • Average comments per issue: 1.03
  • Average comments per pull request: 1.31
  • Merged pull requests: 77
  • Bot issues: 0
  • Bot pull requests: 6
Top Authors
Issue Authors
  • asinghvi17 (63)
  • rafaqz (10)
  • alex-s-gardner (5)
  • tiemvanderdeure (5)
  • DanielVandH (3)
  • BG-AIMS (3)
  • felixcremer (2)
  • evetion (2)
  • skygering (2)
  • gaelforget (1)
  • ZuiDet (1)
  • ConnectedSystems (1)
  • pierrethiriet (1)
  • mathieu17g (1)
  • pablosanjose (1)
Pull Request Authors
  • asinghvi17 (183)
  • rafaqz (26)
  • skygering (21)
  • github-actions[bot] (6)
  • LanaLubecke (4)
  • alex-s-gardner (3)
  • Copilot (2)
  • gaelforget (2)
  • devin-ai-integration[bot] (2)
  • tiemvanderdeure (1)
  • luntan-maker (1)
  • ConnectedSystems (1)
  • spaette (1)
Top Labels
Issue Labels
enhancement (7) discussion (4) juliacon (3) low priority (3) bug (2) good first issue (1) geocompjl (1) documentation (1) clipping (1)
Pull Request Labels
enhancement (13) bug (1) unitspherical (1) documentation (1) geocompjl (1)

Packages

  • Total packages: 2
  • Total downloads:
    • julia 663 total
  • Total dependent packages: 1
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 36
juliahub.com: GeometryOps

GeoInterface-based geometry operations

  • Versions: 28
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 328 Total
Rankings
Downloads: 3.0%
Dependent repos count: 3.2%
Average: 9.7%
Dependent packages count: 11.4%
Stargazers count: 15.2%
Forks count: 15.7%
Last synced: 6 months ago
juliahub.com: GeometryOpsCore

GeoInterface-based geometry operations

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 335 Total
Rankings
Dependent repos count: 3.2%
Downloads: 4.3%
Average: 10.9%
Stargazers count: 15.2%
Forks count: 15.7%
Dependent packages count: 16.3%
Last synced: 6 months ago

Dependencies

.github/workflows/CI.yml actions
  • actions/checkout v2 composite
  • julia-actions/cache v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-docdeploy v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/register.yml actions
  • julia-actions/RegisterAction latest composite
.github/workflows/CompatHelper.yml actions