From 0ccac574f40455ada5ebedcfcf2df7a616ee43e2 Mon Sep 17 00:00:00 2001 From: Josh Baker Date: Sat, 5 Mar 2016 17:51:16 -0700 Subject: [PATCH] information about object types --- README.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/README.md b/README.md index 07825843..ac171c6b 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Tile38 is an open source (MIT licensed), in-memory geolocation data store, spati - Spatial index with [search](#searching) methods such as Nearby, Within, and Intersects. - Realtime [geofencing](#geofencing). - Variety of client protocols, including [http](#http) (curl), [websockets](#websockets), [telnet](#telnet), and a [native interface](#native-interface). +- Multiple object types including [lat/lon point](#latlon-point), [bounding box](#bounding-box), [Geohash](#geohash), [GeoJSON](#geojson), [QuadKey](#quadkey), and [XYZ tile](#xyz-tile). - Server responses are in json. - Full [command line interface](#cli). - Leader / follower [replication](#replication). @@ -160,6 +161,50 @@ The `detect` may be `enter | exit | cross`. - `exit` is when an object that **was** previously in the fence has exited the area. - `cross` is when an object that **was not** previously in the fence has entered and exited the area. +## Object types + +All object types except for XYZ Tiles and QuadKeys can be stored in a collection. XYZ Tiles and QuadKeys are reserved for the SEARCH keyword only. + +### Lat/lon point +The most basic object type is a point that is composed of a latitude and a longitude. There is an optional `z` member that may be used for auxilary data such as elevation or a timestamp. +``` +set fleet truck1 point 33.5123 -112.2693 # plain lat/lon +set fleet truck1 point 33.5123 -112.2693 225 # lat/lon with z member +``` + +### Bounding box +A bounding box consists of two points. The first being the southwestern most point and the second is the northeastern most point. +``` +set fleet truck1 bounds 30 -110 40 -100 +``` +### Geohash +A [geohash](https://en.wikipedia.org/wiki/Geohash) is a string respresentation of a point. With the length of the string indicating the precision of the point. +``` +set fleet truck1 hash 9tbnthxzr # this would be equivlent to 'point 33.5123 -112.2693' +``` + +### GeoJSON +[GeoJSON](http://geojson.org/) is an industry standard format for representing a variety of object types including a point, multipoint, linestring, multilinestring, polygon, multipolygon, geometrycollection, feature, and featurecollection. Tile38 supports all of the standards with these exceptions. + +1. The `crs` member is not supported and will be ignored. The CRS84/WGS84 projection is assumed. +2. Any member that is not recognized (including `crs`) will be ignored. +3. All coordinates can be 2 or 3 axes. Less than 2 axes or more than 3 will result in a parsing error. + +* All ignored members will not persist. + +**Important to note that all coordinates are in Longitude, Latitude order.** + +``` +set city tempe object {"type":"Polygon","coordinates":[[[0,0],[10,10],[10,0],[0,0]]]} +``` + +### XYZ Tile +An XYZ tile is rectangle bounding area on earth that is represented by an X, Y coordinate and a Z (zoom) level. +Check out [maptiler.org](http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/) for an interactive example. + +### QuadKey Tile +A QuadKey used the same coordinate system as an XYZ tile except that the string representation is a string characters composed of 0, 1, 2, or 3. For a detailed explanation checkout [The Bing Maps Tile System](https://msdn.microsoft.com/en-us/library/bb259689.aspx). + ## Network protocols