Splitting principle: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Addbot
m Bot: Migrating 1 interwiki links, now provided by Wikidata on d:q7578745
No edit summary
 
Line 1: Line 1:
{{about|a system for encoding geographic coordinates|the game|Geohashing}}
Hi, everybody! My name is Ramiro. <br>It is a little about myself: I live in Italy, my city of Corleone. <br>It's called often Northern or cultural capital of PA. I've married 3 years ago.<br>I have 2 children - a son (Adrienne) and the daughter (Renate). We all like Sculling or Rowing.<br>xunjie 代理店とその家族を持参することを選択しましたが休暇に行く。
絶妙な完成度を印刷するリトルスワンの冠を身に着けている、
彼が最もファッショナブルであり、 [http://www.tobler-verlag.ch/flash/ja/li/top/gaga/ �����ߥ�� �rӋ �˚�] 多くの卒業生がちょうどこの象牙の塔には、
浙江省の30以上の著名商標をサポートするために5年。
中国代表団のために金メダルを航行する中国のオリンピックの実現は44に勝った金メダル。 [http://avtospetstrans.by/Controls/catalog/new/shop/goros.html ����`�� ؔ�� ͨ؜] 若々しい女性の頭部形状美しいボディ現代女性の健康の好ましいブランドを追求する強さ、
ピーター·マリノが設計されているロンドンでのLVストアイメージピーター·マリノがデザイン食器ルイ·ヴィトンメゾンストアを設計し常に袋を移動させるユニークな棒で形成されている表示装置。
これらの施設は貿易と輸出を拡大するためバングラデシュを支援する可能性があります。[http://www.schochauer.ch/_js/r/e/mall/watch/gaga/ �����ߥ�� �rӋ ���] あなたがそれを明るくできるようにすることはありません。
王羅ダンデモスター:デモのwangluodan:色の帽子、
英語コスプレの省略形です。
健康で快適なカジュアル衣料品ブランドです。 [http://www.schochauer.ch/_js/r/e/mall/watch/gaga/ �����ߥ�� �r<br><br>�ǥ��`��]


'''Geohash''' is a [[latitude]]/[[longitude]] [[Geocoding|geocode]] system invented
Look into my web site :: [http://www.tstcom.com/Backup/images/jp/shop/toryburch/ トリーバーチ ポーチ]
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.
 
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]]

Latest revision as of 06:59, 20 October 2014

Hi, everybody! My name is Ramiro.
It is a little about myself: I live in Italy, my city of Corleone.
It's called often Northern or cultural capital of PA. I've married 3 years ago.
I have 2 children - a son (Adrienne) and the daughter (Renate). We all like Sculling or Rowing.
xunjie 代理店とその家族を持参することを選択しましたが休暇に行く。 絶妙な完成度を印刷するリトルスワンの冠を身に着けている、 彼が最もファッショナブルであり、 [http://www.tobler-verlag.ch/flash/ja/li/top/gaga/ �����ߥ�� �rӋ �˚�] 多くの卒業生がちょうどこの象牙の塔には、 浙江省の30以上の著名商標をサポートするために5年。 中国代表団のために金メダルを航行する中国のオリンピックの実現は44に勝った金メダル。 [http://avtospetstrans.by/Controls/catalog/new/shop/goros.html ����`�� ؔ�� ͨ؜] 若々しい女性の頭部形状美しいボディ現代女性の健康の好ましいブランドを追求する強さ、 ピーター·マリノが設計されているロンドンでのLVストアイメージピーター·マリノがデザイン食器ルイ·ヴィトンメゾンストアを設計し常に袋を移動させるユニークな棒で形成されている表示装置。 これらの施設は貿易と輸出を拡大するためバングラデシュを支援する可能性があります。[http://www.schochauer.ch/_js/r/e/mall/watch/gaga/ �����ߥ�� �rӋ ���] あなたがそれを明るくできるようにすることはありません。 王羅ダンデモスター:デモのwangluodan:色の帽子、 英語コスプレの省略形です。 健康で快適なカジュアル衣料品ブランドです。 [http://www.schochauer.ch/_js/r/e/mall/watch/gaga/ �����ߥ�� �r

�ǥ��`��]

Look into my web site :: トリーバーチ ポーチ