Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Popular tile grids and grids API for web mapping applications

Project Description
gatilegrid
===========

[![Build Status](https://travis-ci.org/geoadmin/lib-gatilegrid.svg?branch=master)](https://travis-ci.org/geoadmin/lib-gatilegrid)

## Geoadmin custom tile grid for web mapping applications

gatilegrid is compatible with python 2.7 and 3.5

## Installation

```bash
$ pip install gatilegrid
```

### Usage

Several tile grids are supported, namely 21781, 2056, 3857 and 4326. Here is an exemple using 21781.
For 4326, an additional parameter is available (`tmsCompatible=True`).


```python
from gatilegrid import getTileGrid

zoom = 18
tileCol = 6
tileRow = 7

# Get and initialize the grid (top-left and bottom-left are availble)
gagrid = getTileGrid(21781)(originCorner='top-left')
# With extent constraint
offset = 100000
gagridExtent = GeoadminTileGrid(extent=[gagrid.MINX + offset, gagrid.MINY + offset,
gagrid.MAXX - offset, gagrid.MAXY - offset])

bounds = [xmin, ymin, xmax, ymax] = gagrid.tileBounds(zoom, tileCol, tileRow)
print bounds
print gagrid.tileAddressTemplate
>>> [496800.0, 247600.0, 509600.0, 260400.0]
>>> {zoom}/{tileCol}/{tileRow}

topLeftCorner = [xmin, ymax]
tileAddress = [tileCol, tileRow] = gagrid.tileAddress(zoom, topLeftCorner)
print tileAddress
>>> [7, 6]

# It also works if the point is within the tile
pointInTile = [topLeftCorner[0] + 200.0, topLeftCorner[1] - 200.0]
print gagrid.tileAddress(zoom, pointInTile)
>>> [7, 6]

# Resolution in meters
print gagrid.getResolution(zoom)
>>> 50.0

# Scale dpi dependent (defaults to 96)
print gagrid.getScale(zoom, dpi=96.0)
>>> 188976.0

# Tile size in meters
print gagrid.tileSize(zoom)
>>> 12800.0

# Number of tiles at zoom
print gagrid.numberOfTilesAtZoom(zoom)
>>> 950
# Extent dependent
print gagridExtent.numberOfTilesAtZoom(zoom)
>>> 253

# Generate tilesSpec
counter = 0
minZoom = 16
maxZoom = zoom
tilesSpecGenerator = gagrid.iterGrid(minZoom, maxZoom)
for t in tilesSpecGenerator:
(tileBounds, zoom, tileCol, tileRow) = t
print t
counter += 1
if counter == 2:
break
>>> ([420000.0, 286000.0, 484000.0, 350000.0], 16, 0, 0)
>>> ([484000.0, 286000.0, 548000.0, 350000.0], 16, 1, 0)
# Extent dependent
counter = 0
tilesSpecGeneratorExtent = gagridExtent.iterGrid(minZoom, maxZoom)
for t in tilesSpecGeneratorExtent:
(tileBounds, zoom, tileCol, tileRow) = t
print t
counter += 1
if counter == 2:
break
>>> ([484000.0, 222000.0, 548000.0, 286000.0], 16, 1, 1)
>>> ([548000.0, 222000.0, 612000.0, 286000.0], 16, 2, 1)

```

This module also provides a simple grid API for grid cells addressing.

```python
from gatilegrid import Grid

extent = [485349.96, 75250.055, 833849.959, 295950.054]
resolutionX = 100.0
resolutionY = -100.0
grid = Grid(extent, resolutionX, resolutionY)

# We use singed resolution to define the origin.
# Here the origin is at the top-left corner.
print grid.origin
>>> [485349.96, 295950.054]

# The Grid class defines a series of useful properties
print grid.cellArea
>>> 10000.0
print grid.nbCellsX
>>> 3485
print grid.nbCellsY
>>> 2207
print grid.isTopLeft
>>> True
print grid.isBottomRight
>>> False

[col, row] = grid.cellAddressFromPointCoordinate([500000, 100000])
print col
print row
>>> 146
>>> 1959

# Get the extent of the cell using its address
cellExtent = grid.cellExtent(col, row)
print cellExtent
>>> [499949.96, 99950.054, 500049.96, 100050.054]

# Get an address range using an extent
[minCol, minRow, maxCol, maxRow] = grid.getExtentAddress([500000, 100000, 550000, 150000])
print minCol
>>> 146
print minRow
>>> 1459
print maxCol
>>> 646
print maxRow
>>> 1959
```

### Tests

```
source env/bin/activate
python setup.py test

```

### Upload module

Make sure your libs are up to date.

```
pip install wheel twine setuptools --upgrade
python setup.py sdist upload -r pypitest
python setup.py sdist upload -r pypi
python setup.py bdist_wheel upload -r pypitest
python setup.py bdist_wheel upload -r pypi
```

#### CONTRIBUTORS:

- [Loïc Gasser](https://github.com/loicgasser)
Release History

Release History

This version
History Node

0.1.4

History Node

0.1.3

History Node

0.1.2

History Node

0.1.1

History Node

0.1.0

History Node

0.0.9

History Node

0.0.7

History Node

0.0.6

History Node

0.0.5

History Node

0.0.4

History Node

0.0.3

History Node

0.0.2

History Node

0.0.1

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
gatilegrid-0.1.4-py2-none-any.whl (9.6 kB) Copy SHA256 Checksum SHA256 2.7 Wheel Aug 29, 2017
gatilegrid-0.1.4.tar.gz (7.6 kB) Copy SHA256 Checksum SHA256 Source Aug 29, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting