Merge branch 'master' into memoptz

This commit is contained in:
Josh Baker 2016-11-17 09:41:02 -07:00
commit 025a584903
10 changed files with 17 additions and 13 deletions

View File

@ -2,6 +2,10 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/). This project adheres to [Semantic Versioning](http://semver.org/).
## [1.5.4] - 2016-11-17
### Fixed
- #84: Hotfix - roaming fence deadlock
## [1.5.3] - 2016-11-16 ## [1.5.3] - 2016-11-16
### Added ### Added
- #4: Official docker support - #4: Official docker support

View File

@ -5,7 +5,7 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://travis-ci.org/tidwall/tile38"><img src="https://travis-ci.org/tidwall/tile38.svg?branch=master" alt="Build Status"></a> <a href="https://travis-ci.org/tidwall/tile38"><img src="https://travis-ci.org/tidwall/tile38.svg?branch=master" alt="Build Status"></a>
<a href="https://github.com/tidwall/tile38/releases"><img src="https://img.shields.io/badge/version-1.5.3-green.svg" alt="Version"></a> <a href="https://github.com/tidwall/tile38/releases"><img src="https://img.shields.io/badge/version-1.5.4-green.svg" alt="Version"></a>
</p> </p>
Tile38 is an open source (MIT licensed), in-memory geolocation data store, spatial index, and realtime geofence. It supports a variety of object types including lat/lon points, bounding boxes, XYZ tiles, Geohashes, and GeoJSON. Tile38 is an open source (MIT licensed), in-memory geolocation data store, spatial index, and realtime geofence. It supports a variety of object types including lat/lon points, bounding boxes, XYZ tiles, Geohashes, and GeoJSON.
@ -26,7 +26,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. - Spatial index with [search](#searching) methods such as Nearby, Within, and Intersects.
- Realtime [geofencing](#geofencing) through persistent sockets or [webhooks](http://tile38.com/commands/sethook). - Realtime [geofencing](#geofencing) through persistent sockets or [webhooks](http://tile38.com/commands/sethook).
- Object types of [lat/lon](#latlon-point), [bbox](#bounding-box), [Geohash](#geohash), [GeoJSON](#geojson), [QuadKey](#quadkey), and [XYZ tile](#xyz-tile). - Object types of [lat/lon](#latlon-point), [bbox](#bounding-box), [Geohash](#geohash), [GeoJSON](#geojson), [QuadKey](#quadkey), and [XYZ tile](#xyz-tile).
- Support for lots of [Clients Libraries](#client-libraries) written in many different langauges. - Support for lots of [Clients Libraries](#client-libraries) written in many different languages.
- Variety of protocols, including [http](#http) (curl), [websockets](#websockets), [telnet](#telnet), and the [Redis RESP](http://redis.io/topics/protocol). - Variety of protocols, including [http](#http) (curl), [websockets](#websockets), [telnet](#telnet), and the [Redis RESP](http://redis.io/topics/protocol).
- Server responses are [RESP](http://redis.io/topics/protocol) or [JSON](http://www.json.org). - Server responses are [RESP](http://redis.io/topics/protocol) or [JSON](http://www.json.org).
- Full [command line interface](#cli). - Full [command line interface](#cli).
@ -203,7 +203,7 @@ The `detect` may be one of the following values.
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. 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 #### 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. 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 auxiliary 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 # plain lat/lon
set fleet truck1 point 33.5123 -112.2693 225 # lat/lon with z member set fleet truck1 point 33.5123 -112.2693 225 # lat/lon with z member

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
set -e set -e
VERSION="1.5.3" VERSION="1.5.4"
PROTECTED_MODE="no" PROTECTED_MODE="no"
# Hardcode some values to the core package # Hardcode some values to the core package
@ -83,6 +83,8 @@ package(){
mv tile38-cli packages/$bdir mv tile38-cli packages/$bdir
fi fi
cp README.md packages/$bdir cp README.md packages/$bdir
cp CHANGELOG.md packages/$bdir
cp LICENSE packages/$bdir
cd packages cd packages
if [ "$2" == "linux" ]; then if [ "$2" == "linux" ]; then
tar -zcf $bdir.tar.gz $bdir tar -zcf $bdir.tar.gz $bdir

View File

@ -56,7 +56,7 @@ func main(){
}() }()
time.Sleep(time.Second / 2) // wait a moment time.Sleep(time.Second / 2) // wait a moment
// Retreive the point we just set. // Retrieve the point we just set.
go func() { go func() {
conn, err := pool.Get() // get a conn from the pool conn, err := pool.Get() // get a conn from the pool
if err != nil { if err != nil {
@ -71,4 +71,4 @@ func main(){
}() }()
time.Sleep(time.Second / 2) // wait a moment time.Sleep(time.Second / 2) // wait a moment
} }
``` ```:q

View File

@ -48,7 +48,7 @@ func TileXYToBounds(tileX, tileY int64, levelOfDetail uint64) (minLat, minLon, m
return return
} }
// QuadKeyToBounds convers a quadkey to bounds // QuadKeyToBounds converts a quadkey to bounds
func QuadKeyToBounds(quadkey string) (minLat, minLon, maxLat, maxLon float64, err error) { func QuadKeyToBounds(quadkey string) (minLat, minLon, maxLat, maxLon float64, err error) {
for i := 0; i < len(quadkey); i++ { for i := 0; i < len(quadkey); i++ {
switch quadkey[i] { switch quadkey[i] {

View File

@ -190,8 +190,6 @@ func fenceMatchObject(fence *liveFenceSwitches, obj geojson.Object) bool {
} }
func fenceMatchRoam(c *Controller, fence *liveFenceSwitches, tkey, tid string, obj geojson.Object) (keys, ids []string, meterss []float64) { func fenceMatchRoam(c *Controller, fence *liveFenceSwitches, tkey, tid string, obj geojson.Object) (keys, ids []string, meterss []float64) {
c.mu.RLock()
defer c.mu.RUnlock()
col := c.getCol(fence.roam.key) col := c.getCol(fence.roam.key)
if col == nil { if col == nil {
return return

View File

@ -1,6 +1,6 @@
FROM alpine:3.4 FROM alpine:3.4
ENV TILE38_VERSION 1.5.3 ENV TILE38_VERSION 1.5.4
ENV TILE38_DOWNLOAD_URL https://github.com/tidwall/tile38/releases/download/$TILE38_VERSION/tile38-$TILE38_VERSION-linux-amd64.tar.gz ENV TILE38_DOWNLOAD_URL https://github.com/tidwall/tile38/releases/download/$TILE38_VERSION/tile38-$TILE38_VERSION-linux-amd64.tar.gz
RUN addgroup -S tile38 && adduser -S -G tile38 tile38 RUN addgroup -S tile38 && adduser -S -G tile38 tile38

View File

@ -9,7 +9,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. - Spatial index with [search](#searching) methods such as Nearby, Within, and Intersects.
- Realtime [geofencing](#geofencing) through persistent sockets or [webhooks](http://tile38.com/commands/sethook). - Realtime [geofencing](#geofencing) through persistent sockets or [webhooks](http://tile38.com/commands/sethook).
- Object types of [lat/lon](#latlon-point), [bbox](#bounding-box), [Geohash](#geohash), [GeoJSON](#geojson), [QuadKey](#quadkey), and [XYZ tile](#xyz-tile). - Object types of [lat/lon](#latlon-point), [bbox](#bounding-box), [Geohash](#geohash), [GeoJSON](#geojson), [QuadKey](#quadkey), and [XYZ tile](#xyz-tile).
- Support for lots of [Clients Libraries](#client-libraries) written in many different langauges. - Support for lots of [Clients Libraries](#client-libraries) written in many different languages.
- Variety of protocols, including [http](#http) (curl), [websockets](#websockets), [telnet](#telnet), and the [Redis RESP](http://redis.io/topics/protocol). - Variety of protocols, including [http](#http) (curl), [websockets](#websockets), [telnet](#telnet), and the [Redis RESP](http://redis.io/topics/protocol).
- Server responses are [RESP](http://redis.io/topics/protocol) or [JSON](http://www.json.org). - Server responses are [RESP](http://redis.io/topics/protocol) or [JSON](http://www.json.org).
- Full [command line interface](#cli). - Full [command line interface](#cli).

View File

@ -77,7 +77,7 @@ type Object interface {
CalculatedPoint() Position CalculatedPoint() Position
// JSON is the json representation of the object. This might not be exactly the same as the original. // JSON is the json representation of the object. This might not be exactly the same as the original.
JSON() string JSON() string
// String returns a string represenation of the object. This may be JSON or something else. // String returns a string representation of the object. This may be JSON or something else.
String() string String() string
// PositionCount return the number of coordinates. // PositionCount return the number of coordinates.
PositionCount() int PositionCount() int

View File

@ -320,7 +320,7 @@ func d3disconnectBranch(node *d3nodeT, index int) {
} }
// Pick a branch. Pick the one that will need the smallest increase // Pick a branch. Pick the one that will need the smallest increase
// in area to accomodate the new rectangle. This will result in the // in area to accommodate the new rectangle. This will result in the
// least total area for the covering rectangles in the current node. // least total area for the covering rectangles in the current node.
// In case of a tie, pick the one which was smaller before, to get // In case of a tie, pick the one which was smaller before, to get
// the best resolution when searching. // the best resolution when searching.