Skip to main content

Click params for commmand line interfaces to GeoJSON

Project description

https://travis-ci.org/mapbox/cligj.svg https://coveralls.io/repos/mapbox/cligj/badge.png?branch=master

Common arguments and options for GeoJSON processing commands, using Click.

cligj is for Python developers who create command line interfaces for geospatial data. cligj allows you to quickly build consistent, well-tested and interoperable CLIs for handling GeoJSON.

Arguments

files_in_arg Multiple files

files_inout_arg Multiple files, last of which is an output file.

features_in_arg GeoJSON Features input which accepts multiple representations of GeoJSON features and returns the input data as an iterable of GeoJSON Feature-like dictionaries

Options

verbose_opt

quiet_opt

format_opt

JSON formatting options

indent_opt

compact_opt

Coordinate precision option

precision_opt

Geographic (default), projected, or Mercator switch

projection_geographic_opt

projection_projected_opt

projection_mercator_opt

Feature collection or feature sequence switch

sequence_opt

use_rs_opt

GeoJSON output mode option

geojson_type_collection_opt

geojson_type_feature_opt

def geojson_type_bbox_opt

Example

Here’s an example of a command that writes out GeoJSON features as a collection or, optionally, a sequence of individual features. Since most software that reads and writes GeoJSON expects a text containing a single feature collection, that’s the default, and a LF-delimited sequence of texts containing one GeoJSON feature each is a feature that is turned on using the --sequence option. To write sequences of feature texts that conform to the GeoJSON Text Sequences standard (and might contain pretty-printed JSON) with the ASCII Record Separator (0x1e) as a delimiter, use the --rs option

import click
import cligj
import json

def process_features(features):
    for feature in features:
        # TODO process feature here
        yield feature

@click.command()
@cligj.features_in_arg
@cligj.sequence_opt
@cligj.use_rs_opt
def pass_features(features, sequence, use_rs):
    if sequence:
        for feature in process_features(features):
            if use_rs:
                click.echo(u'\x1e', nl=False)
            click.echo(json.dumps(feature))
    else:
        click.echo(json.dumps(
            {'type': 'FeatureCollection',
             'features': list(process_features(features))}))

On the command line, the generated help text explains the usage

Usage: pass_features [OPTIONS] FEATURES...

Options:
--sequence / --no-sequence  Write a LF-delimited sequence of texts
                            containing individual objects or write a single
                            JSON text containing a feature collection object
                            (the default).
--rs / --no-rs              Use RS (0x1E) as a prefix for individual texts
                            in a sequence as per http://tools.ietf.org/html
                            /draft-ietf-json-text-sequence-13 (default is
                            False).
--help                      Show this message and exit.

And can be used like this

$ cat data.geojson
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]}

$ pass_features data.geojson
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]}

$ cat data.geojson | pass_features
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'id': '1'}, {'type': 'Feature', 'id': '2'}]}

$ cat data.geojson | pass_features --sequence
{'type': 'Feature', 'id': '1'}
{'type': 'Feature', 'id': '2'}

$ cat data.geojson | pass_features --sequence --rs
^^{'type': 'Feature', 'id': '1'}
^^{'type': 'Feature', 'id': '2'}

In this example, ^^ represents 0x1e.

Project details


Download files

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

Source Distribution

cligj-0.7.0.tar.gz (10.3 kB view details)

Uploaded Source

Built Distributions

cligj-0.7.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

cligj-0.7.0-py2-none-any.whl (7.1 kB view details)

Uploaded Python 2

File details

Details for the file cligj-0.7.0.tar.gz.

File metadata

  • Download URL: cligj-0.7.0.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.0 requests/2.24.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/2.7.15

File hashes

Hashes for cligj-0.7.0.tar.gz
Algorithm Hash digest
SHA256 2bf2042a81be581d707f726aef5efbbd935a62af85d5521305026dabeb798f5d
MD5 bc2f857efef4fe97800d1a6a49371e13
BLAKE2b-256 e24054e99109411c4d9e6bea449238babe9d83b6ffb3477888929379f371f704

See more details on using hashes here.

File details

Details for the file cligj-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: cligj-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.5.6

File hashes

Hashes for cligj-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 394a0905fe6f36821b82f086bf8cc12fef20d99d0a3c26a8a92a9207a18b70c6
MD5 49cc4bd22e3377ccfc0980f5acb04efb
BLAKE2b-256 ba06e3440b1f2dc802d35f329f299ba96153e9fcbfdef75e17f4b61f79430c6a

See more details on using hashes here.

File details

Details for the file cligj-0.7.0-py2-none-any.whl.

File metadata

  • Download URL: cligj-0.7.0-py2-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.0 requests/2.24.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/2.7.15

File hashes

Hashes for cligj-0.7.0-py2-none-any.whl
Algorithm Hash digest
SHA256 9881e3b71ff450a83412fadee026347ca15b99c623b9485593da4929cf884ca9
MD5 5e429d9061244a5dd51c5defa952c6d8
BLAKE2b-256 1e867e7435a6570db85e778b54d2c5e81af77d1a2e16f9e507e5fa5e67490cb2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page