haversine alternatives and similar shards
Based on the "Algorithms and Data structures" category.
Alternatively, view haversine alternatives based on common mentions on social networks and blogs.
-
crystalline
A collection of containers & algorithms for the Crystal programming language -
graphlb
graphlb is a crystal library which contains all the graph Data-Structures and Algorithms implemented in crystal-lang. -
Goban
A fast and efficient QR/Micro QR/rMQR Code implementation in Crystal lang -
markov
⛓ A Crystal library for building Markov Chains and running Markov Processes. -
crystal-linked-list
Simple linked list implementation in Crystal -
kd_tree
Crystal implementation of "K-Dimensional Tree" and "N-Nearest Neighbors" -
text
A collection of phonetic algorithms for Crystal. Including; Porter-Stemmer, Soundex, Metaphone, Double Metaphone & White Similarity -
splay_tree_map
This is a Crystal implementation of a Splay Tree; which is a type of binary search tree that is semi-balanced and that tends to self-optimize so that the most accessed items are the fastest to retrieve. -
delimiter_tree
A crystal-lang tree structure that is built using a delimiter. -
edits.cr
Edit distance algorithms inc. Jaro, Damerau-Levenshtein, and Optimal Alignment -
murmur3
Crystal implementation of Murmur3 hash algorithm used by Cassandra -
csuuid
This is a small UUID library that implements a chronologically sortable UUID. -
ternary_search_tree
A Crystal implementation of a Ternary Search Tree -
secure-remote-password
Crystal implementation of the Secure Remote Password protocol (SRP-6a) -
s2_cells
maps latitude and longitude to S2 Cells https://s2geometry.io/ -
HKDF
HMAC-based Extract-and-Expand Key Derivation Function (HKDF) for crystal lang -
SPAKE2+
a crystal lang implementation of SPAKE2+, a Password Authenticated Key Exchange (PAKE) protocol -
named_information
A crystal lang implementation of rfc6920 (Naming Things with Hashes) -
verhoeff
implementation of the Verhoeff checksum algorithm in crystal lang
InfluxDB - Power Real-Time Data Analytics at Scale
Do you think we are missing an alternative of haversine or a related project?
Popular Comparisons
README
haversine
Crystal implementation of the Haversine formula to calculate distances between two points given their latitudes and longitudes.
Installation
- Add the dependency to your
shard.yml
:
dependencies:
haversine:
github: geocrystal/haversine
- Run
shards install
Usage
require "haversine"
Calling Haversine.distance
with four latitude/longitude coordinates returns a Haversine::Distance
object which can provide output in kilometers, meters, miles, feet, or nautical miles.
# Tokyo -> Paris
distance = Haversine.distance(35.61488, 139.5813, 48.85341, 2.3488)
distance.to_kilometers # => 9715.470491159029
distance.to_meters # => 9715470.491159027
distance.to_miles # => 6032.710918698025
distance.to_feet # => 31852713.65072557
distance.to_nautical_miles # => 5242.2799481204265
If you have latitude/longitude pairs stored in an array or tuple, you can alternately provide two arrays/tuples when calling Haversine.distance
:
london = [51.500153, -0.126236]
new_york = [40.714268, -74.005974]
distance = Haversine.distance(new_york, london)
distance.to_kilometers # => 5570.4744596620685
london = {51.500153, -0.126236}
new_york = {40.714268, -74.005974}
distance = Haversine.distance(new_york, london)
distance.to_kilometers # => 5570.4744596620685
Also you can compare Haversine::Distance
objects:
london = [51.500153, -0.126236]
new_york = [40.714268, -74.005974]
shanghai = [31.222220, 121.458060]
distance1 = Haversine.distance(london, new_york)
distance2 = Haversine.distance(london, shanghai)
distance1 < distance2 # => true
Contributing
- Fork it (https://github.com/geocrystal/haversine/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- Anton Maminov - creator and maintainer
*Note that all licence references and agreements mentioned in the haversine README section above
are relevant to that project's source code only.