Skip to content

emi420/geojson-stats

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

geojson-stats

Stats for GeoJSON data

(total / per property / per value)

  • Features count
  • Length for lines
  • Area for polygons

Quick start

Install

Directly from the main branch:

pip install geojson-stats

Usage

geojsonstats -f <GEOJSON FILE>

Help and options:

geojsonstats -h

Python

from geojson_stats.stats import Stats, Config

config = Config(
  clean = True,
  length = True,
  keys=["waterway"],
  value_keys=["waterway"]
)

stats = Stats(config)
stats.process_file("example/tkm_waterways.geojson")

print("Count:", stats.results.count)
stats.dump()

Example

Getting stats from Turkmenistan Waterways (OpenStreetMap Export) downloaded from HDX

geojsonstats -f example/tkm_waterways.geojson --keys waterway --value-keys waterway --length --verbose
{
  "count": 4447,
  "length": 23318.876036089594,
  "languages": {
    "list": [
      "name",
      "name:en",
      "name:tk"
    ],
    "count": 3
  },
  "key": {
    "waterway": {
      "count": 4447,
      "percent": 100.0,
      "length": 23318.876036089594,
      "value": {
        "canal": {
          "count": 2164,
          "length": 11890.79586499543
        },
        "drain": {
          "count": 370,
          "length": 636.8213551633588
        },
        "river": {
          "count": 435,
          "length": 8353.148822879351
        },
        "ditch": {
          "count": 1125,
          "length": 1251.067586054797
        },
        "wadi": {
          "count": 26,
          "length": 133.95910280981897
        },
        "stream": {
          "count": 281,
          "length": 982.3192418240153
        },
        "dam": {
          "count": 42,
          "length": 68.91994831893784
        },
        "weir": {
          "count": 2,
          "length": 0.03208190453249057
        },
        "derelict_canal": {
          "count": 2,
          "length": 1.812032139385983
        }
      }
    },
    "osm_id": {
      "count": 4447,
      "percent": 100.0
    },
    "osm_type": {
      "count": 4447,
      "percent": 100.0
    },
    "tunnel": {
      "count": 883,
      "percent": 19.86
    },
    "layer": {
      "count": 821,
      "percent": 18.46
    },
    "name": {
      "count": 535,
      "percent": 12.03
    },
    "name:en": {
      "count": 223,
      "percent": 5.01
    },
    "source": {
      "count": 173,
      "percent": 3.89
    },
    "name:tk": {
      "count": 99,
      "percent": 2.23
    },
    "width": {
      "count": 94,
      "percent": 2.11
    }
  }
}

HTML

You can also generate stats in HTML format, using a template.

For example:

geojsonstats -f example/tkm_waterways.geojson --keys waterway --value-keys waterway --length --html example/waterway_stats_tpl.html > stats.htm
Screenshot 2024-11-14 at 00 01 26

License

GNU Affero General Public License

(c) Emilio Mariscal 2024