Dart Proximity Hash

Pub Version

Proximity Hash generates a set of geohashes that cover a circular area, given the center coordinates and the radius. Geohash is a public domain geocode system which encodes a geographic location into a short string of letters and digits and is used as unique identifies and to represent point data in databases.

For example the point

25.6953° S, 54.4367° W

will covert to

6g3mc626.

Geohash

Proximity hash also comes with a geohash library forked from dart_geohash since it was not being actively maintained.

import 'package:proximity_hash/geohash.dart';

Install

To get this plugin, add proximity_hash as a dependency in your pubspec.yaml file. For example:

dependencies:
  proximity_hash: ^1.1.0

Usage

To get all the geohashes within a radius of 5000 meters from the point 25.6953° S, 54.4367° W with precision 3 simply import the library and call createGeohashes(). The precision dictates how long and how many geohashes are returned. For example a precision of 3 returns geohahses of length 3.

import 'package:proximity_hash/proximity_hash.dart';

List<String> proximityGeohashes = createGeohashes(48.864716, 2.349014, 5000, 3);

// proximityGeohashes == ["u0d","u09"]

Performance

Benchmark of createGeohashes for different precisions with radius 1000. Performance can become limiting starting at precision 9. Note that a larger radius will also decrease performance.

Precicion Time
1 .0068 sec
2 .0068 sec
3 .0070 sec
4 .0070 sec
5 .0070 sec
6 .0079 sec
7 .0232 sec
8 .1664 sec
9 4.996 sec
10 153.5 sec

Issues

Please file any issues, bugs or feature requests as an issue on our GitHub page.

Want to Contribute

If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature) submit a pull request.

Want to Support

Buy Me A Coffee


Based on proximityhash