cdocutils.nodes document q)q}q(U nametypesq}q(Xusing geohashes for plottingqNXusing geohashes for searchingqNX introductionqNXgeohash algorithmq NXsearchmetadata.htmlq X+spatial search and plotting using geohashesq NX"dataone search index and geohashesq NuUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUusing-geohashes-for-plottingqhUusing-geohashes-for-searchingqhU introductionqh Ugeohash-algorithmqh Usearchmetadata-htmlqh U+spatial-search-and-plotting-using-geohashesqh U"dataone-search-index-and-geohashesquUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$Xc/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/geohash.txtq%Utagnameq&Usectionq'U attributesq(}q)(Udupnamesq*]Uclassesq+]Ubackrefsq,]Uidsq-]q.haUnamesq/]q0h auUlineq1KUdocumentq2hh]q3(cdocutils.nodes title q4)q5}q6(h"X+Spatial Search and Plotting Using Geohashesq7h#h h$h%h&Utitleq8h(}q9(h*]h+]h,]h-]h/]uh1Kh2hh]q:cdocutils.nodes Text q;X+Spatial Search and Plotting Using Geohashesq(h"h7h#h5ubaubh)q?}q@(h"Uh#h h$h%h&h'h(}qA(h*]h+]h,]h-]qBhah/]qChauh1Kh2hh]qD(h4)qE}qF(h"X IntroductionqGh#h?h$h%h&h8h(}qH(h*]h+]h,]h-]h/]uh1Kh2hh]qIh;X IntroductionqJqK}qL(h"hGh#hEubaubcdocutils.nodes paragraph qM)qN}qO(h"XA geohash is an encoded character string that is computed from geographic coordinates. For example the approximate latitude and longitude of The National Center For Ecological Analysis and Synthesis is 34.419279, -119.698472 from which the geohash of *9q4gu1y4z* can be derived. The geohash algorithm is bidirectional, so geographic coordinates can be encoded into geohashes and geohashes can be decoded to obtain coordinates.h#h?h$h%h&U paragraphqPh(}qQ(h*]h+]h,]h-]h/]uh1Kh2hh]qR(h;XA geohash is an encoded character string that is computed from geographic coordinates. For example the approximate latitude and longitude of The National Center For Ecological Analysis and Synthesis is 34.419279, -119.698472 from which the geohash of qSqT}qU(h"XA geohash is an encoded character string that is computed from geographic coordinates. For example the approximate latitude and longitude of The National Center For Ecological Analysis and Synthesis is 34.419279, -119.698472 from which the geohash of h#hNubcdocutils.nodes emphasis qV)qW}qX(h"X *9q4gu1y4z*h(}qY(h*]h+]h,]h-]h/]uh#hNh]qZh;X 9q4gu1y4zq[q\}q](h"Uh#hWubah&Uemphasisq^ubh;X can be derived. The geohash algorithm is bidirectional, so geographic coordinates can be encoded into geohashes and geohashes can be decoded to obtain coordinates.q_q`}qa(h"X can be derived. The geohash algorithm is bidirectional, so geographic coordinates can be encoded into geohashes and geohashes can be decoded to obtain coordinates.h#hNubeubhM)qb}qc(h"X]Geohashes have the property that characters can be incrementally removed from the right side of the geohash to represent a geographic location less precisely. A geohash is an approximation of a point, where each length of the geohash corresponds to a rectangle (a geohash tile) that is an approximation of the original encoded geographic coordinate.qdh#h?h$h%h&hPh(}qe(h*]h+]h,]h-]h/]uh1Kh2hh]qfh;X]Geohashes have the property that characters can be incrementally removed from the right side of the geohash to represent a geographic location less precisely. A geohash is an approximation of a point, where each length of the geohash corresponds to a rectangle (a geohash tile) that is an approximation of the original encoded geographic coordinate.qgqh}qi(h"hdh#hbubaubhM)qj}qk(h"X\This feature of geohashes can be useful for searching and plotting at different resolutions.qlh#h?h$h%h&hPh(}qm(h*]h+]h,]h-]h/]uh1Kh2hh]qnh;X\This feature of geohashes can be useful for searching and plotting at different resolutions.qoqp}qq(h"hlh#hjubaubhM)qr}qs(h"XTable 1 shows the relationship between geohash length and the size of the rectangle represented by that geohash at the equator.qth#h?h$h%h&hPh(}qu(h*]h+]h,]h-]h/]uh1Kh2hh]qvh;XTable 1 shows the relationship between geohash length and the size of the rectangle represented by that geohash at the equator.qwqx}qy(h"hth#hrubaubcdocutils.nodes table qz)q{}q|(h"Uh#h?h$h%h&Utableq}h(}q~(h*]h+]h,]h-]qUid1qah/]uh1Nh2hh]q(h4)q}q(h"X**Table 1** Geohash Tile Sizesqh(}q(h*]h+]h,]h-]h/]uh#h{h]q(cdocutils.nodes strong q)q}q(h"X **Table 1**qh(}q(h*]h+]h,]h-]h/]uh#hh]qh;XTable 1qq}q(h"Uh#hubah&Ustrongqubh;X Geohash Tile Sizesqq}q(h"X Geohash Tile Sizesqh#hubeh&h8ubcdocutils.nodes tgroup q)q}q(h"Uh(}q(h-]h,]h*]h+]h/]UcolsKuh#h{h]q(cdocutils.nodes colspec q)q}q(h"Uh(}q(h-]h,]h*]h+]h/]UcolwidthKuh#hh]h&Ucolspecqubh)q}q(h"Uh(}q(h-]h,]h*]h+]h/]UcolwidthKuh#hh]h&hubcdocutils.nodes thead q)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]qcdocutils.nodes row q)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]q(cdocutils.nodes entry q)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]qhM)q}q(h"XLengthqh#hh$h%h&hPh(}q(h*]h+]h,]h-]h/]uh1Kh]qh;XLengthqq}q(h"hh#hubaubah&Uentryqubh)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]qhM)q}q(h"X Tile Sizeqh#hh$h%h&hPh(}q(h*]h+]h,]h-]h/]uh1Kh]qh;X Tile SizeqÅq}q(h"hh#hubaubah&hubeh&Urowqubah&Utheadqubcdocutils.nodes tbody q)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]q(h)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]q(h)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]qhM)q}q(h"X1h#hh$h%h&hPh(}q(h*]h+]h,]h-]h/]uh1K h]qh;X1q}q(h"X1h#hubaubah&hubh)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]qhM)q}q(h"X5,009.4km x 4,992.6kmqh#hh$h%h&hPh(}q(h*]h+]h,]h-]h/]uh1K h]qh;X5,009.4km x 4,992.6kmq䅁q}q(h"hh#hubaubah&hubeh&hubh)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]q(h)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]qhM)q}q(h"X2h#hh$h%h&hPh(}q(h*]h+]h,]h-]h/]uh1K!h]qh;X2q}q(h"X2h#hubaubah&hubh)q}q(h"Uh(}q(h*]h+]h,]h-]h/]uh#hh]qhM)q}q(h"X1,252.3km x 624.1kmqh#hh$h%h&hPh(}q(h*]h+]h,]h-]h/]uh1K!h]qh;X1,252.3km x 624.1kmqq}r(h"hh#hubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#hh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r }r (h"X3h#jh$h%h&hPh(}r (h*]h+]h,]h-]h/]uh1K"h]r h;X3r }r(h"X3h#j ubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X156.5km x 156kmrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K"h]rh;X156.5km x 156kmrr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#hh]r(h)r}r (h"Uh(}r!(h*]h+]h,]h-]h/]uh#jh]r"hM)r#}r$(h"X4h#jh$h%h&hPh(}r%(h*]h+]h,]h-]h/]uh1K#h]r&h;X4r'}r((h"X4h#j#ubaubah&hubh)r)}r*(h"Uh(}r+(h*]h+]h,]h-]h/]uh#jh]r,hM)r-}r.(h"X39.1km x 19.5kmr/h#j)h$h%h&hPh(}r0(h*]h+]h,]h-]h/]uh1K#h]r1h;X39.1km x 19.5kmr2r3}r4(h"j/h#j-ubaubah&hubeh&hubh)r5}r6(h"Uh(}r7(h*]h+]h,]h-]h/]uh#hh]r8(h)r9}r:(h"Uh(}r;(h*]h+]h,]h-]h/]uh#j5h]r<hM)r=}r>(h"X5h#j9h$h%h&hPh(}r?(h*]h+]h,]h-]h/]uh1K$h]r@h;X5rA}rB(h"X5h#j=ubaubah&hubh)rC}rD(h"Uh(}rE(h*]h+]h,]h-]h/]uh#j5h]rFhM)rG}rH(h"X 4.9km x 4.9kmrIh#jCh$h%h&hPh(}rJ(h*]h+]h,]h-]h/]uh1K$h]rKh;X 4.9km x 4.9kmrLrM}rN(h"jIh#jGubaubah&hubeh&hubh)rO}rP(h"Uh(}rQ(h*]h+]h,]h-]h/]uh#hh]rR(h)rS}rT(h"Uh(}rU(h*]h+]h,]h-]h/]uh#jOh]rVhM)rW}rX(h"X6h#jSh$h%h&hPh(}rY(h*]h+]h,]h-]h/]uh1K%h]rZh;X6r[}r\(h"X6h#jWubaubah&hubh)r]}r^(h"Uh(}r_(h*]h+]h,]h-]h/]uh#jOh]r`hM)ra}rb(h"X1.2km x 609.4mrch#j]h$h%h&hPh(}rd(h*]h+]h,]h-]h/]uh1K%h]reh;X1.2km x 609.4mrfrg}rh(h"jch#jaubaubah&hubeh&hubh)ri}rj(h"Uh(}rk(h*]h+]h,]h-]h/]uh#hh]rl(h)rm}rn(h"Uh(}ro(h*]h+]h,]h-]h/]uh#jih]rphM)rq}rr(h"X7h#jmh$h%h&hPh(}rs(h*]h+]h,]h-]h/]uh1K&h]rth;X7ru}rv(h"X7h#jqubaubah&hubh)rw}rx(h"Uh(}ry(h*]h+]h,]h-]h/]uh#jih]rzhM)r{}r|(h"X152.9m x 152.4mr}h#jwh$h%h&hPh(}r~(h*]h+]h,]h-]h/]uh1K&h]rh;X152.9m x 152.4mrr}r(h"j}h#j{ubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#hh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X8h#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K'h]rh;X8r}r(h"X8h#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X 38.2m x 19mrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K'h]rh;X 38.2m x 19mrr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#hh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X9h#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K(h]rh;X9r}r(h"X9h#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X 4.8m x 4.8mrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K(h]rh;X 4.8m x 4.8mrr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#hh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X10rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K)h]rh;X10rr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X 1.2m x 59.5cmrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K)h]rh;X 1.2m x 59.5cmrr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#hh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X11rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K*h]rh;X11rr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X14.9cm x 14.9cmrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K*h]rh;X14.9cm x 14.9cmrr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#hh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X12rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K+h]rh;X12rr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X 3.7cm x 1.9cmrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K+h]rh;X 3.7cm x 1.9cmrr }r (h"jh#jubaubah&hubeh&hubeh&Utbodyr ubeh&Utgroupr ubeubhM)r }r(h"XfTable 2 shows the relationship between a geohash and the resulting latitude and longitude decoded from the different length geohashes. As characters are removed from the original geohash '9q4gu1y4z' the bounding rectangle and the accuracy of the decoded geohash becomes less precise. The decoded geohash corresponds to the centroid of the bounding rectangle.rh#h?h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K/h2hh]rh;XfTable 2 shows the relationship between a geohash and the resulting latitude and longitude decoded from the different length geohashes. As characters are removed from the original geohash '9q4gu1y4z' the bounding rectangle and the accuracy of the decoded geohash becomes less precise. The decoded geohash corresponds to the centroid of the bounding rectangle.rr}r(h"jh#j ubaubhz)r}r(h"Uh#h?h$h%h&h}h(}r(h*]h+]h,]h-]rUid2rah/]uh1Nh2hh]r(h4)r}r(h"X'**Table 2.** Geohash length vs Accuracyrh(}r(h*]h+]h,]h-]h/]uh#jh]r(h)r }r!(h"X **Table 2.**r"h(}r#(h*]h+]h,]h-]h/]uh#jh]r$h;XTable 2.r%r&}r'(h"Uh#j ubah&hubh;X Geohash length vs Accuracyr(r)}r*(h"X Geohash length vs Accuracyr+h#jubeh&h8ubh)r,}r-(h"Uh(}r.(h-]h,]h*]h+]h/]UcolsKuh#jh]r/(h)r0}r1(h"Uh(}r2(h-]h,]h*]h+]h/]UcolwidthK uh#j,h]h&hubh)r3}r4(h"Uh(}r5(h-]h,]h*]h+]h/]UcolwidthKuh#j,h]h&hubh)r6}r7(h"Uh(}r8(h-]h,]h*]h+]h/]UcolwidthK-uh#j,h]h&hubh)r9}r:(h"Uh(}r;(h*]h+]h,]h-]h/]uh#j,h]r<h)r=}r>(h"Uh(}r?(h*]h+]h,]h-]h/]uh#j9h]r@(h)rA}rB(h"Uh(}rC(h*]h+]h,]h-]h/]uh#j=h]rDhM)rE}rF(h"XGeohashrGh#jAh$h%h&hPh(}rH(h*]h+]h,]h-]h/]uh1K8h]rIh;XGeohashrJrK}rL(h"jGh#jEubaubah&hubh)rM}rN(h"Uh(}rO(h*]h+]h,]h-]h/]uh#j=h]rPhM)rQ}rR(h"XTile Center lat, longrSh#jMh$h%h&hPh(}rT(h*]h+]h,]h-]h/]uh1K8h]rUh;XTile Center lat, longrVrW}rX(h"jSh#jQubaubah&hubh)rY}rZ(h"Uh(}r[(h*]h+]h,]h-]h/]uh#j=h]r\hM)r]}r^(h"X%Tile minlat, minlong, maxlat, maxLongr_h#jYh$h%h&hPh(}r`(h*]h+]h,]h-]h/]uh1K8h]rah;X%Tile minlat, minlong, maxlat, maxLongrbrc}rd(h"j_h#j]ubaubah&hubeh&hubah&hubh)re}rf(h"Uh(}rg(h*]h+]h,]h-]h/]uh#j,h]rh(h)ri}rj(h"Uh(}rk(h*]h+]h,]h-]h/]uh#jeh]rl(h)rm}rn(h"Uh(}ro(h*]h+]h,]h-]h/]uh#jih]rphM)rq}rr(h"X9h#jmh$h%h&hPh(}rs(h*]h+]h,]h-]h/]uh1K:h]rth;X9ru}rv(h"X9h#jqubaubah&hubh)rw}rx(h"Uh(}ry(h*]h+]h,]h-]h/]uh#jih]rzhM)r{}r|(h"X 22.5, -112.5r}h#jwh$h%h&hPh(}r~(h*]h+]h,]h-]h/]uh1K:h]rh;X 22.5, -112.5rr}r(h"j}h#j{ubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jih]rhM)r}r(h"X0, -135, 45, -90rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K:h]rh;X0, -135, 45, -90rr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jeh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X9qrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K;h]rh;X9qrr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X36.5625, -118.125rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K;h]rh;X36.5625, -118.125rr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X33.75, -123.75, 39.375, -112.5rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K;h]rh;X33.75, -123.75, 39.375, -112.5rr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jeh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X9q4rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh]rh;X9q4gurr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X34.43115, -119.68505rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1K>h]rh;X34.43115, -119.68505r r!}r"(h"jh#jubaubah&hubh)r#}r$(h"Uh(}r%(h*]h+]h,]h-]h/]uh#jh]r&hM)r'}r((h"X*34.40917, -119.70703, 34.45312, -119.66308r)h#j#h$h%h&hPh(}r*(h*]h+]h,]h-]h/]uh1K>h]r+h;X*34.40917, -119.70703, 34.45312, -119.66308r,r-}r.(h"j)h#j'ubaubah&hubeh&hubh)r/}r0(h"Uh(}r1(h*]h+]h,]h-]h/]uh#jeh]r2(h)r3}r4(h"Uh(}r5(h*]h+]h,]h-]h/]uh#j/h]r6hM)r7}r8(h"X9q4gu1r9h#j3h$h%h&hPh(}r:(h*]h+]h,]h-]h/]uh1K?h]r;h;X9q4gu1r<r=}r>(h"j9h#j7ubaubah&hubh)r?}r@(h"Uh(}rA(h*]h+]h,]h-]h/]uh#j/h]rBhM)rC}rD(h"X34.41741, -119.70153rEh#j?h$h%h&hPh(}rF(h*]h+]h,]h-]h/]uh1K?h]rGh;X34.41741, -119.70153rHrI}rJ(h"jEh#jCubaubah&hubh)rK}rL(h"Uh(}rM(h*]h+]h,]h-]h/]uh#j/h]rNhM)rO}rP(h"X*34.41467, -119.70703, 34.42016, -119.69604rQh#jKh$h%h&hPh(}rR(h*]h+]h,]h-]h/]uh1K?h]rSh;X*34.41467, -119.70703, 34.42016, -119.69604rTrU}rV(h"jQh#jOubaubah&hubeh&hubh)rW}rX(h"Uh(}rY(h*]h+]h,]h-]h/]uh#jeh]rZ(h)r[}r\(h"Uh(}r](h*]h+]h,]h-]h/]uh#jWh]r^hM)r_}r`(h"X9q4gu1yrah#j[h$h%h&hPh(}rb(h*]h+]h,]h-]h/]uh1K@h]rch;X9q4gu1yrdre}rf(h"jah#j_ubaubah&hubh)rg}rh(h"Uh(}ri(h*]h+]h,]h-]h/]uh#jWh]rjhM)rk}rl(h"X34.41947, -119.69810rmh#jgh$h%h&hPh(}rn(h*]h+]h,]h-]h/]uh1K@h]roh;X34.41947, -119.69810rprq}rr(h"jmh#jkubaubah&hubh)rs}rt(h"Uh(}ru(h*]h+]h,]h-]h/]uh#jWh]rvhM)rw}rx(h"X*34.41879, -119.69879, 34.42016, -119.69741ryh#jsh$h%h&hPh(}rz(h*]h+]h,]h-]h/]uh1K@h]r{h;X*34.41879, -119.69879, 34.42016, -119.69741r|r}}r~(h"jyh#jwubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jeh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X9q4gu1y4rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KAh]rh;X9q4gu1y4rr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X34.41922, -119.69861rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KAh]rh;X34.41922, -119.69861rr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X*34.41913, -119.69879, 34.41930, -119.69844rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KAh]rh;X*34.41913, -119.69879, 34.41930, -119.69844rr}r(h"jh#jubaubah&hubeh&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jeh]r(h)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X 9q4gu1y4zrh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KBh]rh;X 9q4gu1y4zrr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X34.41928, -119.69846rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KBh]rh;X34.41928, -119.69846rr}r(h"jh#jubaubah&hubh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]rhM)r}r(h"X*34.41926, -119.69849, 34.41930, -119.69844rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KBh]rh;X*34.41926, -119.69849, 34.41930, -119.69844rr}r(h"jh#jubaubah&hubeh&hubeh&j ubeh&j ubeubhM)r}r(h"XGeohashes comprise a nested spatial indexing system with each level of geohashes tile containing 32 tiles of the next smaller tile size. The level one geohashes (length=1) divide the earth into 32 tiles. Each of these 32 tiles is then subdivided into 32 level 2 tiles and so on.rh#h?h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KEh2hh]rh;XGeohashes comprise a nested spatial indexing system with each level of geohashes tile containing 32 tiles of the next smaller tile size. The level one geohashes (length=1) divide the earth into 32 tiles. Each of these 32 tiles is then subdivided into 32 level 2 tiles and so on.rr}r(h"jh#jubaubhM)r}r(h"XGeohashes also have the property that all smaller tiles within the enclosing geohash tile begin with the same leading characters, therefor for the level 1 tile '9', all level 2 sub-tiles begin with '9': '90', '91', '93',..., '9z'.rh#h?h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KJh2hh]rh;XGeohashes also have the property that all smaller tiles within the enclosing geohash tile begin with the same leading characters, therefor for the level 1 tile '9', all level 2 sub-tiles begin with '9': '90', '91', '93',..., '9z'.rr}r(h"jh#jubaubhM)r}r(h"XFor example the level 3 geohash tile that encloses much of Santa Barbara County is '9q4'. Also contained in this bounding rectangle is the city center of Santa Maria (geohash 9q4qg7j2hmdz), Goleta (geohash 9q4gckb5jxu7) and Santa Barbara (geohash 9q4gu4n7y5b7) all of which begin with the characters '9q4' and fall within the '9q4' geohash rectangle. This property is very useful for searching and sorting datastores that contain geohashes.rh#h?h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KNh2hh]rh;XFor example the level 3 geohash tile that encloses much of Santa Barbara County is '9q4'. Also contained in this bounding rectangle is the city center of Santa Maria (geohash 9q4qg7j2hmdz), Goleta (geohash 9q4gckb5jxu7) and Santa Barbara (geohash 9q4gu4n7y5b7) all of which begin with the characters '9q4' and fall within the '9q4' geohash rectangle. This property is very useful for searching and sorting datastores that contain geohashes.rr}r(h"jh#jubaubeubh)r}r(h"Uh#h h$h%h&h'h(}r(h*]h+]h,]h-]rhah/]rh auh1KWh2hh]r(h4)r}r(h"X"DataONE Search Index and Geohashesrh#jh$h%h&h8h(}r(h*]h+]h,]h-]h/]uh1KWh2hh]rh;X"DataONE Search Index and Geohashesrr}r(h"jh#jubaubhM)r}r(h"XThe DataONE search index contains geohashes that have been computed for each geographic coverage associated with a PID containing geographic coverage information, which currently includes metadata objects in EML and FGDC formats. The search index is described here: ``_. Each PID in the search index has a geohash computed at nine different resolutions, corresponding to the geohash lengths shown *Table 3*. The field names are appended with the geohash length, so for example the field *geohash_1* has a string length of one and corresponds to the largest tile size in *Table 1*. Geohashes are added to the search index at different lengths to allow for searching and plotting at different resolutions.h#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1KYh2hh]r(h;X The DataONE search index contains geohashes that have been computed for each geographic coverage associated with a PID containing geographic coverage information, which currently includes metadata objects in EML and FGDC formats. The search index is described here: rr}r(h"X The DataONE search index contains geohashes that have been computed for each geographic coverage associated with a PID containing geographic coverage information, which currently includes metadata objects in EML and FGDC formats. The search index is described here: h#jubcdocutils.nodes reference r)r}r(h"X``_h(}r(UnameXSearchMetadata.htmlrUrefurirjh-]h,]h*]h+]h/]uh#jh]rh;XSearchMetadata.htmlrr}r(h"Uh#jubah&U referencerubcdocutils.nodes target r)r}r (h"XU referencedr Kh#jh&Utargetr h(}r (Urefurijh-]r hah,]h*]h+]h/]rh auh]ubh;X. Each PID in the search index has a geohash computed at nine different resolutions, corresponding to the geohash lengths shown rr}r(h"X. Each PID in the search index has a geohash computed at nine different resolutions, corresponding to the geohash lengths shown h#jubhV)r}r(h"X *Table 3*h(}r(h*]h+]h,]h-]h/]uh#jh]rh;XTable 3rr}r(h"Uh#jubah&h^ubh;XQ. The field names are appended with the geohash length, so for example the field rr}r(h"XQ. The field names are appended with the geohash length, so for example the field h#jubhV)r}r(h"X *geohash_1*h(}r(h*]h+]h,]h-]h/]uh#jh]rh;X geohash_1r r!}r"(h"Uh#jubah&h^ubh;XH has a string length of one and corresponds to the largest tile size in r#r$}r%(h"XH has a string length of one and corresponds to the largest tile size in h#jubhV)r&}r'(h"X *Table 1*h(}r((h*]h+]h,]h-]h/]uh#jh]r)h;XTable 1r*r+}r,(h"Uh#j&ubah&h^ubh;X|. Geohashes are added to the search index at different lengths to allow for searching and plotting at different resolutions.r-r.}r/(h"X|. Geohashes are added to the search index at different lengths to allow for searching and plotting at different resolutions.h#jubeubhM)r0}r1(h"XFor EML documents, the geohashes are computed by determining the centroid of the XML elements *northBoundingCoordinate, southBoundingCoordinatem, eastBoundingCoordinate, westBoundingCoordinate* which are child element of *//dataset/coverage/geographicCoverage/boundingCoordinates*. Because any number of coverages may be defined with the EML format, the geohashes for these coverages are stored in a Solr multi-valued field. EML allows for the four bounding coordinates to specify a single coordinate (i.e. westBoudingCoordinate=eastBoundingCoordinate and northBoundingCoordinate=southBoundingCoordinate), in which case this location is used to compute a geohash.h#jh$h%h&hPh(}r2(h*]h+]h,]h-]h/]uh1Kdh2hh]r3(h;X^For EML documents, the geohashes are computed by determining the centroid of the XML elements r4r5}r6(h"X^For EML documents, the geohashes are computed by determining the centroid of the XML elements h#j0ubhV)r7}r8(h"Xc*northBoundingCoordinate, southBoundingCoordinatem, eastBoundingCoordinate, westBoundingCoordinate*h(}r9(h*]h+]h,]h-]h/]uh#j0h]r:h;XanorthBoundingCoordinate, southBoundingCoordinatem, eastBoundingCoordinate, westBoundingCoordinater;r<}r=(h"Uh#j7ubah&h^ubh;X which are child element of r>r?}r@(h"X which are child element of h#j0ubhV)rA}rB(h"X;*//dataset/coverage/geographicCoverage/boundingCoordinates*h(}rC(h*]h+]h,]h-]h/]uh#j0h]rDh;X9//dataset/coverage/geographicCoverage/boundingCoordinatesrErF}rG(h"Uh#jAubah&h^ubh;X. Because any number of coverages may be defined with the EML format, the geohashes for these coverages are stored in a Solr multi-valued field. EML allows for the four bounding coordinates to specify a single coordinate (i.e. westBoudingCoordinate=eastBoundingCoordinate and northBoundingCoordinate=southBoundingCoordinate), in which case this location is used to compute a geohash.rHrI}rJ(h"X. Because any number of coverages may be defined with the EML format, the geohashes for these coverages are stored in a Solr multi-valued field. EML allows for the four bounding coordinates to specify a single coordinate (i.e. westBoudingCoordinate=eastBoundingCoordinate and northBoundingCoordinate=southBoundingCoordinate), in which case this location is used to compute a geohash.h#j0ubeubhM)rK}rL(h"XFor FGDC documents, the XML elements *northBoundingCoordinate, southBoundingCoordinate, eastBoundingCoordinate, westBoundingCoordinate* (parent element //metadata/idinfo/spdom/bounding) are used to compute the geohash using the same method as for EML.h#jh$h%h&hPh(}rM(h*]h+]h,]h-]h/]uh1Koh2hh]rN(h;X%For FGDC documents, the XML elements rOrP}rQ(h"X%For FGDC documents, the XML elements h#jKubhV)rR}rS(h"Xb*northBoundingCoordinate, southBoundingCoordinate, eastBoundingCoordinate, westBoundingCoordinate*h(}rT(h*]h+]h,]h-]h/]uh#jKh]rUh;X`northBoundingCoordinate, southBoundingCoordinate, eastBoundingCoordinate, westBoundingCoordinaterVrW}rX(h"Uh#jRubah&h^ubh;Xt (parent element //metadata/idinfo/spdom/bounding) are used to compute the geohash using the same method as for EML.rYrZ}r[(h"Xt (parent element //metadata/idinfo/spdom/bounding) are used to compute the geohash using the same method as for EML.h#jKubeubeubh)r\}r](h"Uh#h h$h%h&h'h(}r^(h*]h+]h,]h-]r_hah/]r`hauh1Kvh2hh]ra(h4)rb}rc(h"XUsing Geohashes for plottingrdh#j\h$h%h&h8h(}re(h*]h+]h,]h-]h/]uh1Kvh2hh]rfh;XUsing Geohashes for plottingrgrh}ri(h"jdh#jbubaubhM)rj}rk(h"X@Geohashes can be used to efficiently plot the location of the geographic coverages. The following examples show different search and plotting strategies that are possible using geohashes. Several public domain Javascript libraries are available for assisting in developing web clients that could use geohashes. For example, the Javascript library *node-geohash* (available at https://github.com/sunng87/node-geohash) contains routines to encode and decode geohashs in addition to other spatial operators using geohashes. This library will be used for the examples that follow.h#j\h$h%h&hPh(}rl(h*]h+]h,]h-]h/]uh1Kxh2hh]rm(h;X[Geohashes can be used to efficiently plot the location of the geographic coverages. The following examples show different search and plotting strategies that are possible using geohashes. Several public domain Javascript libraries are available for assisting in developing web clients that could use geohashes. For example, the Javascript library rnro}rp(h"X[Geohashes can be used to efficiently plot the location of the geographic coverages. The following examples show different search and plotting strategies that are possible using geohashes. Several public domain Javascript libraries are available for assisting in developing web clients that could use geohashes. For example, the Javascript library h#jjubhV)rq}rr(h"X*node-geohash*h(}rs(h*]h+]h,]h-]h/]uh#jjh]rth;X node-geohashrurv}rw(h"Uh#jqubah&h^ubh;X (available at rxry}rz(h"X (available at h#jjubj)r{}r|(h"X'https://github.com/sunng87/node-geohashr}h(}r~(Urefurij}h-]h,]h*]h+]h/]uh#jjh]rh;X'https://github.com/sunng87/node-geohashrr}r(h"Uh#j{ubah&jubh;X) contains routines to encode and decode geohashs in addition to other spatial operators using geohashes. This library will be used for the examples that follow.rr}r(h"X) contains routines to encode and decode geohashs in addition to other spatial operators using geohashes. This library will be used for the examples that follow.h#jjubeubhM)r}r(h"X8**Example: Retrieve geohashes as facets in Solr search**rh#j\h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh)r}r(h"jh(}r(h*]h+]h,]h-]h/]uh#jh]rh;X4Example: Retrieve geohashes as facets in Solr searchrr}r(h"Uh#jubah&hubaubhM)r}r(h"XLIn this example the Solr search index is queried for a particular field of interest, with the associated geohash counts being returned as a field facet. Used in this way, the facet field of geohashes becomes a spatial bin, with the size of the geographic area and the spatial resolution of the binning selected by the geohash level.rh#j\h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XLIn this example the Solr search index is queried for a particular field of interest, with the associated geohash counts being returned as a field facet. Used in this way, the facet field of geohashes becomes a spatial bin, with the size of the geographic area and the spatial resolution of the binning selected by the geohash level.rr}r(h"jh#jubaubhM)r}r(h"XFor example, if we are interested in plotting the location of PIDs that have some associated with kelp, we could query the search index with the Solr query:rh#j\h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XFor example, if we are interested in plotting the location of PIDs that have some associated with kelp, we could query the search index with the Solr query:rr}r(h"jh#jubaubcdocutils.nodes comment r)r}r(h"Uh#j\h$h%h&Ucommentrh(}r(U xml:spacerUpreserverh-]h,]h*]h+]h/]uh1Kh2hh]ubcdocutils.nodes block_quote r)r}r(h"Uh#j\h$h%h&U block_quoterh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rhM)r}r(h"Xghttps://cn.dataone.org/cn/v1/query/solr?q=kelp&facet=true&facet.field=geohash_5&facet.mincount=1&rows=0rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh]rj)r}r(h"jh(}r(Urefurijh-]h,]h*]h+]h/]uh#jh]rh;Xghttps://cn.dataone.org/cn/v1/query/solr?q=kelp&facet=true&facet.field=geohash_5&facet.mincount=1&rows=0rr}r(h"Uh#jubah&jubaubaubhM)r}r(h"XKThe portion of the response that we are interested in are the facet counts:rh#j\h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XKThe portion of the response that we are interested in are the facet counts:rr}r(h"jh#jubaubcdocutils.nodes literal_block r)r}r(h"X" 5 4 4 4 4 4 4 4 3 3 1 h#j\h$h%h&U literal_blockrh(}r(jjh-]h,]h*]h+]h/]uh1Kh2hh]rh;X" 5 4 4 4 4 4 4 4 3 3 1 rr}r(h"Uh#jubaubhM)r}r(h"XTo display these search results each geohash can be decoded to obtain the latitude, longitude of the geohash. For example, we can obtain the coordinates of the first geohash returned from the search as shown in the following code fragment:rh#j\h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XTo display these search results each geohash can be decoded to obtain the latitude, longitude of the geohash. For example, we can obtain the coordinates of the first geohash returned from the search as shown in the following code fragment:rr}r(h"jh#jubaubj)r}r(h"X// Use the node-geohash Javascript library var geohashLib= require('ngeohash'); // Return [minlat, minlon, maxlat, maxlon] of geohash tile var coords = geohashLib.decode("9q4qx");h#j\h$h%h&jh(}r(jjh-]h,]h*]h+]h/]uh1Kh2hh]rh;X// Use the node-geohash Javascript library var geohashLib= require('ngeohash'); // Return [minlat, minlon, maxlat, maxlon] of geohash tile var coords = geohashLib.decode("9q4qx");rr}r(h"Uh#jubaubhM)r}r(h"X>The variable *coords* now contains the latitude, longitude (coords.latitude, coords.logitude) of the decoded geohash, which is center point of the geohash tile, in this case for level 5 geohash tiles. We could then place a marker with counts at these coordinates to indicate how many hits occured in this geohash tile.h#j\h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]r(h;X The variable rr}r(h"X The variable h#jubhV)r}r(h"X*coords*h(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xcoordsrr}r(h"Uh#jubah&h^ubh;X) now contains the latitude, longitude (coords.latitude, coords.logitude) of the decoded geohash, which is center point of the geohash tile, in this case for level 5 geohash tiles. We could then place a marker with counts at these coordinates to indicate how many hits occured in this geohash tile.rr}r(h"X) now contains the latitude, longitude (coords.latitude, coords.logitude) of the decoded geohash, which is center point of the geohash tile, in this case for level 5 geohash tiles. We could then place a marker with counts at these coordinates to indicate how many hits occured in this geohash tile.h#jubeubhM)r}r(h"XCare must be taken in selecting the right geohash tile level for the Solr query, with the consideration of smaller geohash tiles providing more accurate spatial results, but returning a greater number of facet results as each greater resolution tile covers a smaller geographic area.rh#j\h$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XCare must be taken in selecting the right geohash tile level for the Solr query, with the consideration of smaller geohash tiles providing more accurate spatial results, but returning a greater number of facet results as each greater resolution tile covers a smaller geographic area.rr}r(h"jh#jubaubeubh)r}r(h"Uh#h h$h%h&h'h(}r(h*]h+]h,]h-]rhah/]rhauh1Kh2hh]r(h4)r}r(h"XUsing Geohashes for searchingrh#jh$h%h&h8h(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XUsing Geohashes for searchingrr}r(h"jh#jubaubhM)r}r(h"XGeohashes in the search index are multi-valued, so that geohashes have been computed for each geographic coverage for a PID. Since the geohashes are indexed at different resolutions, you can search all coverages at different spatial resolutions.rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XGeohashes in the search index are multi-valued, so that geohashes have been computed for each geographic coverage for a PID. Since the geohashes are indexed at different resolutions, you can search all coverages at different spatial resolutions.rr}r (h"jh#jubaubhM)r }r (h"X(**Example: Search using a bounding box**r h#jh$h%h&hPh(}r (h*]h+]h,]h-]h/]uh1Kh2hh]rh)r}r(h"j h(}r(h*]h+]h,]h-]h/]uh#j h]rh;X$Example: Search using a bounding boxrr}r(h"Uh#jubah&hubaubhM)r}r(h"XOne appraach to using geohashes for search is to retrieve all PIDs with geohashes that overlap a search box. First determine which geohashes overlap a bounding rectangle, in this case the bounding rectangle that encompasses Santa Cruz Island in the Santa Barbara Channel:rh#jh$h%h&hPh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;XOne appraach to using geohashes for search is to retrieve all PIDs with geohashes that overlap a search box. First determine which geohashes overlap a bounding rectangle, in this case the bounding rectangle that encompasses Santa Cruz Island in the Santa Barbara Channel:rr}r(h"jh#jubaubj)r}r(h"X"// Use the node-geohash Javascript library var geohashLib= require('ngeohash'); // Search for all geohashes within a geographic bounding box // which might be the current browser viewport or alternatively a // region of interest // Santa Cruz Island bounding coordinates (approximate) // lower left minlat = 33.959878; minlon = -119.914398; // upper right maxlat = 34.075341; maxlon = -119.520264; // Find all geohashes that overlap the specified bounding box. var geohashes = geohashLib.bboxes (minlat, minlon, maxlat, maxlon, precision=4);h#jh$h%h&jh(}r (jjh-]h,]h*]h+]h/]uh1Kh2hh]r!h;X"// Use the node-geohash Javascript library var geohashLib= require('ngeohash'); // Search for all geohashes within a geographic bounding box // which might be the current browser viewport or alternatively a // region of interest // Santa Cruz Island bounding coordinates (approximate) // lower left minlat = 33.959878; minlon = -119.914398; // upper right maxlat = 34.075341; maxlon = -119.520264; // Find all geohashes that overlap the specified bounding box. var geohashes = geohashLib.bboxes (minlat, minlon, maxlat, maxlon, precision=4);r"r#}r$(h"Uh#jubaubhM)r%}r&(h"XThe geohashes that overlap the search bounding box are returned. These geohashes can then be used to find PIDs that have a coverage that is within these geohash tiles:r'h#jh$h%h&hPh(}r((h*]h+]h,]h-]h/]uh1Kh2hh]r)h;XThe geohashes that overlap the search bounding box are returned. These geohashes can then be used to find PIDs that have a coverage that is within these geohash tiles:r*r+}r,(h"j'h#j%ubaubj)r-}r.(h"XYhttps://cn.dataone.org/cn/v1/query/solr?q=*:*&q.op=OR&fq=geohash_4:(9q4c 9q49 9q51)&fl=idh#jh$h%h&jh(}r/(jjh-]h,]h*]h+]h/]uh1Kh2hh]r0h;XYhttps://cn.dataone.org/cn/v1/query/solr?q=*:*&q.op=OR&fq=geohash_4:(9q4c 9q49 9q51)&fl=idr1r2}r3(h"Uh#j-ubaubhM)r4}r5(h"XThis Solr filter query will find all entries for which one of the level 4 geohashes matches any of the specified geohashes. Because the geohash_* fields are indexed as Solr multivalued fields, all coverages for a PID are compared to see if they match.r6h#jh$h%h&hPh(}r7(h*]h+]h,]h-]h/]uh1Kh2hh]r8h;XThis Solr filter query will find all entries for which one of the level 4 geohashes matches any of the specified geohashes. Because the geohash_* fields are indexed as Solr multivalued fields, all coverages for a PID are compared to see if they match.r9r:}r;(h"j6h#j4ubaubeubh)r<}r=(h"Uh#h h$h%h&h'h(}r>(h*]h+]h,]h-]r?hah/]r@h auh1Kh2hh]rA(h4)rB}rC(h"XGeohash algorithmrDh#j<h$h%h&h8h(}rE(h*]h+]h,]h-]h/]uh1Kh2hh]rFh;XGeohash algorithmrGrH}rI(h"jDh#jBubaubhM)rJ}rK(h"XA description of the geohash algorith is outside the scope of this document, but an excellent description of the can be found at http://en.wikipedia.org/wiki/Geohash.h#j<h$h%h&hPh(}rL(h*]h+]h,]h-]h/]uh1Kh2hh]rM(h;XA description of the geohash algorith is outside the scope of this document, but an excellent description of the can be found at rNrO}rP(h"XA description of the geohash algorith is outside the scope of this document, but an excellent description of the can be found at h#jJubj)rQ}rR(h"X$http://en.wikipedia.org/wiki/GeohashrSh(}rT(UrefurijSh-]h,]h*]h+]h/]uh#jJh]rUh;X$http://en.wikipedia.org/wiki/GeohashrVrW}rX(h"Uh#jQubah&jubh;X.rY}rZ(h"X.h#jJubeubhM)r[}r\(h"XOne caveat of the geohash algorith that may be of interest to end users however, is that because of the tile ordering ("Z" ordering) where tile geohashes are incremented in a "Z" pattern and not strictly by row, column, it is not gauranteed that adjancent tiles have similar geohashes, for example, the level 1 geohashes at the equator, starting from the International Date Line, are named "8", "9", "d", "e", "s", "t" and so on.r]h#j<h$h%h&hPh(}r^(h*]h+]h,]h-]h/]uh1Kh2hh]r_h;XOne caveat of the geohash algorith that may be of interest to end users however, is that because of the tile ordering ("Z" ordering) where tile geohashes are incremented in a "Z" pattern and not strictly by row, column, it is not gauranteed that adjancent tiles have similar geohashes, for example, the level 1 geohashes at the equator, starting from the International Date Line, are named "8", "9", "d", "e", "s", "t" and so on.r`ra}rb(h"j]h#j[ubaubeubeubah"UU transformerrcNU footnote_refsrd}reUrefnamesrf}rgUsymbol_footnotesrh]riUautofootnote_refsrj]rkUsymbol_footnote_refsrl]rmU citationsrn]roh2hU current_linerpNUtransform_messagesrq]rrUreporterrsNUid_startrtKU autofootnotesru]rvU citation_refsrw}rxUindirect_targetsry]rzUsettingsr{(cdocutils.frontend Values r|or}}r~(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttps://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrhU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh8NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh%Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrU https://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj<hh?jjhh{hjhjhjhj\hh uUsubstitution_namesr}rh&h2h(}r(h*]h-]h,]Usourceh%h+]h/]uU footnotesr]rUrefidsr}rub.