36 lines
941 B
Python
36 lines
941 B
Python
"""$ fio distrib"""
|
|
|
|
import json
|
|
|
|
import click
|
|
import cligj
|
|
|
|
from fiona.fio import helpers, with_context_env
|
|
from fiona.model import ObjectEncoder
|
|
|
|
|
|
@click.command()
|
|
@cligj.use_rs_opt
|
|
@click.pass_context
|
|
@with_context_env
|
|
def distrib(ctx, use_rs):
|
|
"""Distribute features from a collection.
|
|
|
|
Print the features of GeoJSON objects read from stdin.
|
|
|
|
"""
|
|
stdin = click.get_text_stream('stdin')
|
|
source = helpers.obj_gen(stdin)
|
|
|
|
for i, obj in enumerate(source):
|
|
obj_id = obj.get("id", "collection:" + str(i))
|
|
features = obj.get("features") or [obj]
|
|
for j, feat in enumerate(features):
|
|
if obj.get("type") == "FeatureCollection":
|
|
feat["parent"] = obj_id
|
|
feat_id = feat.get("id", "feature:" + str(i))
|
|
feat["id"] = feat_id
|
|
if use_rs:
|
|
click.echo("\x1e", nl=False)
|
|
click.echo(json.dumps(feat, cls=ObjectEncoder))
|