Skip to main content

kvadratnet

Kvadratnet is a set of tools that makes working with the Danish Kvadratnet easier.

Build Status Coverage Status

Introduction

The Danish Kvadratnet is a geographical tiling scheme based on UTM coordinates. The tiling scheme is a national standard for dividing nation-wide geographical datasets into smaller pieces.

The Danish Kvadratnet was originally created as a collaboration between Statistics Denmark and the National Survey and Cadastre of Denmark as a static administrative geographical subdivision of the country. The reasoning behind this was that usual administrative boundaries, such as municipal boundaries, are known to change from time to time and are therefore not very suitable as a geographical administrative index.

The Danish Kvadratnet consist of a several networks that covers the country with square tiles of varying sizes. Supported tile sizes are: 100m, 250m, 1km, 10km, 50km and 100km. Individual tiles are identified by tile size and the coordinates of the lower left corner of a tile. The coordinates are truncated accordinging to the size of the tile i.e. 1km_6452_523. Examples of tile identifiers can be seen in the table below:

Network

Tile name example

100km

100km_62_5

50km

50km_620_55

10km

10km_622_57

1km

1km_6223_576

250m

250m_622375_57550

100m

100m_62237_5756

Use of the kvadratnet module is not limited to the geographical area of Denmark. The tiling scheme can be applied to any region on earth as the UTM coordinate system is defined worlwide. Care has to be taken in case use of the tiling scheme spans more than one UTM zone, since coordinates are duplicated across zones. This can be solved by keeping all data in the same UTM zone, even though some of it might be placed outside the zone. By using robust UTM coordinate transformation libraries, such as the Extended Transverse Mercator implementation in proj.4, data can be kept in the same coordinate system even though it spans several UTM zones. This exact procedure is used by the Grenland Survey, Asiaq, which organizes data across 10 UTM zones.

Example

Example of using kvadratnet

Suppose you have a range of files organized in the 1km network. We want to count how many 1km tiles are present in each parent 10km tile.

from collections import Counter
import kvadratnet

files = ['dtm_1km_6121_867.tif', 'dtm_1km_6125_866.tif',
         'dtm_1km_6125_862.tif', 'dtm_1km_6423_512.tif',
         'dtm_1km_6253_234.tif', 'dtm_1km_6235_634.tif',
         'dtm_1km_6424_513.tif', 'dtm_lkm_5223_523.tif',
         'dtm_1km_6251_236.tif', 'dtm_1km_6424_517.tif']

counter = Counter()

for filename in files:
    try:
        name = kvadratnet.tile_name(filename)
    except:
        counter['bad_name'] += 1
    parent = kvadratnet.parent_tile(name, '10km')
    counter[parent] += 1

print(counter)
# Counter({'10km_642_51': 4, '10km_612_86': 3, '10km_625_23': 2, '10km_623_63': 1, 'bad_name': 1})

knet - command line interface

kvadratnet also has a command line interface called knet. The knet command is a front for various tools that make life managing files with kvadratnet naming a lot easier. For instance renaming many files:

# add a prefix before the cell identifier
$ knet rename --prefix PUNKTSKY_ "*.laz"

# strip anything but the cell identifier
$ knet rename PUNKTSKY*.laz

With knet organizing files in subfolders according to which parent tiles they belong to is easy:

# divide files into 100km and 10km folders
$ knet organize "1km*.tif" 100km 10km

Installation

Installation can be done either via

pip install kvadratnet

or by downloading the source code and running

python setup.py install

Testing

nose is used for testing. The test-suite can be invoked by running

nosetests -v

Metadata

Release files for kvadratnet 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for kvadratnet 0.3.0
File Interpreter ABI Platform
kvadratnet-0.3.0-py2.py3-none-any.whl Python 3, Python 2 none any Details
kvadratnet-0.3.0-py2.7.egg Legacy Egg format - - Details

Total release size: 26.8 kB

Release files / kvadratnet-0.3.0-py2.py3-none-any.whl

Download URL kvadratnet-0.3.0-py2.py3-none-any.whl
Size 11.8 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
bbe03107caa70af138a44b0c8ce81773b8f53a5da43a79be317923e6d9459994
BLAKE2b-256 checksum
How to use checksums
c054678d3124a81c3792d820122e937d3b444de25940535b75697918aa59c2d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / kvadratnet-0.3.0-py2.7.egg

Download URL kvadratnet-0.3.0-py2.7.egg
Size 15.0 kB
Tags Egg
SHA-256 checksum
How to use checksums
025a65137aa34a0943ac3059c45fd466dca03423bbf859cbc3a1711214a2f110
BLAKE2b-256 checksum
How to use checksums
a1669ae9f04c17ddb5a1ce8d189175ce3e0c1d5a2b5ab3f357e6958d72148dd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

3 release files

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page