geojson_d3

Crates.iogeojson_d3
lib.rsgeojson_d3
version0.2.3
sourcesrc
created_at2018-05-27 13:37:14.42569
updated_at2020-03-04 15:59:55.056106
descriptionProcess GeoJSON (Multi)Polygons for use with D3
homepage
repositoryhttps://github.com/urschrei/geojson_d3
max_upload_size
id67265
size7,256,252
Stephan Hügel (urschrei)

documentation

README

Linux / macOS Build Status Windows Build status Crates Link

GeoJSON_d3

Introduction

d3-geo uses spherical (as opposed to planar) polygons, and expects the rings of input polygons which are smaller than a hemisphere to be oriented in a different order than the GeoJSON RFC 7946 specification, which can lead to unexpected errors. This binary checks the spherical area of RFC 7946-compliant Polygons, converting them to d3-geo-compliant ring orientation if necessary, or vice-versa.

Installation

Install it using cargo install geojson_d3, or download a binary and put it on your $PATH.
This provides the geojson_d3 command.

Use

geojson_d3 takes one mandatory argument: a file containing valid GeoJSON. Polygon and / or MultiPolygon geometries can be included as a Feature, or a Geometry, or aFeatureCollection or GeometryCollection. You may mix geometries in a FeatureCollection or GeometryCollection.

You may also pass:

  • -p or --pretty, which will pretty-print the GeoJSON output

  • -s or --stats-only, which will output the number of labelled polygons, but will not output GeoJSON

  • -r or --reverse, which will reverse the functionality, producing geometries with rings wound correctly according to RFC 7946.

  • No assumptions are made concerning the existing winding order of Polygon rings:

    • By default, output will be in d3-geo-compliant winding order
    • If -r or --reverse are specified, output will be in RFC 7946 order
  • Processing of nested GeometryCollections is supported, but you shouldn't be using those

  • Empty geometries or collections will be left unaltered

  • Non-(Multi)Polygon geometries are left unaltered

  • All input properties are preserved

Progress

If you aren't piping the output of the command to a file, geojson_d3 will display progress of the parsing and processing steps in the terminal, as well as a final count of the processed (Multi)Polygons.

Validity

While the structure of the input GeoJSON is validated, individual geometries are not validated in the DE-9IM sense. If they self-intersect, have open rings etc., results are not guaranteed to be correct.

Speed

The included NYC Boroughs file (~69k Points) is processed in ~140 ms on a dual-core 1.8 GHz Intel Core i7.

Binaries

Pre-built binaries are available from releases. Binaries are available for:

  • macOS (x86_64)
  • Linux (x86_64)
  • Windows (x86_64 and i686)

License

MIT

Commit count: 31

cargo fmt