Skip to content

Stromij/tank

Repository files navigation

Tank

Apache License, Version 2.0 Build Status Docker Cloud Build Status

Visualization Focused Database

The tank stores geospatial data in a highly distributed way. Also building tiles benefits from fetching data using loads of queries from many database nodes.

application.kt contains the main module to start the server application.

Quick Start

The easiest way to get a tank instance including the Navigator UI and the Exhauster running is our docker-compose.yml file.

Docker Compose

  • Run docker-compose up.
  • UI should be reachable: http://localhost:8081/navigator/

Docker

  • Notice prerequisites
  • Run docker run --name tank -d -p 8888:8888 -e TANK_DB_HOSTS=cassandra --link cassandra ap3rture/tank:latest

Prerequisites

Run a Cassandra instance:
docker run --name cassandra -d -p 9042:9042 ap3rture/cassandra-lucene:latest
Connecting to DB is possible using the cqshl:
docker run -it --link cassandra --rm cassandra sh -c 'exec cqlsh "$CASSANDRA_PORT_9042_TCP_ADDR"'

REST API

GET / - Print Tank info message
GET /:uuid - Receive one specific feature in GeoJSON format DELETE /:uuid - Delete one specific feature POST /:layer? accepts GeoJSON features separated by line to import, geojson=true indicates to import a GeoJSON file, the layer parameter is not used at the current release
GET /tile/:z/:x/:y - Request a tile, put filter={"main_attr": "test"} to filter the main attribute
GET /heatmap/:z/:x/:y - Request a heatmap, will be served in vector tile format, the granularity can be configured on startup GET /static/index.html - Simple mapping interface for data exploration

Configuration

The configuration can be done using the application.conf HOCON file.

Most important are all setting regarding database keys and attributes to be stored. The tyler section describes which attributes are put into the served tile and which attribute is used for filtering upon request. The data section describes which attributes are stored using which type. If add_timestamp is set to true, a timestamp field has to be set (as it is by default). Then the database will store the current time and date in that particular field.

Adding -config=resources/application.conf can be used to specify another configuration file.

Deployment

For production environments see our provisioning scripts using Ansible and Terraform.

Hints

  • For now there are no additional indices build for doing queries on other field than geometry and the partition keys.
  • geometry is a reserved field. One is not allowed to use it as a attribute field in the configuration.
  • timestamp is a reserved field. One is not allowed to use it for other purposes than storing the current timestamp.
  • hash and uid are reserved fields to. These are the mandatory partition key fields

License

Tank is licensed under the Apache License, Version 2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

Distributed Geospatial Database focused on Visualization and Analysis

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published