summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2015-07-09 17:42:59 +0200
committerantirez <antirez@gmail.com>2015-07-09 17:42:59 +0200
commitb96af595a5fddbbdcbf78ed3c51acd60976416f4 (patch)
treea767acbc3bf2ce8dbf05003ae319532d8145ecd6
parent965abcf10a2e0453ddc88dd96782418ff1d587f9 (diff)
downloadredis-b96af595a5fddbbdcbf78ed3c51acd60976416f4.tar.gz
GEOENCODE / GEODECODE commands removed.
Rationale: 1. The commands look like internals exposed without a real strong use case. 2. Whatever there is an use case, the client would implement the commands client side instead of paying RTT just to use a simple to reimplement library. 3. They add complexity to an otherwise quite straightforward API. So for now KILLED ;-)
-rw-r--r--src/geo.c93
-rw-r--r--src/redis.c2
-rw-r--r--tests/unit/geo.tcl13
3 files changed, 0 insertions, 108 deletions
diff --git a/src/geo.c b/src/geo.c
index 35931f4f5..63500bed7 100644
--- a/src/geo.c
+++ b/src/geo.c
@@ -42,8 +42,6 @@ int zslValueLteMax(double value, zrangespec *spec);
* - geoadd - add coordinates for value to geoset
* - georadius - search radius by coordinates in geoset
* - georadiusbymember - search radius based on geoset member position
- * - geoencode - encode coordinates to a geohash integer
- * - geodecode - decode geohash integer to representative coordinates
* ==================================================================== */
/* ====================================================================
@@ -580,97 +578,6 @@ void georadiusByMemberCommand(redisClient *c) {
georadiusGeneric(c, RADIUS_MEMBER);
}
-/* GEODECODE score */
-void geodecodeCommand(redisClient *c) {
- GeoHashBits geohash;
- if (getLongLongFromObjectOrReply(c, c->argv[1], (long long *)&geohash.bits,
- NULL) != REDIS_OK)
- return;
-
- GeoHashArea area;
- geohash.step = GEO_STEP_MAX;
- geohashDecodeWGS84(geohash, &area);
-
- double lon = (area.longitude.min + area.longitude.max) / 2;
- double lat = (area.latitude.min + area.latitude.max) / 2;
-
- /* Returning three nested replies */
- addReplyMultiBulkLen(c, 3);
-
- /* First, the minimum corner */
- addReplyMultiBulkLen(c, 2);
- addReplyDouble(c, area.longitude.min);
- addReplyDouble(c, area.latitude.min);
-
- /* Next, the maximum corner */
- addReplyMultiBulkLen(c, 2);
- addReplyDouble(c, area.longitude.max);
- addReplyDouble(c, area.latitude.max);
-
- /* Last, the averaged center of this bounding box */
- addReplyMultiBulkLen(c, 2);
- addReplyDouble(c, lon);
- addReplyDouble(c, lat);
-}
-
-/* GEOENCODE long lat [radius unit] */
-void geoencodeCommand(redisClient *c) {
- double radius_meters = 0;
- if (c->argc == 5) {
- if ((radius_meters = extractDistanceOrReply(c, c->argv + 3, NULL)) < 0)
- return;
- } else if (c->argc == 4 || c->argc > 5) {
- addReplyError(c, "syntax error, try: GEOENCODE x y [radius unit]");
- return;
- }
-
- double xy[2];
- if (extractLongLatOrReply(c, c->argv + 1, xy) == REDIS_ERR) return;
-
- /* Encode long/lat into our geohash */
- GeoHashBits geohash;
- uint8_t step = geohashEstimateStepsByRadius(radius_meters,0);
- geohashEncodeWGS84(xy[0], xy[1], step, &geohash);
-
- /* Align the hash to a valid 52-bit integer based on step size */
- GeoHashFix52Bits bits = geohashAlign52Bits(geohash);
-
- /* Decode the hash so we can return its bounding box */
- GeoHashArea area;
- geohashDecodeWGS84(geohash, &area);
-
- double lon = (area.longitude.min + area.longitude.max) / 2;
- double lat = (area.latitude.min + area.latitude.max) / 2;
-
- /* Return four nested multibulk replies. */
- addReplyMultiBulkLen(c, 5);
-
- /* Return the binary geohash we calculated as 52-bit integer */
- addReplyLongLong(c, bits);
-
- /* Return the minimum corner */
- addReplyMultiBulkLen(c, 2);
- addReplyDouble(c, area.longitude.min);
- addReplyDouble(c, area.latitude.min);
-
- /* Return the maximum corner */
- addReplyMultiBulkLen(c, 2);
- addReplyDouble(c, area.longitude.max);
- addReplyDouble(c, area.latitude.max);
-
- /* Return the averaged center */
- addReplyMultiBulkLen(c, 2);
- addReplyDouble(c, lon);
- addReplyDouble(c, lat);
-
- /* Return the two scores to query to get the range from the sorted set. */
- GeoHashFix52Bits min, max;
- scoresOfGeoHashBox(geohash,&min,&max);
- addReplyMultiBulkLen(c, 2);
- addReplyDouble(c, min);
- addReplyDouble(c, max);
-}
-
/* GEOHASH key ele1 ele2 ... eleN
*
* Returns an array with an 11 characters geohash representation of the
diff --git a/src/redis.c b/src/redis.c
index cb5c73771..020264924 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -285,8 +285,6 @@ struct redisCommand redisCommandTable[] = {
{"geoadd",geoaddCommand,-5,"wm",0,NULL,1,1,1,0,0},
{"georadius",georadiusCommand,-6,"r",0,NULL,1,1,1,0,0},
{"georadiusbymember",georadiusByMemberCommand,-5,"r",0,NULL,1,1,1,0,0},
- {"geoencode",geoencodeCommand,-3,"r",0,NULL,0,0,0,0,0},
- {"geodecode",geodecodeCommand,2,"r",0,NULL,0,0,0,0,0},
{"geohash",geohashCommand,-2,"r",0,NULL,0,0,0,0,0},
{"geopos",geoposCommand,-2,"r",0,NULL,0,0,0,0,0},
{"geodist",geodistCommand,-4,"r",0,NULL,0,0,0,0,0},
diff --git a/tests/unit/geo.tcl b/tests/unit/geo.tcl
index cf6d8c614..1c6b90b63 100644
--- a/tests/unit/geo.tcl
+++ b/tests/unit/geo.tcl
@@ -72,19 +72,6 @@ start_server {tags {"geo"}} {
r georadiusbymember nyc "wtc one" 7 km withdist
} {{{wtc one} 0.0000} {{union square} 3.2544} {{central park n/q/r} 6.7000} {4545 6.1975} {{lic market} 6.8969}}
- test {GEOENCODE simple} {
- r geoencode 1.8063239 41.2358883
- } {3471579339700058 {1.8063229322433472 41.235888125243704}\
- {1.806328296661377 41.235890659964866}\
- {1.8063256144523621 41.235889392604285}\
- {3471579339700058 3471579339700059}}
-
- test {GEODECODE simple} {
- r geodecode 3471579339700058
- } {{1.8063229322433472 41.235888125243704}\
- {1.806328296661377 41.235890659964866}\
- {1.8063256144523621 41.235889392604285}}
-
test {GEOHASH is able to return geohash strings} {
# Example from Wikipedia.
r del points