Splitting principle: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>CitationCleanerBot
m Various citation cleanup + WP:AWB fixes . Report errors and suggestions at User talk:CitationCleanerBot
 
en>Addbot
m Bot: Migrating 1 interwiki links, now provided by Wikidata on d:q7578745
Line 1: Line 1:
{{about|a system for encoding geographic coordinates|the game|Geohashing}}


'''Geohash''' is a [[latitude]]/[[longitude]] [[Geocoding|geocode]] system invented
by [[Gustavo Niemeyer]] when writing the web service at ''[http://geohash.org geohash.org]'', and
put into the public domain. It is a hierarchical spatial data structure
which subdivides space into buckets of [[Grid (spatial index)|grid]] shape.


Peoρle usually have a variety of viewpoints ԝith regards to the make up of any nutritious sߋftware tɦat is ϲertainly well-healthy and successful. This bit provides gгeat іnsiցht, іdeaѕ and knowledǥe which yoս can use right away.<br><br>Involve 600-900 milligгams of garlic clove in your diet everyԀay. Gаrlic clove can be a natural fix for reducing your probаbility of coronary dіseasе and some types of cancer. Furthermߋre, garlic cloves is known as to obtain factors tҺat fight ɑgainst germs and fungus. Garlic clove ϲomponents should be a dаy-to-day addition in what you eat.<br><br>Riboflavin is reallу a nutrient and ought to be a part of Ьalanced and ɦealthy diet. Riboflavin iѕ neceѕsary to release the electricity fгom carbs, fatty aciԁs and necessary protein [http://sito-web.org/buy-vigrx-plus-cheap-diet-suggestions-which-make-you-need-try-eat-healthful how often to take vigrx plus] the body requіres. It ɑlso helps metabolize ԁistinct nutriеnts and transports iron to the people areas of tҺe body which need it. Dairy and wholegrain merchandise consіst of a adequаte diet amount of riboflavin.<br><br>Pick a diet plan which iѕ full of healthіer grain. Having cerealѕ will make you more healthy than if you stuck to white colored refined carbohydrates. Make sure that the things you choose are created with 100% cereals and are not just "enriched" with them. Using this method, you ɦappen to be satisfying your system with required fiber сontent, while compеnsating for the possible lack of nutrients and vitamins in enhanced carbs.<br><br>If yοu're almost full, don't try tߋ eat any more. Yߋu'll then keep үourself from overeating, along with your phƴsique ϲan break down the food in ρroper methods. Quitting eating well before Ƅecoming tοtal will help you keep in command οf your food to Һelp you contіnue to keep being wholesome.<br><br>To gսarantee your whole body can make a lot ߋf red-colored blood cells, ցet lots of vitamin b complex-12. This will improve your rеd ƅlood flow cell cοunt up. B Vitamin-12 is fantastic for the еlderly and others suffering from anemia. Wholesome, natural breakfast cereal products often have B12, and of course, yoս can always have a health supplement.<br><br>Meals with good zinc content can help ʏou get over diseases speedіer. Zinc strengthеns the  [http://www.allweb.Com.kh/exalogwiki/?p=204201 Vigrx Plus Growth] defеnse mechanisms, which wɑrds off օf dіsease and enables our bodies to obtain faг better faster. Exceptional zinc options involѵе pumpkin sеed products, peaches, wheat baϲteria, and ƅеrries. Most of these meals also havе herbɑl antioxidants.<br><br>In many instɑnces, merely incorporating vitamins to your everyday strategу will not be sufficient tο ǥenerate the best results. Health supplеments are supposed to be enhancements to some healthful eating plan. You shouldn't take greater thɑn a individual multі-vitamin on a daily basis. You neeɗ tօ [https://Www.gov.uk/search?q=concentrate concentrate] on eating much healthier instead of inclined on one ѕupplement.<br><br>If you want to minimize excess fɑt levels of yoսr diet, prepare fooɗ your vegɡies with drinking water insteɑd of essential oil. Stеaming vegetables fails to forfeit style. When you have to use oil, ensurе it is vegetable оіls instead of bսtter.<br><br>As an alternative to bгight white loaves оf brеad, use whоlegrain seeded a loaf of bread to your sandwiches. [http://www.ehow.com/search.html?s=Wholegrain Wholegrain] a loаf of bread carries a reduce glycemic іndex, minimizing cravings for food pangs, helping ԝeight control, and protecting from heart disease. These bread will also be full of neϲessary fatty acids and dietary fiber that allow your gɑstrointestinal system to [http://www.Britannica.com/search?query=function function] more efficientlү.<br><br>A friend might be a great assistance ѕystеm as you adjust to a large alter in yoսr daily life, for еxamplе your diet. Seek out ѕomebody lіke a advisor who can provide some propeг aѕsistance and determinatiօn as you embark on this new lіfe problem. The most important thing is that you haѵe somebody wіth that you can go over issues.<br><br>Consume dishes that happen to be more compact and a lot more healthy in your entire day. Ingesting these smaller food a couple ߋf hours away from each other among several аnd 6 times day-to-day can assist dіgestion and maintain the еxtra weiɡht downward. Ensuring that you maіntain a healthіer body weight helps keeps yοur likelihood of condіtions like high blood pressure and all forms of diabetes ԁown. Furthermore, you can actually sense total when consuming more often. This helps to get rid of binge eating as well as other eating problems.<br><br>Utіlizing the notebook will keеp you from laying off and having procеssed foods. The plethora of dishes you disϲover inside your notebook can help ʏou aѵoid aϲquiring sick of the food options, and letting go of on the diet plan as a result.<br><br>You don't wish to try to eat snack foods which are high in saturated fats. This consists of meals created from animal items in addіtion to kinds that contain organiс essentiаl oil. These oils may bе just like high in սnhealthy fɑts as natural oils made out of dog body fat. Saturаteɗ fat stores alone wіthin your body and іt is harmful in other methods. Products deсlaring to become no-cholesterol levels can still have the ability to impгove your cholesterol levels.<br><br>The intention of a multi-vitamin iѕ usually to health ѕupplement your current diet plan, not change it out. To get the best level of natural vіtamins you ougҺt to be consuming whole foods. Unless of course a doctor affirms іn a different way, do not eat a couрle of multi-vitamin daіly. Ҭaking a lot of suƿplements is in fact poor.<br><br>Beсause ϲobalt assists proceѕs B vitamins, particularly nutгitional B12 (cobalamin), іt is critical that you іnclude cobalt in your daily diet strаtegy. It is found in freѕh vegetables that have dark greеn foliage like green spinach. Even so, body organ leаn meats like fіltering organs, hearts and lіvers work most effectively sources for this sourcе of nourishment.<br><br>Most of fitneѕs and health has to do with a person's frame of mind. Getting hеalthy entails more than sіmply exercising. There is not any concern your body and mind are cоnnected, which means the two may bе impaсted by your selection to enjoƴ appropriate and physiсal activitʏ. It's essential to a pleasant life to resіde in well being and also purѕue your hobbieѕ.<br><br>Having an even mοre nourishіng diet will surely boost better benefits to your wellbeing, and also offer you added protection from illnesses. No matter if you mіght be olɗer or yоunger, thiѕ aгticle's guidance may be used to increase your everyday nutritional behavior. You've οnly acquired the ߋne Ьody, so  [http://Tabletcow.Co.uk/vigrx-plus-price-in-uae-excellent-manual-on-tips-to-get-a-healty-physique/ does walgreens Sell vigrx plus] safegսard it!
Geohashes offer properties like arbitrary precision and the possibility of
gradually removing characters from the end of the code to reduce its size
(and gradually lose precision).
 
As a consequence of the gradual precision degradation, nearby places will
often (but not always) present similar prefixes. Conversely, the longer a
shared prefix is, the closer the two places are.
 
== Service ==
 
The purpose of the ''geohash.org'' service, launched in February 2008, is to offer short [[Uniform Resource Locator|URL]]s which uniquely identify positions on the [[Earth]], so that referencing them in [[email]]s, [[Internet forum|forums]], and [[website]]s is more convenient.
 
To obtain the Geohash, the user provides an address to be [[Geocoding|geocoded]], or [[latitude]] and [[longitude]] coordinates, in a single input box (most commonly used formats for latitude and longitude pairs are accepted), and performs the request.
 
Besides showing the latitude and longitude corresponding to the given Geohash, users who navigate to a Geohash at geohash.org are also presented with an embedded map, and may download a [[GPX (data transfer)|GPX]] file, or transfer the waypoint directly to certain [[GPS]] receivers. Links are also provided to external sites that may provide further details around the specified
location.
 
For example, the coordinate pair '''57.64911,10.40744''' (near the tip of the [[peninsula]] of [[Jutland]], in [[Denmark]]) produces a slightly shorter hash of '''u4pruydqqvj''', which can be used in the URL http://geohash.org/u4pruydqqvj
 
==Uses==
 
The main usages of Geohashes are
* as a unique identifier.
* represent point data e.g. in databases.
 
Geohashes have also been proposed to be used for [[geotagging]].
 
When used in a database, the structure of geohashed data has two advantages. First, data indexed by geohash will have all points for a given rectangular area in contiguous slices (the number of slices depends on the precision required and the presence of geohash "fault lines"). This is especially useful in database systems where queries on a single index are much easier or faster than multiple-index queries. Second, this index structure can be used for a quick-and-dirty proximity search - the closest points are often among the closest geohashes.
 
== Example ==
 
Using the hash ''ezs42'' as an example, here is how it is decoded into a decimal latitude and longitude
 
=== Decode from base 32 ===
 
The first step is decoding it from [[Base32|base 32]] using the following character map:
 
{| class="wikitable"
|- align="right"
! Decimal
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15
|- align="right"
! Base 32
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 ||  b ||  c ||  d ||  e ||  f ||  g
|-  
| style="font: 0.5em/0.5em serif;" colspan="20" | &nbsp;
|- align="right"
! Decimal
| 16 || 17 || 18 || 19 || 20 || 21 || 22 || 23 || 24 || 25 || 26 || 27 || 28 || 29 || 30 || 31
|- align="right"
! Base 32
|  h ||  j ||  k ||  m ||  n ||  p ||  q ||  r ||  s ||  t ||  u ||  v ||  w ||  x ||  y ||  z
|}
 
This operation results in the [[bit]]s 01101 11111 11000 00100 00010.  Assuming that counting starts at 0 in the left side, the even bits are taken for the longitude code (0111110000000), while the odd bits are taken for the latitude code (101111001001).
 
=== Decode binary to decimal ===
 
Each binary code is then used in a series of divisions, considering one bit at a time,
again from the left to the right side.  For the latitude value, the interval
-90 to +90 is divided by 2, producing two intervals: -90 to 0, and 0 to +90.  Since
the first bit is 1, the higher interval is chosen, and becomes the current interval.
The procedure is repeated for all bits in the code.  Finally, the latitude value is
the center of the resulting interval.  Longitudes are processed in an equivalent way,
keeping in mind that the initial interval is -180 to +180.
 
Finishing the procedure should yield approximately latitude 42.6 and
longitude -5.6.
 
=== Worked example ===
 
Here's a worked example decoding 101111001001 into 42.6. To start with, we know the latitude is somewhere in the range −90 to 90. With no bits, we'd have to guess the latitude was 0, giving us an error of ±90. With one bit, we can decide whether its in the range −90 to 0, or 0 to 90. The first bit is high, so we know our latitude is somewhere between 0 and 90. Without any more bits, we'd guess the latitude was 45, giving us an error of ±45.
 
Each subsequent bit halves this error. This table shows the effect of each bit. At each stage, the relevant half of the range is highlighted in green; a low bit selects the lower range, a high bit the upper range.
 
The last column shows the latitude, simply the mean value of the range. Each subsequent bit makes this value more precise.
 
{| class="wikitable"
|-
! bit
! min
! mid
! max
! val
! err
|-
| 1 || -90.000 || style="background:#cceecc" |0.000 || style="background:#cceecc" |90.000 || 45.000 || 45.000
|-
| 0 || style="background:#cceecc" |0.000 || style="background:#cceecc" |45.000 || 90.000 || 22.500 || 22.500
|-
| 1 || 0.000 || style="background:#cceecc" |22.500 || style="background:#cceecc" |45.000 || 33.750 || 11.250
|-
| 1 || 22.500 || style="background:#cceecc" |33.750 || style="background:#cceecc" |45.000 || 39.375 || 5.625
|-
| 1 || 33.750 || style="background:#cceecc" |39.375 || style="background:#cceecc" |45.000 || 42.188 || 2.813
|-
| 1 || 39.375 || style="background:#cceecc" |42.188 || style="background:#cceecc" |45.000 || 43.594 || 1.406
|-
| 0 || style="background:#cceecc" |42.188 || style="background:#cceecc" |43.594 || 45.000 || 42.891 || 0.703
|-
| 0 || style="background:#cceecc" |42.188 || style="background:#cceecc" |42.891 || 43.594 || 42.539 || 0.352
|-
| 1 || 42.188 || style="background:#cceecc" |42.539 || style="background:#cceecc" |42.891 || 42.715 || 0.176
|-
| 0 || style="background:#cceecc" |42.539 || style="background:#cceecc" |42.715 || 42.891 || 42.627 || 0.088
|-
| 0 || style="background:#cceecc" |42.539 || style="background:#cceecc" |42.627 || 42.715 || 42.583 || 0.044
|-
| 1 || 42.539 || style="background:#cceecc" |42.583 || style="background:#cceecc" |42.627 || 42.605 || 0.022
|}
 
(The numbers in the above table have been rounded to 3 decimal places for clarity)
 
Final rounding should be done carefully in a way that
 
:<math> \min \le \mathrm{round}(value) \le \max </math>
 
So if rounding 42.605 to 42.61 or 42.6 is correct, rounding to 43 it is not.
 
{| class="wikitable"
|-
! geohash length
! lat bits
! lng bits
! lat error
! lng error
! km error
|-
| 1 || 2 || 3 || ±23 || ±23 || ±2500
|-
| 2 || 5 || 5 || ± 2.8 || ± 5.6 || ±630
|-
| 3 || 7 || 8 || ± 0.70 || ± 0.7 || ±78
|-
| 4 || 10 || 10 || ± 0.087 || ± 0.18 || ±20
|-
| 5 || 12 || 13 || ± 0.022 || ± 0.022 || ±2.4
|-
| 6 || 15 || 15 || ± 0.0027 || ± 0.0055 || ±0.61
|-
| 7 || 17 || 18 || ±0.00068 || ±0.00068 || ±0.076
|-
| 8 || 20 || 20 || ±0.000085 || ±0.00017 || ±0.019
|}
 
== Limitations ==
 
One limitation of the Geohash algorithm is in attempting to utilize it to find points in proximity to each other based on a common prefix. [[Edge case]] locations close to each other but on opposite sides of the [[Equator]] or a [[Meridian (geography)|meridian]] can result in Geohash codes with no common prefix.<ref>[http://simonwillison.net/2008/Jun/8/geohash/ Michael S. on geospatialsemanticweb.com, June 8, 2008]</ref>
 
Secondly a geohash essentially defines a bounding box within which a location lies, therefore two locations may be spatially very close but have different geohashes. In order to be useful to proximity searches, the surrounding eight geohashes of a geohash must be calculated and the locations matching these pulled out, therefore complicating potential usage in [[proximity search (metric space)|proximity search]]es.
 
Despite those issues, there are possible workarounds, and the algorithm has been successfully used in MongoDB and HBase to implement proximity searches.<ref>[http://www.mongodb.org/display/DOCS/Geospatial+Indexing Geospatial Indexing in MongoDB]</ref>
 
An alternative to storing Geohashes as strings in a database are [http://www.cs.umd.edu/~hjs/pubs/SametVisualComputer89.pdf Locational codes], which are also called spatial keys and similar to QuadTiles.<ref>[http://karussell.wordpress.com/2012/05/23/spatial-keys-memory-efficient-geohashes/ Spatial Keys]</ref><ref>[http://wiki.openstreetmap.org/wiki/QuadTiles QuadTiles]</ref>
 
== License and patents ==
 
The Geohash geocode has been put in the [[public domain]] by its inventor in
the public announcement date, on February 26, 2008.<ref>[http://forums.groundspeak.com/GC/index.php?showtopic=186412 geohash.org announcement post in groundspeak.com forum]</ref>
 
While comparable algorithms have been successfully
patented<ref>[http://www.freepatentsonline.com/20050023524.html Compact text encoding of latitude/longitude coordinates - Patent 20050023524]</ref> and
had copyright claimed upon,<ref>[http://www.gps-practice-and-fun.com/nacgeo.html#Microsoft Does Microsoft Infringe the Natural Area Coding System?]</ref><ref>[http://www.nacgeo.com/nacsite/licensing/ The Natural Area Coding System - Legal and Licensing]</ref> GeoHash is based on an entirely different algorithm and approach.
 
==See also==
*[[Geohash-36]]
*[[Grid (spatial index)]]
*[[Morton number (number theory)]]
*[[Natural Area Code]]
*[[Maidenhead Locator System]]
*[[Military grid reference system]]
 
== External links ==
* [http://geohash.org geohash.org]
* [http://www.bigdatamodeling.org/2013/01/intuitive-geohash.html Visualizing Geohash]
* [https://clojars.org/geohash Clojure library for encoding & decoding geohashes without calling geohash.org]
* [https://metacpan.org/module/Net::Geohash Perl module to interact with geohash.org]
* Java classes for encoding and decoding geohashes: [http://code.google.com/p/geospatialweb/source/browse/#svn/trunk/geohash/src geospatialweb], [https://sourceforge.net/projects/jgeohash/files/1.3.8/ jgeohash], [http://github.com/kungfoo/geohash-java geohash-java],  and [http://github.com/davidmoten/geo geo]
* [http://github.com/davetroy/geohash-js/ Javascript module for encoding and decoding geohashes without interacting with geohash.org] and [http://openlocation.org/geohash/geohash-js/ Demo]
* [http://github.com/nowelium/geohash-mysql-func MySQL Function for encoding and decoding geohash]
*[http://www.postgis.org/docs/ST_GeoHash.html PostGIS function that returns a geohash representation of a geometry]
* [http://geohash.rubyforge.org Ruby gem for encoding and decoding geohashes without interacting with geohash.org]
* [https://metacpan.org/module/Geo::Hash Perl module for encoding and decoding geohashes without interacting with geohash.org]
* [http://blog.dixo.net/downloads/geohash-php-class/ PHP class for encoding and decoding geohashes without interacting with geohash.org]
* [http://pypi.python.org/pypi/Geohash/ Python module for encoding and decoding geohashes without interacting with geohash.org]
* [http://github.com/mariusaeriksen/geohash Haskell library for encoding and decoding geohashes without interacting with geohash.org]
* [https://github.com/lyokato/libgeohash C library for encoding and decoding geohashes without interacting with geohash.org]
* [https://github.com/the42/cartconvert/tree/master/cartconvert Go package for encoding / decoding geohashes to UTM or lat / long]
* [https://github.com/lyokato/objc-geohash Objective-C library for encoding and decoding geohashes without interacting with geohash.org]
* [http://code.google.com/p/ocaml-geohash/ Ocaml module for encoding and decoding geohashes without interacting with geohash.org]
* [http://geowanking.org/pipermail/geowanking_geowanking.org/2005-February/001401.html Proposal for a similar encoding and associated 'geo' URL scheme]
* [http://loc.is http://loc.is - a geohash designed for analytics.]
* [http://api.prezzibenzina.it/geohash.kml kml file for Google Earth displaying geohash grid]
* [https://github.com/sunng87/node-geohash ngeohash, nodejs module for encoding and decoding geohash]
* [http://www.geoplace.it geoplace.it: a free service to reference positions using an approach different from geohash.org and with a more accurate service]
* [https://github.com/paulasmuth/redis_geohash/blob/master/lib/redis_geohash/geohash.rb A geohash implementation in pure ruby (~50 sloc)]
* [http://geohash.2ch.to/ Area Check Tool]
 
== References ==
{{reflist}}
 
[[Category:Geocodes]]

Revision as of 08:32, 24 March 2013

29 yr old Orthopaedic Surgeon Grippo from Saint-Paul, spends time with interests including model railways, top property developers in singapore developers in singapore and dolls. Finished a cruise ship experience that included passing by Runic Stones and Church.

Geohash is a latitude/longitude geocode system invented by Gustavo Niemeyer when writing the web service at geohash.org, and put into the public domain. It is a hierarchical spatial data structure which subdivides space into buckets of grid shape.

Geohashes offer properties like arbitrary precision and the possibility of gradually removing characters from the end of the code to reduce its size (and gradually lose precision).

As a consequence of the gradual precision degradation, nearby places will often (but not always) present similar prefixes. Conversely, the longer a shared prefix is, the closer the two places are.

Service

The purpose of the geohash.org service, launched in February 2008, is to offer short URLs which uniquely identify positions on the Earth, so that referencing them in emails, forums, and websites is more convenient.

To obtain the Geohash, the user provides an address to be geocoded, or latitude and longitude coordinates, in a single input box (most commonly used formats for latitude and longitude pairs are accepted), and performs the request.

Besides showing the latitude and longitude corresponding to the given Geohash, users who navigate to a Geohash at geohash.org are also presented with an embedded map, and may download a GPX file, or transfer the waypoint directly to certain GPS receivers. Links are also provided to external sites that may provide further details around the specified location.

For example, the coordinate pair 57.64911,10.40744 (near the tip of the peninsula of Jutland, in Denmark) produces a slightly shorter hash of u4pruydqqvj, which can be used in the URL http://geohash.org/u4pruydqqvj

Uses

The main usages of Geohashes are

  • as a unique identifier.
  • represent point data e.g. in databases.

Geohashes have also been proposed to be used for geotagging.

When used in a database, the structure of geohashed data has two advantages. First, data indexed by geohash will have all points for a given rectangular area in contiguous slices (the number of slices depends on the precision required and the presence of geohash "fault lines"). This is especially useful in database systems where queries on a single index are much easier or faster than multiple-index queries. Second, this index structure can be used for a quick-and-dirty proximity search - the closest points are often among the closest geohashes.

Example

Using the hash ezs42 as an example, here is how it is decoded into a decimal latitude and longitude

Decode from base 32

The first step is decoding it from base 32 using the following character map:

Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Base 32 0 1 2 3 4 5 6 7 8 9 b c d e f g
 
Decimal 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Base 32 h j k m n p q r s t u v w x y z

This operation results in the bits 01101 11111 11000 00100 00010. Assuming that counting starts at 0 in the left side, the even bits are taken for the longitude code (0111110000000), while the odd bits are taken for the latitude code (101111001001).

Decode binary to decimal

Each binary code is then used in a series of divisions, considering one bit at a time, again from the left to the right side. For the latitude value, the interval -90 to +90 is divided by 2, producing two intervals: -90 to 0, and 0 to +90. Since the first bit is 1, the higher interval is chosen, and becomes the current interval. The procedure is repeated for all bits in the code. Finally, the latitude value is the center of the resulting interval. Longitudes are processed in an equivalent way, keeping in mind that the initial interval is -180 to +180.

Finishing the procedure should yield approximately latitude 42.6 and longitude -5.6.

Worked example

Here's a worked example decoding 101111001001 into 42.6. To start with, we know the latitude is somewhere in the range −90 to 90. With no bits, we'd have to guess the latitude was 0, giving us an error of ±90. With one bit, we can decide whether its in the range −90 to 0, or 0 to 90. The first bit is high, so we know our latitude is somewhere between 0 and 90. Without any more bits, we'd guess the latitude was 45, giving us an error of ±45.

Each subsequent bit halves this error. This table shows the effect of each bit. At each stage, the relevant half of the range is highlighted in green; a low bit selects the lower range, a high bit the upper range.

The last column shows the latitude, simply the mean value of the range. Each subsequent bit makes this value more precise.

bit min mid max val err
1 -90.000 0.000 90.000 45.000 45.000
0 0.000 45.000 90.000 22.500 22.500
1 0.000 22.500 45.000 33.750 11.250
1 22.500 33.750 45.000 39.375 5.625
1 33.750 39.375 45.000 42.188 2.813
1 39.375 42.188 45.000 43.594 1.406
0 42.188 43.594 45.000 42.891 0.703
0 42.188 42.891 43.594 42.539 0.352
1 42.188 42.539 42.891 42.715 0.176
0 42.539 42.715 42.891 42.627 0.088
0 42.539 42.627 42.715 42.583 0.044
1 42.539 42.583 42.627 42.605 0.022

(The numbers in the above table have been rounded to 3 decimal places for clarity)

Final rounding should be done carefully in a way that

So if rounding 42.605 to 42.61 or 42.6 is correct, rounding to 43 it is not.

geohash length lat bits lng bits lat error lng error km error
1 2 3 ±23 ±23 ±2500
2 5 5 ± 2.8 ± 5.6 ±630
3 7 8 ± 0.70 ± 0.7 ±78
4 10 10 ± 0.087 ± 0.18 ±20
5 12 13 ± 0.022 ± 0.022 ±2.4
6 15 15 ± 0.0027 ± 0.0055 ±0.61
7 17 18 ±0.00068 ±0.00068 ±0.076
8 20 20 ±0.000085 ±0.00017 ±0.019

Limitations

One limitation of the Geohash algorithm is in attempting to utilize it to find points in proximity to each other based on a common prefix. Edge case locations close to each other but on opposite sides of the Equator or a meridian can result in Geohash codes with no common prefix.[1]

Secondly a geohash essentially defines a bounding box within which a location lies, therefore two locations may be spatially very close but have different geohashes. In order to be useful to proximity searches, the surrounding eight geohashes of a geohash must be calculated and the locations matching these pulled out, therefore complicating potential usage in proximity searches.

Despite those issues, there are possible workarounds, and the algorithm has been successfully used in MongoDB and HBase to implement proximity searches.[2]

An alternative to storing Geohashes as strings in a database are Locational codes, which are also called spatial keys and similar to QuadTiles.[3][4]

License and patents

The Geohash geocode has been put in the public domain by its inventor in the public announcement date, on February 26, 2008.[5]

While comparable algorithms have been successfully patented[6] and had copyright claimed upon,[7][8] GeoHash is based on an entirely different algorithm and approach.

See also

External links

References

43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.