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
from gatilegrid import GeoadminTileGridLV03 as GeoadminTileGrid
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)
>>> [496800.0, 247600.0, 509600.0, 260400.0]
print(gagrid.tileAddressTemplate)
>>> {zoom}/{tileCol}/{tileRow}
topLeftCorner = [xmin, ymax]
tileAddress = [tileCol, tileRow] = gagrid.tileAddress(zoom, topLeftCorner)
print(tileAddress)
>>> [6, 7]
# Get the parent tiles
parentZoom = 1
gagrid.getParentTiles(zoom, tileCol, tileRow, parentZoom)
>>> [[1, 0, 0]]
# 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
# Get the closest zoom for a given resolution
print(gagrid.getClosestZoom(245))
>>> 16
# Get the ceiling zoom for a given resolution
print(gagrid.getCeilingZoom(245))
>>> 17
# Generate tilesSpec
minZoom = 16
maxZoom = zoom
tilesSpecGenerator = gagrid.iterGrid(minZoom, maxZoom)
for i, t in enumerate(tilesSpecGenerator):
(tileBounds, zoom, tileCol, tileRow) = t
print(t)
if i == 1:
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
tilesSpecGeneratorExtent = gagridExtent.iterGrid(minZoom, maxZoom)
for i, t in enumerate(tilesSpecGeneratorExtent):
(tileBounds, zoom, tileCol, tileRow) = t
print(t)
if i = 1:
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)
>>> 146
print(row)
>>> 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 .venv/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)
===========
[![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
from gatilegrid import GeoadminTileGridLV03 as GeoadminTileGrid
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)
>>> [496800.0, 247600.0, 509600.0, 260400.0]
print(gagrid.tileAddressTemplate)
>>> {zoom}/{tileCol}/{tileRow}
topLeftCorner = [xmin, ymax]
tileAddress = [tileCol, tileRow] = gagrid.tileAddress(zoom, topLeftCorner)
print(tileAddress)
>>> [6, 7]
# Get the parent tiles
parentZoom = 1
gagrid.getParentTiles(zoom, tileCol, tileRow, parentZoom)
>>> [[1, 0, 0]]
# 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
# Get the closest zoom for a given resolution
print(gagrid.getClosestZoom(245))
>>> 16
# Get the ceiling zoom for a given resolution
print(gagrid.getCeilingZoom(245))
>>> 17
# Generate tilesSpec
minZoom = 16
maxZoom = zoom
tilesSpecGenerator = gagrid.iterGrid(minZoom, maxZoom)
for i, t in enumerate(tilesSpecGenerator):
(tileBounds, zoom, tileCol, tileRow) = t
print(t)
if i == 1:
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
tilesSpecGeneratorExtent = gagridExtent.iterGrid(minZoom, maxZoom)
for i, t in enumerate(tilesSpecGeneratorExtent):
(tileBounds, zoom, tileCol, tileRow) = t
print(t)
if i = 1:
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)
>>> 146
print(row)
>>> 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 .venv/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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gatilegrid-0.1.9.tar.gz
(9.8 kB
view hashes)
Built Distribution
gatilegrid-0.1.9-py2-none-any.whl
(10.9 kB
view hashes)
Close
Hashes for gatilegrid-0.1.9-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0e12f75ca041b89f1e4416334b205248558cce5555efb15c03e5fbd07f63e30 |
|
MD5 | eea2710aa39d782cb7fced9b6fadaa2e |
|
BLAKE2b-256 | e495f555f17b98141e6ea0664219201e30e237bf5ba90577b9854ced51ffe169 |