d3-geo-compactness
A JavaScript library for computing the compactness of GeoJSON features. Measuring a map’s compactness can be a useful component in gerrymandering diagnostics, yet compactness alone is neither a necessary nor sufficient condition of a fair district map.
Installing
If you use NPM, npm install d3-geo-compactness
. Otherwise, download the latest release. AMD, CommonJS, and vanilla environments are supported. In vanilla, a d3 global is exported:
<script src="https://unpkg.com/d3-geo-compactness@0.1.3/dist/d3-geo-compactness.min.js"></script>
<script>
const compactness = d3.geoPolsbyPopper(GeoJSONObject);
</script>
API Reference
# d3.geoHullRatio(object) · Source
Returns the ratio of the area of the specified GeoJSON object to the area of its convex hull.
# d3.geoPolsbyPopper(object) · Source
Returns the Polsby-Popper score of the specified GeoJSON object. The Polsby-Popper test compares a district’s area to the area of a circle whose circumference is equal to the length of the district’s perimeter. A district’s Polsby-Popper score is the square of its Schwartzberg score.
# d3.geoReock(object) · Source
Returns the Reock score of the specified GeoJSON object. The Reock test compares a district’s area to the area of the smallest circle that encloses all of the district’s vertices.
# d3.geoSchwartzberg(object) · Source
Returns the Schwartzberg score of the specified GeoJSON object. The Schwartzberg test compares the length of the district’s perimeter to the circumference of a circle whose area is equal to the district’s area. A district’s Schwartzberg score is the square root of its Polsby-Popper score.
Utilities
# d3.geoEnclose(object) · Source
Returns a GeoJSON Polygon representing the minimum enclosing circle of the specified GeoJSON object, used for computing the Reock score of a district.
# d3.geoHull(object) · Source
Returns a GeoJSON Polygon representing the spherical convex hull of the specified GeoJSON object, used for computing the convex hull ratio of a district.