<geo2code $lat $lon [$radius]>
geo2code is a deprecated function. Use the SQL
where possible instead.
geo2code function encodes each latitude/longitude
coordinate given into one integer. This number can be indexed and
used with a special variant of Texis'
between operator for
bounded-box searches of a geographical region. The
$lon and optional
$radius parameters are integers in the
form $DDDMMSS$ (DMS "degrees minutes seconds" format), with negative
numbers representing south latitudes and east longitudes respectively
(note that longitude signs are the opposite of ISO 6709, which is
Valid values for
$lat are -90 to 90 degrees inclusive
(i.e. -900000 to 900000). Valid values for
$lon are -360 to 360
degrees inclusive. A
$lon value less than -180 degrees will
have 360 degrees added to it, and a
$lon value greater than 180
degrees will have 360 degrees subtracted from it. This allows
longitude values to continue to increase or decrease when crossing the
International Dateline, and thus avoid a non-linear "step function".
$lon values will return -1. These
changes were added in version 5.01.1193955804 20071101.
By using this encoding method and a special variant of the
between operator, only one field need be indexed and searched,
instead of both latitude and longitude separately, which can be
time-consuming at search. The encoded position can be decoded back to
latitude/longitude with the
If the optional
$radius parameter is given, then a pair of
numbers is returned for each coordinate. The pair represents the
encoding for the NW and SE corners of a box that is twice the
$radius in length on a side, with the given coordinate at the
center. The pair is returned as a comma-separated parenthetical
string. The result can thus be directly inserted into a SQL statement
to search the geographical region within
$radius $DDDMMSS$ of
the given coordinate (DMS "degrees minutes seconds" format). Where
latlon2geocodearea() SQL function is preferred
however, as it returns a true parameter, not SQL statement fragment.
geo2code returns a
long integer for each
latitude/longitude coordinate pair given, for a BETWEEN(aaa,
bbb) GIS search. If a
$radius argument is given,
geo2code returns a comma-separated parenthetical pair of
numbers instead, for the bounding box that contains a circle of that
radius centered on the point. All arguments are Texis/Vortex
$DDDMMSS$ integers (DMS "degrees minutes seconds" format,
In this example, latitude/longitude positions for cities were encoded with
geo2code into the
GeoCode field of a table.
$longitude are passed to this function
(e.g. from a form) and used to search for cities in a boxed geographic
region centered on the given coordinate:
Cities within the region:
<geo2code $latitude $longitude 20000> <!-- +/- 2 degrees -->
<SQL "select Name from city where GeoCode between " $ret>
geo2code function was added in version 2.1.904800000 19980902.
The returned value in
platform-dependent in format and accuracy; it should not be copied
across platforms. On 32-bit-
long platforms it is accurate to
32 seconds (about half a mile). On 64-bit-
long platforms it is
accurate to 1 second (about 100 feet or less).
between operator used here should have a regular (B-tree)
index on the encoded (left-side) field, and use the parenthetical syntax.
A search without parentheses (e.g. "
between $x and $y" loses
the special interpretation of the values and will not work correctly
Note that the Texis SQL functions
default to east-positive longitudes, not west-positive as Vortex
<code2geo> Vortex function,
latlong2geocodearea() SQL functions