From 90ca6ce9f86ce6cf640c8a7a950f8a3355696b65 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Mon, 19 May 2025 13:45:19 +0200 Subject: [PATCH] stats by cities --- js/irve_count_by_city_with_tags.geojson | 2457 +++++++++++++++++++++++ js/irve_totaux_par_ville.csv | 38 + package-lock.json | 2267 ++++++++++++++++++++- package.json | 4 +- villes_stats.js | 187 ++ 5 files changed, 4950 insertions(+), 3 deletions(-) create mode 100644 js/irve_count_by_city_with_tags.geojson create mode 100644 js/irve_totaux_par_ville.csv create mode 100644 villes_stats.js diff --git a/js/irve_count_by_city_with_tags.geojson b/js/irve_count_by_city_with_tags.geojson new file mode 100644 index 0000000..a965ff7 --- /dev/null +++ b/js/irve_count_by_city_with_tags.geojson @@ -0,0 +1,2457 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.3522, + 48.8566 + ] + }, + "properties": { + "name": "Paris", + "totalCount": 850, + "totalCapacity": 2643, + "threshold": 15, + "tags": { + "amenity": 850, + "capacity": 682, + "name": 135, + "operator": 634, + "wheelchair": 142, + "operator:wikidata": 162, + "brand:wikidata": 20, + "brand:wikipedia": 11, + "network": 434, + "ref:FR:Paris:DSP": 17, + "source": 240, + "source:coordinates": 2, + "level": 45, + "contact:phone": 10, + "fee": 494, + "motorcar": 446, + "opening_hours": 380, + "operator:wikipedia": 30, + "owner": 282, + "ref:EU:EVSE": 309, + "socket:type2": 364, + "socket:type2:output": 67, + "socket:typee": 281, + "socket:typee:output": 50, + "website": 66, + "fixme": 7, + "socket:type3c": 47, + "brand": 32, + "bicycle": 26, + "email": 83, + "phone": 69, + "operator:email": 93, + "operator:phone": 78, + "start_date": 100, + "disused:amenity": 4, + "authentication:membership_card": 28, + "charging_station:output": 56, + "motorcycle": 30, + "scooter": 15, + "truck": 13, + "authentication:app": 19, + "authentication:debit_card": 21, + "parking:fee": 42, + "payment:contactless": 19, + "ref": 121, + "socket:type2_combo": 87, + "socket:type2_combo:output": 40, + "access": 109, + "description": 46, + "note": 15, + "payment:credit_cards": 94, + "network:wikidata": 9, + "socket:chademo": 58, + "survey:date": 23, + "source:position": 9, + "authentication:none": 123, + "owner:ref:FR:SIREN": 62, + "reservation": 100, + "ogr_type_1": 1, + "ogr_type_c": 1, + "socket:type3": 7, + "source:ref:FR:Paris:DSP": 3, + "source:ref:EU:EVSE": 1, + "covered": 17, + "socket:schuko": 5, + "authentication:nfc": 13, + "operator:type": 14, + "socket:type3:output": 3, + "supervised": 1, + "authentication:phone_call": 3, + "authentication:short_message": 2, + "addr:city": 5, + "addr:housenumber": 4, + "addr:postcode": 5, + "addr:street": 5, + "charge": 13, + "short_name": 3, + "socket:tesla_supercharger": 2, + "socket:tesla_supercharger:output": 2, + "socket:tesla_supercharger_ccs": 3, + "socket:tesla_supercharger_ccs:output": 3, + "amperage": 3, + "socket:chademo:output": 8, + "voltage": 2, + "automated": 1, + "self_service": 1, + "charging_type": 2, + "note:location": 2, + "output": 2, + "socket": 2, + "layer": 1, + "mapillary": 3, + "socket:schuko:output": 4, + "rating": 1, + "support": 1, + "payment:app": 7, + "crossing": 1, + "crossing:markings": 1, + "highway": 1, + "not:operator:wikidata": 1, + "indoor": 20, + "payment:cards": 3, + "source:charging": 1, + "hgv": 3, + "addr:country": 1, + "payment:cash": 2, + "payment:membership_card": 2, + "socket:domestic": 2, + "socket:type2:voltage": 2, + "payment:website": 1, + "manufacturer": 4, + "model": 5, + "bus": 1, + "maxstay": 1, + "owner:wikidata": 4, + "socket:type2_combo:voltage": 1, + "moped": 2, + "contact:email": 3, + "capacity:charging": 1, + "fee:conditional": 1, + "socket:type2_cable": 13, + "small_electric_vehicle": 1, + "socket:type2_cable:output": 1, + "wikidata": 1, + "authentication:contactless": 2, + "operator:website": 1, + "operator:short": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.37, + 43.2965 + ] + }, + "properties": { + "name": "Marseille", + "totalCount": 152, + "totalCapacity": 329, + "threshold": 12, + "tags": { + "amenity": 152, + "capacity": 123, + "description": 12, + "motorcar": 88, + "name": 36, + "authentication:none": 75, + "email": 71, + "fee": 106, + "network": 100, + "opening_hours": 101, + "operator": 106, + "operator:email": 50, + "owner": 80, + "payment:credit_cards": 61, + "ref:EU:EVSE": 80, + "socket:typee": 89, + "source": 79, + "start_date": 65, + "socket:type2": 95, + "access": 18, + "parking:fee": 7, + "socket:type2:output": 8, + "socket:typee:voltage": 2, + "website": 2, + "operator:wikidata": 30, + "operator:wikipedia": 12, + "authentication:membership_card": 3, + "authentication:app": 2, + "authentication:nfc": 2, + "bicycle": 8, + "socket:chademo": 6, + "socket:chademo:output": 4, + "socket:type2_combo": 8, + "socket:type2_combo:output": 5, + "bus": 4, + "hgv": 4, + "scooter": 4, + "addr:housenumber": 2, + "addr:street": 2, + "payment:app": 5, + "payment:cards": 5, + "payment:cash": 4, + "payment:membership_card": 4, + "phone": 31, + "socket:typee:output": 4, + "panoramax": 1, + "contact:email": 1, + "addr:city": 1, + "addr:country": 1, + "addr:postcode": 1, + "level": 3, + "socket:typee:current": 1, + "wheelchair": 2, + "brand": 5, + "charging_station:output": 1, + "payment:debit_cards": 1, + "brand:wikidata": 2, + "network:wikidata": 2, + "operator:phone": 6, + "owner:wikidata": 1, + "payment:contactless": 1, + "reservation": 30, + "owner:ref:FR:SIREN": 27, + "ref": 7, + "socket:type2_cable": 2, + "not:brand:wikidata": 1, + "short_name": 1, + "truck": 1, + "note": 1, + "capacity:beds": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.8357, + 45.764 + ] + }, + "properties": { + "name": "Lyon", + "totalCount": 335, + "totalCapacity": 663, + "threshold": 12, + "tags": { + "amenity": 335, + "capacity": 248, + "fee": 259, + "motorcar": 120, + "operator": 275, + "operator:wikidata": 156, + "socket:type2": 218, + "brand": 64, + "payment:credit_cards": 80, + "authentication:none": 150, + "email": 143, + "name": 103, + "network": 194, + "opening_hours": 221, + "owner": 79, + "phone": 152, + "ref": 216, + "ref:EU:EVSE": 79, + "source": 58, + "socket:typee": 87, + "socket:type2:output": 38, + "access": 69, + "disused:amenity": 1, + "disused:network": 1, + "end_date": 1, + "socket:chademo": 52, + "socket:type2_combo": 67, + "brand:website": 19, + "mapillary": 1, + "survey:date": 2, + "socket:chademo:output": 17, + "authentication:membership_card": 26, + "description": 8, + "parking:fee": 3, + "payment:mastercard": 2, + "payment:total_card": 2, + "payment:visa": 2, + "socket:type2_combo:output": 23, + "website": 7, + "wheelchair": 4, + "fuel:cng": 1, + "brand:wikidata": 2, + "socket:tesla_supercharger_ccs": 2, + "socket:tesla_supercharger_ccs:output": 2, + "charging_station:output": 2, + "fixme": 2, + "covered": 7, + "addr:street": 1, + "operator:wikipedia": 7, + "network:wikidata": 1, + "network:wikipedia": 1, + "socket:typee:output": 2, + "socket:schuko": 9, + "contact:email": 4, + "network:website": 7, + "manufacturer": 2, + "payment:debit_cards": 8, + "parking_space": 1, + "authentication:nfc": 15, + "socket:type2_cable:output": 1, + "charge": 1, + "payment:app": 18, + "payment:contactless": 2, + "lit": 3, + "note": 5, + "level": 1, + "short_name": 1, + "trailer": 1, + "advertising": 1, + "motor_vehicle": 1, + "visibility": 1, + "operator:email": 2, + "operator:phone": 2, + "start_date": 83, + "source:ref": 1, + "owner:ref:FR:SIREN": 62, + "reservation": 83, + "socket:type2_cable": 21, + "orientation": 1, + "authentication:phone_call": 2, + "authentication:short_message": 2, + "man_made": 1, + "socket:type2_combo:voltage": 1, + "bicycle": 2, + "scooter": 2, + "capacity:charging_station": 1, + "motorcycle": 1, + "authentication:app": 1, + "authentication:contactless": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 1.4442, + 43.6047 + ] + }, + "properties": { + "name": "Toulouse", + "totalCount": 174, + "totalCapacity": 531, + "threshold": 10, + "tags": { + "amenity": 174, + "capacity": 144, + "fee": 113, + "motorcar": 76, + "network": 50, + "opening_hours": 47, + "operator": 113, + "operator:wikidata": 39, + "owner": 41, + "ref:EU:EVSE": 51, + "socket:type2": 55, + "socket:type3c": 20, + "socket:typee": 35, + "source": 36, + "layer": 1, + "name": 38, + "note": 1, + "website": 8, + "access": 48, + "bicycle": 4, + "operator:wikipedia": 7, + "socket:type3": 7, + "mapillary": 2, + "fixme": 2, + "authentication:app": 7, + "authentication:membership_card": 4, + "charging_station:output": 2, + "ref": 34, + "brand": 40, + "brand:wikidata": 9, + "socket:chademo": 18, + "socket:chademo:output": 10, + "socket:type2_combo": 39, + "socket:type2_combo:output": 28, + "ref:FR:REVEO": 1, + "socket:type2:output": 19, + "socket:type3c:output": 1, + "socket:typee:output": 3, + "survey:date": 3, + "email": 19, + "phone": 9, + "covered": 11, + "authentication:none": 12, + "operator:email": 9, + "operator:phone": 9, + "payment:credit_cards": 19, + "start_date": 8, + "ref:FR:Toulouse_metropole": 1, + "network:wikidata": 4, + "wheelchair": 7, + "charge": 16, + "contact:city": 1, + "contact:housenumber": 1, + "contact:postcode": 1, + "contact:street": 1, + "not:brand:wikidata": 1, + "short_name": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "capacity:charging": 1, + "addr:city": 1, + "addr:housenumber": 1, + "addr:postcode": 1, + "addr:street": 2, + "authentication:nfc": 3, + "addr:all": 1, + "description": 1, + "network:website": 2, + "parking:fee": 7, + "payment:app": 14, + "payment:cash": 2, + "payment:membership_card": 2, + "socket:type2_cable": 1, + "socket:type2_cable:output": 1, + "wikimedia_commons": 1, + "payment:rfid_frechmiles": 2, + "moped": 1, + "motorcycle": 30, + "not:operator:wikidata": 4, + "payment:contactless": 13, + "socket:type2:current": 2, + "socket:typee:current": 2, + "socket:type2:voltage": 1, + "ele": 2, + "ele:ellipsoid": 4, + "ele:geoid": 2, + "note:ele": 2, + "payment:account_cards": 3, + "payment:debit_cards": 3, + "check_date": 1, + "level": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.262, + 43.7055 + ] + }, + "properties": { + "name": "Nice", + "totalCount": 58, + "totalCapacity": 102, + "threshold": 10, + "tags": { + "amenity": 58, + "authentication:none": 12, + "capacity": 32, + "fee": 19, + "motorcar": 4, + "network": 11, + "network:wikidata": 1, + "not:operator:wikidata": 1, + "opening_hours": 13, + "operator": 26, + "operator:email": 1, + "operator:phone": 1, + "owner": 1, + "owner:wikidata": 1, + "payment:credit_cards": 1, + "ref:EU:EVSE": 1, + "start_date": 10, + "voltage": 3, + "website": 10, + "brand": 2, + "brand:wikidata": 2, + "brand:wikipedia": 1, + "name": 6, + "access": 8, + "ref": 11, + "addr:city": 1, + "addr:country": 1, + "addr:housenumber": 1, + "addr:postcode": 1, + "addr:street": 1, + "charge": 1, + "operator:wikidata": 3, + "short_name": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "source": 2, + "authentication:membership_card": 1, + "parking:fee": 1, + "socket:type2": 11, + "socket:type2:output": 1, + "socket:typee": 8, + "socket:typee:output": 1, + "wikimedia_commons": 1, + "description": 1, + "covered": 2, + "manufacturer": 3, + "wheelchair": 4, + "survey:date": 2, + "email": 10, + "phone": 9, + "reservation": 10, + "socket:type2_cable": 6, + "owner:ref:FR:SIREN": 6, + "socket:type2_combo": 1, + "socket:chademo": 1, + "bicycle": 6 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -1.5536, + 47.2184 + ] + }, + "properties": { + "name": "Nantes", + "totalCount": 67, + "totalCapacity": 232, + "threshold": 10, + "tags": { + "access": 6, + "addr:city": 1, + "addr:country": 1, + "addr:housenumber": 1, + "addr:postcode": 1, + "addr:street": 1, + "amenity": 67, + "brand": 2, + "brand:wikidata": 1, + "capacity": 52, + "charge": 1, + "fee": 42, + "motorcar": 17, + "name": 2, + "opening_hours": 30, + "operator": 46, + "operator:wikidata": 8, + "operator:wikipedia": 2, + "short_name": 1, + "socket:tesla_supercharger": 1, + "socket:tesla_supercharger:output": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "website": 1, + "covered": 1, + "network": 39, + "note": 1, + "owner": 14, + "ref": 14, + "ref:EU:EVSE": 37, + "socket:type2": 21, + "socket:typee": 12, + "source": 14, + "bicycle": 1, + "bus": 1, + "hgv": 1, + "panoramax": 1, + "parking:fee": 1, + "scooter": 1, + "socket:type2_combo": 27, + "fixme": 1, + "authentication:none": 26, + "charging_station:output": 26, + "description": 26, + "operator:email": 26, + "operator:phone": 23, + "owner:ref:FR:SIREN": 23, + "payment:credit_cards": 23, + "reservation": 26, + "socket:chademo": 7, + "socket:type2_combo:output": 25, + "start_date": 21, + "wheelchair": 2 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.8767, + 43.6108 + ] + }, + "properties": { + "name": "Montpellier", + "totalCount": 125, + "totalCapacity": 280, + "threshold": 8, + "tags": { + "access": 58, + "amenity": 125, + "brand": 45, + "capacity": 111, + "socket:typee:output": 13, + "fuel:1_25": 1, + "fuel:1_50": 1, + "fuel:GTL_diesel": 1, + "fuel:HGV_diesel": 1, + "fuel:biodiesel": 1, + "fuel:biogas": 1, + "fuel:cng": 1, + "fuel:diesel": 1, + "fuel:e10": 1, + "fuel:e85": 1, + "fuel:electricity": 1, + "fuel:lpg": 1, + "fuel:octane_100": 1, + "fuel:octane_91": 1, + "fuel:octane_95": 1, + "fuel:octane_98": 1, + "authentication:app": 10, + "authentication:membership_card": 11, + "charging_station:output": 11, + "fee": 66, + "motorcar": 38, + "network": 44, + "opening_hours": 34, + "operator": 54, + "operator:wikidata": 23, + "owner": 22, + "ref:EU:EVSE": 44, + "ref:FR:REVEO": 6, + "socket:type2": 30, + "socket:type2:output": 49, + "socket:typee": 23, + "source": 14, + "website": 13, + "manufacturer": 4, + "model": 4, + "operator:wikipedia": 3, + "socket:chademo": 3, + "socket:chademo:output": 3, + "socket:type2_combo": 10, + "socket:type2_combo:output": 7, + "mapillary": 1, + "aerialway:occupancy": 1, + "description": 2, + "name": 34, + "addr:city": 2, + "addr:postcode": 2, + "addr:street": 2, + "brand:wikidata": 1, + "charge": 2, + "short_name": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "payment:app": 2, + "note": 1, + "socket:type2_combo:voltage": 2, + "bicycle": 3, + "authentication:nfc": 1, + "socket:type2_cable": 1, + "socket:type2_cable:output": 1, + "phone": 3, + "wheelchair": 3, + "not:operator:wikidata": 1, + "amperage": 3, + "authentication:none": 3, + "scooter": 1, + "voltage": 3, + "covered": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 7.7521, + 48.5734 + ] + }, + "properties": { + "name": "Strasbourg", + "totalCount": 165, + "totalCapacity": 265, + "threshold": 8, + "tags": { + "amenity": 165, + "authentication:membership_card": 8, + "capacity": 75, + "capacity:car": 6, + "name": 13, + "operator": 98, + "socket:schuko": 9, + "socket:schuko:current": 7, + "socket:schuko:voltage": 6, + "socket:type2": 60, + "socket:type2:current": 7, + "socket:type2:voltage": 6, + "socket:type3": 7, + "socket:type3:current": 7, + "socket:type3:voltage": 6, + "source": 25, + "charge": 35, + "charging_station:output": 22, + "fee": 83, + "motorcar": 21, + "network": 65, + "owner": 17, + "ref:EU:EVSE": 37, + "socket:type2_combo:output": 23, + "email": 20, + "note": 3, + "operator:wikidata": 10, + "phone": 20, + "socket:typee": 35, + "authentication:none": 50, + "description": 21, + "opening_hours": 53, + "operator:email": 20, + "ref": 49, + "reservation": 48, + "socket:chademo": 18, + "socket:type2_cable": 34, + "socket:type2_combo": 29, + "payment:credit_cards": 3, + "covered": 3, + "level": 3, + "parking:fee": 1, + "socket:cee_blue": 1, + "wheelchair": 1, + "access": 14, + "brand": 5, + "manufacturer": 5, + "website": 3, + "amperage": 2, + "model": 2, + "voltage": 2, + "addr:city": 2, + "addr:street": 3, + "not:operator:wikidata": 1, + "addr:country": 1, + "addr:postcode": 1, + "socket:chademo:output": 1, + "socket:type2:output": 2, + "serial_number": 1, + "start_date": 31, + "contact:website": 1, + "contact:email": 13, + "contact:phone": 13, + "authentication:app": 3, + "motorcycle": 1, + "brand:wikidata": 2, + "payment:debit_cards": 1, + "short_name": 1, + "socket:tesla_supercharger": 1, + "socket:tesla_supercharger:output": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "operator:phone": 1, + "owner:ref:FR:SIREN": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -0.5792, + 44.8378 + ] + }, + "properties": { + "name": "Bordeaux", + "totalCount": 104, + "totalCapacity": 426, + "threshold": 8, + "tags": { + "amenity": 104, + "authentication:none": 38, + "capacity": 86, + "charging_station:output": 35, + "description": 36, + "fee": 64, + "network": 44, + "opening_hours": 45, + "operator": 78, + "operator:email": 40, + "ref": 30, + "ref:EU:EVSE": 41, + "reservation": 35, + "socket:chademo": 8, + "socket:type2": 42, + "socket:type2_cable": 8, + "socket:type2_combo": 19, + "socket:type2_combo:output": 18, + "socket:typee": 16, + "email": 10, + "motorcar": 29, + "network:wikidata": 10, + "operator:phone": 17, + "operator:wikidata": 8, + "owner": 18, + "payment:credit_cards": 16, + "source": 20, + "start_date": 19, + "survey:date": 2, + "authentication:membership_card": 1, + "authentication:nfc": 1, + "socket:schuko": 1, + "fixme": 2, + "access": 21, + "covered": 3, + "level": 2, + "name": 12, + "addr:city": 2, + "addr:postcode": 2, + "addr:street": 2, + "brand": 4, + "brand:wikidata": 2, + "short_name": 2, + "socket:tesla_supercharger_ccs": 2, + "socket:tesla_supercharger_ccs:output": 2, + "website": 6, + "charge": 4, + "payment:app": 7, + "payment:contactless": 6, + "owner:ref:FR:SIREN": 5, + "wheelchair": 6, + "addr": 1, + "addr:country": 1, + "not:brand:wikidata": 1, + "note": 3, + "payment:badge": 1, + "socket:type2:output": 1, + "phone": 1, + "payment:smartphone": 1, + "layer": 1, + "motorcycle": 4 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 3.0585, + 50.6292 + ] + }, + "properties": { + "name": "Lille", + "totalCount": 145, + "totalCapacity": 609, + "threshold": 8, + "tags": { + "amenity": 145, + "capacity": 104, + "operator": 107, + "socket:type3c": 2, + "source": 80, + "fee": 106, + "name": 11, + "operator:wikidata": 48, + "operator:wikipedia": 13, + "authentication:none": 70, + "email": 26, + "motorcar": 85, + "network": 87, + "opening_hours": 93, + "operator:email": 67, + "owner": 83, + "payment:credit_cards": 62, + "phone": 14, + "ref:EU:EVSE": 84, + "socket:type2": 91, + "socket:type2_combo": 42, + "socket:typee": 48, + "access": 28, + "socket:type3c:output": 2, + "amperage": 1, + "authentication:app": 2, + "authentication:membership_card": 2, + "authentication:nfc": 1, + "charging_station:output": 6, + "note": 1, + "operator:phone": 45, + "socket:chademo": 21, + "socket:chademo:output": 4, + "socket:type2:output": 9, + "socket:type2_combo:output": 7, + "start_date": 58, + "brand": 11, + "mapillary": 3, + "survey:date": 3, + "addr:city": 4, + "addr:country": 3, + "addr:housenumber": 3, + "addr:postcode": 4, + "addr:street": 4, + "brand:wikidata": 2, + "charge": 1, + "description": 4, + "owner:ref:FR:SIREN": 7, + "parking:fee": 1, + "ref": 7, + "reservation": 12, + "short_name": 1, + "socket:tesla_supercharger": 1, + "socket:tesla_supercharger:output": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "truck": 1, + "website": 2, + "wheelchair": 13, + "manufacturer": 13, + "socket:typee:output": 3, + "socket:schuko": 2, + "socket:schuko:output": 2, + "covered": 4, + "authentication:contactless": 1, + "payment:app": 1, + "socket:type2_cable": 5, + "network:wikidata": 1, + "owner:wikidata": 1, + "not:operator:wikidata": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -1.6778, + 48.1141 + ] + }, + "properties": { + "name": "Rennes", + "totalCount": 86, + "totalCapacity": 201, + "threshold": 8, + "tags": { + "amenity": 86, + "capacity:car": 1, + "opening_hours": 38, + "socket:schuko": 6, + "capacity": 61, + "fee": 44, + "mapillary": 2, + "operator": 44, + "socket:type2": 29, + "socket:typee": 12, + "access": 27, + "socket:type3": 7, + "wheelchair": 16, + "level": 9, + "parking:fee": 3, + "socket:chademo": 6, + "authentication:none": 21, + "email": 22, + "motorcar": 21, + "name": 7, + "network": 24, + "operator:email": 11, + "operator:phone": 7, + "owner": 11, + "payment:credit_cards": 13, + "phone": 11, + "ref:EU:EVSE": 11, + "source": 25, + "start_date": 22, + "operator:wikidata": 7, + "operator:wikipedia": 4, + "socket:type2_combo": 12, + "addr:city": 3, + "addr:country": 1, + "addr:postcode": 4, + "addr:street": 4, + "brand": 8, + "brand:wikidata": 2, + "charge": 5, + "short_name": 2, + "socket:tesla_supercharger": 1, + "socket:tesla_supercharger:output": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "website": 4, + "layer": 1, + "voltage": 1, + "authentication:membership_card": 2, + "authentication:nfc": 1, + "ref:FR:SDE35": 1, + "authentication:application": 1, + "note": 1, + "ref": 9, + "socket:type2:output": 4, + "socket:typee:output": 1, + "source:socket:type2:output": 1, + "source:socket:typee": 1, + "bicycle": 2, + "addr:housenumber": 2, + "socket:chademo:output": 3, + "socket:type2_combo:output": 5, + "panoramax": 3, + "panoramax:0": 3, + "payment:app": 6, + "payment:debit_cards": 3, + "payment:account_cards": 1, + "reservation": 11, + "socket:type2_cable": 9, + "owner:ref:FR:SIREN": 3, + "fixme": 1, + "bus": 1, + "hgv": 1, + "maxstay": 1, + "not:brand:wikidata": 1, + "payment:cards": 1, + "payment:cash": 1, + "payment:membership_card": 1, + "payment:qr_code": 1, + "scooter": 1, + "covered": 2, + "indoor": 2, + "source:location": 2 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.0316, + 49.2583 + ] + }, + "properties": { + "name": "Reims", + "totalCount": 57, + "totalCapacity": 88, + "threshold": 6, + "tags": { + "amenity": 57, + "motorcar": 7, + "name": 25, + "note": 1, + "ogr_type_1": 1, + "ogr_type_c": 1, + "operator": 15, + "ref": 8, + "socket:type3": 2, + "source": 6, + "authentication:nfc": 1, + "covered": 4, + "fee": 29, + "fixme": 4, + "operator_1": 1, + "parking:fee": 2, + "socket:chademo": 2, + "socket:type2": 10, + "wheelchair": 2, + "capacity": 33, + "network": 9, + "owner": 2, + "ref:EU:EVSE": 2, + "socket:schuko": 1, + "socket:schuko:output": 1, + "socket:type3:output": 1, + "socket:typee": 8, + "brand": 7, + "brand:wikidata": 4, + "short_name": 4, + "addr:housenumber": 2, + "addr:street": 2, + "access": 11, + "description": 1, + "level": 1, + "manufacturer": 3, + "addr:city": 1, + "addr:country": 1, + "addr:postcode": 1, + "charge": 5, + "opening_hours": 8, + "operator:wikidata": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "website": 1, + "email": 7, + "phone": 7, + "reservation": 7, + "socket:type2_cable": 7, + "start_date": 7, + "socket:type2_combo": 2, + "authentication:none": 2, + "owner:ref:FR:SIREN": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 0.1064, + 49.4944 + ] + }, + "properties": { + "name": "Le Havre", + "totalCount": 89, + "totalCapacity": 171, + "threshold": 6, + "tags": { + "amenity": 89, + "authentication:none": 75, + "capacity": 78, + "charging_station:output": 74, + "description": 74, + "network": 75, + "opening_hours": 76, + "operator": 78, + "operator:email": 74, + "owner:ref:FR:SIREN": 35, + "payment:credit_cards": 49, + "ref:EU:EVSE": 74, + "start_date": 49, + "wheelchair": 42, + "fee": 76, + "reservation": 74, + "socket:type2": 71, + "socket:typee": 66, + "operator:phone": 28, + "operator:wikidata": 33, + "access": 6, + "access:disabled": 1, + "brand": 20, + "brand:wikidata": 18, + "name": 18, + "addr:city": 1, + "addr:country": 1, + "addr:housenumber": 1, + "addr:postcode": 1, + "addr:street": 1, + "socket:chademo": 5, + "socket:chademo:output": 1, + "socket:type2:output": 1, + "socket:type2_combo": 7, + "socket:type2_combo:output": 7, + "email": 3, + "phone": 1, + "ref": 43, + "socket:type2_cable": 1, + "check_date": 8, + "source": 1, + "survey:date": 1, + "level": 2, + "fixme": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.3928, + 45.4484 + ] + }, + "properties": { + "name": "Saint-Étienne", + "totalCount": 64, + "totalCapacity": 105, + "threshold": 6, + "tags": { + "amenity": 64, + "capacity": 42, + "motorcar": 33, + "network": 50, + "capacity:car": 4, + "operator": 41, + "operator:wikidata": 11, + "website": 1, + "fee": 37, + "socket:type2": 34, + "socket:type2:output": 1, + "network:website": 1, + "opening_hours": 33, + "owner": 15, + "ref:EU:EVSE": 15, + "socket:typee": 25, + "authentication:none": 32, + "email": 29, + "operator:email": 12, + "operator:phone": 8, + "payment:credit_cards": 8, + "source": 12, + "start_date": 31, + "wheelchair": 6, + "access": 6, + "description": 3, + "payment:app": 1, + "payment:rfid": 1, + "socket:chademo": 5, + "socket:type2_combo": 5, + "owner:ref:FR:SIREN": 16, + "ref": 22, + "reservation": 24, + "phone": 8, + "socket:type2_cable": 9 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.928, + 43.1242 + ] + }, + "properties": { + "name": "Toulon", + "totalCount": 31, + "totalCapacity": 56, + "threshold": 6, + "tags": { + "amenity": 31, + "capacity": 26, + "fee": 25, + "name": 6, + "note": 1, + "operator": 27, + "source": 21, + "website": 1, + "authentication:none": 21, + "email": 20, + "motorcar": 24, + "network": 22, + "opening_hours": 25, + "operator:email": 21, + "operator:phone": 20, + "owner": 24, + "payment:credit_cards": 21, + "ref:EU:EVSE": 24, + "socket:type2": 23, + "socket:typee": 23, + "start_date": 21, + "access": 1, + "charge": 1, + "payment:badge": 1, + "socket:type2:output": 1, + "socket:typee:output": 1, + "operator:wikidata": 2, + "reservation": 1, + "socket:type2_combo": 1, + "bicycle": 2, + "panoramax": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 1.0993, + 49.4431 + ] + }, + "properties": { + "name": "Rouen", + "totalCount": 98, + "totalCapacity": 275, + "threshold": 6, + "tags": { + "amenity": 98, + "capacity": 91, + "fee": 81, + "motorcar": 64, + "network": 91, + "opening_hours": 77, + "operator": 89, + "operator:wikidata": 47, + "owner": 63, + "ref:EU:EVSE": 89, + "socket:type2": 83, + "socket:type3": 11, + "socket:typee": 61, + "fixme": 1, + "level": 5, + "ogr_type_1": 1, + "ogr_type_c": 1, + "ref": 17, + "source": 45, + "wheelchair": 45, + "charging_station:output": 68, + "operator:wikipedia": 13, + "start_date": 64, + "survey:date": 4, + "authentication:none": 44, + "description": 49, + "email": 23, + "operator:email": 60, + "operator:phone": 47, + "payment:credit_cards": 49, + "reservation": 44, + "name": 6, + "addr:street": 1, + "owner:ref:FR:SIREN": 12, + "socket:type2_combo": 17, + "socket:type2_combo:output": 13, + "access": 8, + "mapillary": 1, + "socket:type2:output": 6, + "addr:city": 1, + "addr:postcode": 1, + "operator:contact:phone": 1, + "socket:type3c": 8, + "phone": 9, + "authentication:app": 1, + "authentication:contactless": 1, + "maxstay": 2, + "socket:type1:output": 1, + "socket:chademo": 8, + "socket:chademo:output": 2, + "socket:type2_cable": 2, + "charge": 1, + "bicycle": 1, + "charging": 1, + "lockers": 1, + "brand": 2, + "socket:type2_cable:output": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 8.7386, + 41.9192 + ] + }, + "properties": { + "name": "Ajaccio", + "totalCount": 10, + "totalCapacity": 14, + "threshold": 6, + "tags": { + "amenity": 10, + "bicycle": 1, + "fee": 7, + "motorcar": 1, + "name": 3, + "operator": 7, + "authentication:none": 5, + "email": 5, + "network": 5, + "opening_hours": 6, + "owner:ref:FR:SIREN": 4, + "phone": 5, + "ref": 5, + "reservation": 5, + "socket:type2_cable": 5, + "socket:type2_combo": 3, + "start_date": 5, + "socket:type2": 2, + "socket:typee": 1, + "capacity": 4, + "parking": 1, + "brand": 1, + "brand:wikidata": 1, + "operator:wikidata": 1, + "operator:wikipedia": 1, + "short_name": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 55.4481, + -20.8789 + ] + }, + "properties": { + "name": "Saint-Denis", + "totalCount": 9, + "totalCapacity": 7, + "threshold": 6, + "tags": { + "amenity": 9, + "authentication:none": 8, + "email": 5, + "fee": 8, + "network": 8, + "opening_hours": 8, + "operator": 8, + "phone": 5, + "ref": 8, + "reservation": 8, + "socket:type2": 8, + "socket:type2_cable": 5, + "socket:typee": 4, + "start_date": 5, + "socket:chademo": 2, + "socket:type2_combo": 2, + "capacity": 4, + "charging_station:output": 4, + "description": 4, + "operator:email": 4, + "ref:EU:EVSE": 4, + "socket:type2_combo:output": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -4.4861, + 48.3904 + ] + }, + "properties": { + "name": "Brest", + "totalCount": 22, + "totalCapacity": 62, + "threshold": 6, + "tags": { + "access": 10, + "amenity": 22, + "capacity": 15, + "fee": 11, + "motorcar": 9, + "network": 12, + "opening_hours": 4, + "operator": 17, + "operator:wikidata": 7, + "operator:wikipedia": 1, + "owner": 8, + "ref:EU:EVSE": 9, + "socket:type2": 11, + "socket:typee": 9, + "source": 8, + "survey:date": 1, + "addr:city": 1, + "addr:postcode": 1, + "addr:street": 1, + "brand": 1, + "brand:wikidata": 1, + "name": 1, + "short_name": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "website": 1, + "bicycle": 2, + "motorcycle": 1, + "socket:chademo": 2, + "socket:type2_combo": 2, + "authentication:none": 3, + "email": 3, + "ref": 3, + "reservation": 3, + "socket:type2_cable": 3, + "start_date": 3, + "phone": 2, + "network:wikidata": 1, + "covered": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.076, + 49.0379 + ] + }, + "properties": { + "name": "Cergy", + "totalCount": 25, + "totalCapacity": 38, + "threshold": 6, + "tags": { + "amenity": 25, + "capacity": 15, + "fee": 4, + "name": 7, + "note": 4, + "operator": 10, + "source": 4, + "website": 6, + "fixme": 1, + "motorcar": 7, + "ogr_type_1": 1, + "ogr_type_c": 1, + "ref": 1, + "socket:type3": 1, + "access": 3, + "addr:city": 1, + "addr:country": 1, + "addr:housenumber": 1, + "addr:postcode": 1, + "addr:street": 1, + "socket:chademo": 1, + "socket:chademo:output": 1, + "socket:type2": 1, + "socket:type2:output": 2, + "socket:type2_combo": 1, + "socket:type2_combo:output": 1, + "baran": 1, + "socket:domestic:output": 1, + "covered": 1, + "indoor": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.435, + 48.624 + ] + }, + "properties": { + "name": "Évry", + "totalCount": 10, + "totalCapacity": 44, + "threshold": 6, + "tags": { + "amenity": 10, + "capacity": 7, + "fee": 8, + "motorcar": 8, + "network": 8, + "opening_hours": 7, + "operator": 9, + "owner": 8, + "ref:EU:EVSE": 7, + "socket:type2": 7, + "socket:typee": 4, + "source": 8, + "access": 2, + "authentication:none": 5, + "brand": 1, + "brand:wikidata": 1, + "manufacturer": 1, + "name": 1, + "network:wikidata": 1, + "operator:email": 5, + "operator:phone": 2, + "operator:wikidata": 1, + "operator:wikipedia": 1, + "payment:credit_cards": 5, + "ref": 1, + "short_name": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "socket:type2_combo": 4, + "start_date": 4, + "wheelchair": 3, + "motorcycle": 1, + "socket:type2_combo:output": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.015, + 48.7704 + ] + }, + "properties": { + "name": "Saint-Quentin-en-Yvelines", + "totalCount": 20, + "totalCapacity": 28, + "threshold": 4, + "tags": { + "access": 15, + "amenity": 20, + "capacity": 14, + "fee": 15, + "operator": 16, + "amperage": 3, + "authentication:membership_card": 9, + "operator:wikidata": 5, + "payment:rfid_card": 3, + "socket:schuko": 8, + "socket:type2": 14, + "authentication:app": 6, + "bicycle": 6, + "charging_station:output": 6, + "covered": 6, + "manufacturer": 6, + "motorcar": 9, + "name": 2, + "opening_hours": 8, + "operator:wikipedia": 2, + "owner": 8, + "parking:fee": 6, + "socket:chademo": 1, + "socket:chademo:amperage": 1, + "socket:chademo:output": 1, + "socket:chademo:voltage": 1, + "socket:type2:amperage": 6, + "socket:type2:output": 8, + "socket:type2:voltage": 6, + "socket:type2_combo": 2, + "socket:type2_combo:amperage": 1, + "socket:type2_combo:output": 1, + "socket:type2_combo:voltage": 1, + "socket:schuko:amperage": 5, + "socket:schuko:output": 5, + "socket:schuko:voltage": 5, + "network": 3, + "ref:EU:EVSE": 2, + "socket:typee": 2, + "source": 3, + "brand": 1, + "payment:contactless": 4, + "payment:credit_cards": 4, + "payment:mastercard": 4, + "payment:visa": 4, + "authentication:none": 1, + "email": 1, + "owner:ref:FR:SIREN": 1, + "phone": 1, + "ref": 1, + "reservation": 1, + "socket:type2_cable": 1, + "start_date": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.7875, + 48.8439 + ] + }, + "properties": { + "name": "Marne-la-Vallée", + "totalCount": 27, + "totalCapacity": 54, + "threshold": 4, + "tags": { + "amenity": 27, + "capacity": 21, + "covered": 2, + "fee": 25, + "mapillary": 1, + "motorcar": 19, + "opening_hours": 5, + "parking:fee": 2, + "socket:schuko": 2, + "socket:type2": 17, + "socket:type3": 2, + "wheelchair": 2, + "name": 13, + "network": 15, + "note": 13, + "ref": 15, + "socket:typee": 13, + "fixme": 1, + "amperage": 4, + "authentication": 4, + "parking_space": 4, + "socket": 4, + "voltage": 4, + "access": 1, + "addr:city": 1, + "addr:postcode": 1, + "addr:street": 1, + "brand": 1, + "brand:wikidata": 1, + "charging_station:output": 1, + "operator": 3, + "operator:wikidata": 1, + "short_name": 1, + "socket:tesla_supercharger": 1, + "socket:tesla_supercharger:output": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "website": 1, + "authentication:none": 2, + "email": 2, + "owner:ref:FR:SIREN": 2, + "phone": 2, + "reservation": 2, + "socket:chademo": 2, + "socket:type2_combo": 2, + "start_date": 2, + "motorcycle": 3 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.6298, + 48.5711 + ] + }, + "properties": { + "name": "Melun-Sénart", + "totalCount": 9, + "totalCapacity": 24, + "threshold": 4, + "tags": { + "amenity": 9, + "operator": 8, + "capacity": 7, + "fee": 6, + "motorcar": 4, + "name": 4, + "network": 4, + "operator:wikidata": 5, + "operator:wikipedia": 3, + "owner": 4, + "ref:EU:EVSE": 4, + "socket:type2": 4, + "socket:typee": 2, + "access": 2, + "charge": 1, + "addr:city": 1, + "addr:country": 1, + "addr:postcode": 1, + "addr:street": 1, + "brand": 2, + "brand:wikidata": 2, + "opening_hours": 3, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "website": 1, + "authentication:none": 2, + "motorcycle": 1, + "operator:email": 2, + "operator:phone": 2, + "socket:type2_combo": 2, + "start_date": 2, + "payment:credit_cards": 1, + "socket:chademo": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 1.0789, + 49.9237 + ] + }, + "properties": { + "name": "Dieppe", + "totalCount": 21, + "totalCapacity": 82, + "threshold": 4, + "tags": { + "amenity": 21, + "capacity": 20, + "socket:output": 1, + "socket:schuko": 1, + "wheelchair": 4, + "name": 2, + "operator": 18, + "operator:wikidata": 5, + "socket:type2": 18, + "socket:type2:output": 7, + "charging_station:output": 15, + "description": 13, + "fee": 15, + "motorcar": 8, + "network": 17, + "operator:email": 14, + "owner": 8, + "ref:EU:EVSE": 17, + "reservation": 11, + "socket:typee": 8, + "source": 6, + "start_date": 12, + "authentication:none": 12, + "opening_hours": 13, + "payment:credit_cards": 12, + "socket:type2_combo": 11, + "socket:type2_combo:output": 10, + "socket:chademo": 5, + "socket:typee:output": 1, + "operator:phone": 8, + "owner:ref:FR:SIREN": 7, + "access": 1, + "brand": 1, + "brand:wikidata": 1, + "operator:wikipedia": 1, + "short_name": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "ref": 6, + "charge": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 0.1996, + 48.0061 + ] + }, + "properties": { + "name": "Le Mans", + "totalCount": 8, + "totalCapacity": 47, + "threshold": 4, + "tags": { + "amenity": 8, + "operator": 5, + "access": 7, + "brand": 5, + "capacity": 7, + "fee": 7, + "operator:wikidata": 3, + "payment:chargemap_pass": 6, + "socket:type2": 7, + "socket:type2:output": 6, + "socket:type2_combo": 3, + "description": 1, + "level": 1, + "socket:schuko": 3, + "opening_hours": 1, + "addr:city": 1, + "addr:postcode": 1, + "addr:street": 1, + "charge": 1, + "name": 1, + "socket:chademo": 2, + "socket:chademo:output": 2, + "socket:type2_combo:output": 2 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 1.9039, + 47.9029 + ] + }, + "properties": { + "name": "Orléans", + "totalCount": 44, + "totalCapacity": 99, + "threshold": 4, + "tags": { + "amenity": 44, + "capacity": 41, + "fee": 40, + "motorcar": 42, + "network": 41, + "opening_hours": 12, + "operator": 42, + "operator:wikidata": 37, + "operator:wikipedia": 11, + "owner": 41, + "ref:EU:EVSE": 19, + "socket:type2": 41, + "socket:typee": 18, + "source": 32, + "brand": 21, + "brand:wikidata": 21, + "name": 21, + "image": 4, + "mapillary": 3, + "access": 14, + "manufacturer": 2, + "ref": 1, + "authentication:none": 1, + "covered": 1, + "operator:email": 1, + "operator:phone": 1, + "parking:fee": 1, + "payment:credit_cards": 1, + "start_date": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 4.36, + 43.8367 + ] + }, + "properties": { + "name": "Nîmes", + "totalCount": 30, + "totalCapacity": 80, + "threshold": 4, + "tags": { + "amenity": 30, + "capacity": 23, + "fee": 27, + "name": 5, + "note": 3, + "operator": 26, + "source": 2, + "website": 3, + "motorcar": 17, + "network": 17, + "opening_hours": 17, + "owner": 16, + "ref:EU:EVSE": 16, + "socket:type2": 17, + "socket:type3c": 1, + "socket:typee": 16, + "socket:type3": 16, + "authentication:app": 14, + "authentication:membership_card": 14, + "operator:wikidata": 10, + "operator:wikipedia": 3, + "ref": 13, + "socket:type2:output": 13, + "socket:type3:output": 13, + "access": 9, + "addr:city": 1, + "addr:housenumber": 1, + "addr:postcode": 1, + "addr:street": 1, + "brand": 2, + "brand:wikidata": 2, + "charge": 1, + "short_name": 2, + "socket:tesla_supercharger": 1, + "socket:tesla_supercharger:output": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "brand:wikipedia": 1, + "survey:date": 1, + "payment:app": 1, + "payment:contactless": 1, + "socket:type2_combo": 1, + "socket:type2_combo:output": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.4474, + 43.5297 + ] + }, + "properties": { + "name": "Aix-en-Provence", + "totalCount": 23, + "totalCapacity": 49, + "threshold": 4, + "tags": { + "amenity": 23, + "capacity:car": 1, + "motorcar": 9, + "access": 3, + "addr:city": 1, + "addr:postcode": 1, + "addr:street": 1, + "bicycle": 2, + "brand": 4, + "brand:wikidata": 3, + "capacity": 17, + "charge": 1, + "fee": 15, + "name": 3, + "opening_hours": 12, + "operator": 18, + "operator:wikidata": 6, + "short_name": 2, + "socket:tesla_supercharger": 2, + "socket:tesla_supercharger:output": 2, + "socket:tesla_supercharger_ccs": 2, + "socket:tesla_supercharger_ccs:output": 2, + "website": 2, + "brand:wikipedia": 1, + "covered": 1, + "network": 11, + "network:wikipedia": 1, + "authentication:money_card": 1, + "authentication:nfc": 1, + "authentication:none": 9, + "email": 8, + "operator:email": 6, + "owner": 7, + "payment:credit_cards": 5, + "ref:EU:EVSE": 6, + "socket:type2": 9, + "socket:type2:output": 1, + "socket:typee": 9, + "socket:typee:output": 1, + "source": 6, + "start_date": 9, + "operator:wikipedia": 1, + "owner:ref:FR:SIREN": 4, + "phone": 4, + "reservation": 5, + "network:wikidata": 1, + "owner:wikidata": 1, + "socket:type2_combo": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 0.69, + 47.3942 + ] + }, + "properties": { + "name": "Tours", + "totalCount": 27, + "totalCapacity": 137, + "threshold": 4, + "tags": { + "amenity": 27, + "capacity": 22, + "mapillary": 2, + "operator": 14, + "survey:date": 2, + "brand": 4, + "charging_station:output": 6, + "fee": 11, + "fixme": 1, + "image": 1, + "note:type_prise": 2, + "opening_hours": 7, + "ref": 4, + "source": 2, + "website": 2, + "operator:wikidata": 2, + "voltage": 1, + "description": 7, + "access": 4, + "motorcar": 3, + "network": 6, + "owner": 1, + "ref:EU:EVSE": 6, + "socket:type2": 5, + "socket:typee": 4, + "brand:wikidata": 1, + "name": 1, + "payment:app": 1, + "socket:chademo": 4, + "socket:type1_combo": 1, + "bicycle": 2, + "note": 1, + "electric_scooter": 1, + "lockable": 2, + "socket": 2, + "moped": 1, + "authentication:none": 5, + "operator:email": 5, + "operator:phone": 5, + "owner:ref:FR:SIREN": 3, + "payment:credit_cards": 5, + "reservation": 5, + "socket:type2_combo": 5, + "socket:type2_combo:output": 2, + "start_date": 5, + "station_deux_roues": 3, + "wheelchair": 3 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 1.25, + 45.8333 + ] + }, + "properties": { + "name": "Limoges", + "totalCount": 11, + "totalCapacity": 32, + "threshold": 4, + "tags": { + "amenity": 11, + "motorcar": 6, + "operator": 6, + "socket:chademo": 1, + "socket:type2": 4, + "capacity": 9, + "note": 2, + "layer": 1, + "colour": 1, + "socket:type3c": 1, + "socket:typee": 1, + "source": 1, + "covered": 5, + "fee": 5, + "opening_hours": 5, + "parking:fee": 5, + "authentication:app": 3, + "authentication:contactless": 3, + "bicycle": 3, + "charge": 3, + "charging_station:output": 3, + "socket:type2_combo": 3 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -0.5632, + 47.4785 + ] + }, + "properties": { + "name": "Angers", + "totalCount": 33, + "totalCapacity": 66, + "threshold": 4, + "tags": { + "amenity": 33, + "amperage": 6, + "authentication:membership_card": 8, + "capacity": 27, + "fee": 12, + "motorcar": 20, + "name": 15, + "network": 10, + "network:website": 6, + "opening_hours": 10, + "operator": 29, + "owner": 8, + "payment:cb": 8, + "payment:contactless": 9, + "payment:visa": 6, + "ref:EU:EVSE": 8, + "socket:type2": 20, + "socket:typee": 10, + "website": 6, + "socket:type3": 1, + "authentication:nfc": 2, + "bicycle": 2, + "socket:type2:output": 2, + "access": 1, + "note": 1, + "payment:app": 1, + "socket:type2_combo": 2, + "socket:type2_combo:output": 2, + "brand": 4, + "brand:wikidata": 4, + "operator:wikidata": 4, + "short_name": 1, + "authentication:none": 2, + "operator:email": 2, + "operator:phone": 2, + "payment:credit_cards": 2, + "source": 2, + "start_date": 2, + "wheelchair": 2 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -2.7795, + 47.7479 + ] + }, + "properties": { + "name": "Lorient", + "totalCount": 3, + "totalCapacity": 2, + "threshold": 4, + "tags": { + "amenity": 3, + "capacity": 1, + "fee": 3, + "motorcar": 1, + "network": 3, + "opening_hours": 3, + "operator": 3, + "owner": 1, + "ref:EU:EVSE": 1, + "socket:type2": 3, + "socket:typee": 3, + "source": 1, + "authentication:none": 2, + "email": 2, + "phone": 2, + "ref": 1, + "reservation": 2, + "socket:type2_cable": 1, + "start_date": 2, + "owner:ref:FR:SIREN": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -2.2133, + 47.2862 + ] + }, + "properties": { + "name": "Saint-Nazaire", + "totalCount": 9, + "totalCapacity": 102, + "threshold": 4, + "tags": { + "amenity": 9, + "authentication:none": 2, + "capacity": 8, + "email": 2, + "fee": 3, + "motorcar": 3, + "network": 3, + "opening_hours": 3, + "operator": 7, + "operator:email": 3, + "operator:phone": 3, + "owner": 4, + "payment:credit_cards": 2, + "ref:EU:EVSE": 3, + "socket:type2": 3, + "socket:typee": 1, + "start_date": 3, + "wheelchair": 1, + "name": 4, + "operator:wikidata": 3, + "operator:wikipedia": 2, + "brand": 1, + "brand:wikidata": 1, + "source": 2, + "fixme": 1, + "socket:chademo": 1, + "socket:type2_combo": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -2.0155, + 48.6455 + ] + }, + "properties": { + "name": "Saint-Malo", + "totalCount": 18, + "totalCapacity": 52, + "threshold": 4, + "tags": { + "access": 1, + "amenity": 18, + "bicycle": 1, + "bus": 1, + "capacity": 15, + "fee": 11, + "hgv": 1, + "motorcar": 9, + "network": 10, + "opening_hours": 15, + "operator": 16, + "payment:app": 1, + "payment:cards": 1, + "payment:cash": 1, + "payment:membership_card": 1, + "payment:qr_code": 1, + "scooter": 1, + "socket:type2": 8, + "socket:typee": 5, + "authentication:membership_card": 7, + "authentication:nfc": 7, + "ref:FR:SDE35": 6, + "source": 7, + "start_date": 14, + "authentication:none": 9, + "email": 4, + "owner": 2, + "payment:credit_cards": 7, + "phone": 3, + "ref:EU:EVSE": 8, + "fixme": 1, + "manufacturer": 1, + "ref": 5, + "reservation": 7, + "socket:type2_cable": 1, + "charging_station:output": 5, + "description": 5, + "operator:email": 5, + "operator:phone": 5, + "owner:ref:FR:SIREN": 4, + "socket:type2_combo": 5, + "socket:type2_combo:output": 5, + "socket:chademo": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 1.0833, + 49.3833 + ] + }, + "properties": { + "name": "Saint-Étienne-du-Rouvray", + "totalCount": 14, + "totalCapacity": 62, + "threshold": 4, + "tags": { + "addr:city": 2, + "addr:postcode": 2, + "addr:street": 2, + "amenity": 14, + "capacity": 13, + "charging_station:output": 13, + "email": 5, + "fee": 13, + "motorcar": 5, + "network": 12, + "ogr_type_c": 1, + "opening_hours": 14, + "operator": 11, + "owner": 4, + "payment:credit_cards": 7, + "phone": 2, + "ref": 5, + "ref:EU:EVSE": 12, + "socket:chademo": 1, + "socket:type2": 13, + "socket:type2_combo": 4, + "socket:type2_combo:output": 5, + "socket:type3": 2, + "source": 5, + "access": 2, + "addr:country": 1, + "authentication:none": 7, + "brand": 1, + "brand:wikidata": 1, + "charge": 1, + "height": 1, + "man_made": 1, + "mapillary": 1, + "name": 3, + "operator:email": 11, + "operator:phone": 8, + "operator:wikidata": 3, + "operator:wikipedia": 1, + "owner:ref:FR:SIREN": 3, + "ref:FR:ANFR": 1, + "short_name": 1, + "socket:tesla_supercharger": 1, + "socket:tesla_supercharger:output": 1, + "socket:tesla_supercharger_ccs": 1, + "socket:tesla_supercharger_ccs:output": 1, + "start_date": 11, + "tower:type": 1, + "website": 1, + "wheelchair": 8, + "capacity:beds": 1, + "socket:schuko": 1, + "description": 7, + "socket:typee": 6, + "covered": 1, + "reservation": 8, + "socket:type2_cable": 1 + } + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 2.8833, + 49.8333 + ] + }, + "properties": { + "name": "Saint-Quentin", + "totalCount": 0, + "totalCapacity": 0, + "threshold": 4, + "tags": {} + } + } + ] +} \ No newline at end of file diff --git a/js/irve_totaux_par_ville.csv b/js/irve_totaux_par_ville.csv new file mode 100644 index 0000000..42becb9 --- /dev/null +++ b/js/irve_totaux_par_ville.csv @@ -0,0 +1,38 @@ +Ville,Nombre total de bornes,Capacité totale +Paris,850,2643 +Marseille,152,329 +Lyon,335,663 +Toulouse,174,531 +Nice,58,102 +Nantes,67,232 +Montpellier,125,280 +Strasbourg,165,265 +Bordeaux,104,426 +Lille,145,609 +Rennes,86,201 +Reims,57,88 +Le Havre,89,171 +Saint-Étienne,64,105 +Toulon,31,56 +Rouen,98,275 +Ajaccio,10,14 +Saint-Denis,9,7 +Brest,22,62 +Cergy,25,38 +Évry,10,44 +Saint-Quentin-en-Yvelines,20,28 +Marne-la-Vallée,27,54 +Melun-Sénart,9,24 +Dieppe,21,82 +Le Mans,8,47 +Orléans,44,99 +Nîmes,30,80 +Aix-en-Provence,23,49 +Tours,27,137 +Limoges,11,32 +Angers,33,66 +Lorient,3,2 +Saint-Nazaire,9,102 +Saint-Malo,18,52 +Saint-Étienne-du-Rouvray,14,62 +Saint-Quentin,0,0 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index fe431c3..195b498 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,9 @@ "name": "libre-charge-map", "version": "0.5.0", "dependencies": { + "@turf/turf": "^7.2.0", "cheerio": "^1.0.0", + "geojson": "^0.5.0", "node-fetch": "^3.3.2", "sass": "^1.87.0" }, @@ -2661,6 +2663,2033 @@ "node": ">= 6" } }, + "node_modules/@turf/along": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-7.2.0.tgz", + "integrity": "sha512-Cf+d2LozABdb0TJoIcJwFKB+qisJY4nMUW9z6PAuZ9UCH7AR//hy2Z06vwYCKFZKP4a7DRPkOMBadQABCyoYuw==", + "license": "MIT", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/angle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-7.2.0.tgz", + "integrity": "sha512-b28rs1NO8Dt/MXadFhnpqH7GnEWRsl+xF5JeFtg9+eM/+l/zGrdliPYMZtAj12xn33w22J1X4TRprAI0rruvVQ==", + "license": "MIT", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/area": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.2.0.tgz", + "integrity": "sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.2.0.tgz", + "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox-clip": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-7.2.0.tgz", + "integrity": "sha512-q6RXTpqeUQAYLAieUL1n3J6ukRGsNVDOqcYtfzaJbPW+0VsAf+1cI16sN700t0sekbeU1DH/RRVAHhpf8+36wA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.2.0.tgz", + "integrity": "sha512-Aj4G1GAAy26fmOqMjUk0Z+Lcax5VQ9g1xYDbHLQWXvfTsaueBT+RzdH6XPnZ/seEEnZkio2IxE8V5af/osupgA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bearing": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-7.2.0.tgz", + "integrity": "sha512-Jm0Xt3GgHjRrWvBtAGvgfnADLm+4exud2pRlmCYx8zfiKuNXQFkrcTZcOiJOgTfG20Agq28iSh15uta47jSIbg==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bezier-spline": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-7.2.0.tgz", + "integrity": "sha512-7BPkc3ufYB9KLvcaTpTsnpXzh9DZoENxCS0Ms9XUwuRXw45TpevwUpOsa3atO76iKQ5puHntqFO4zs8IUxBaaA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-clockwise": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-7.2.0.tgz", + "integrity": "sha512-0fJeFSARxy6ealGBM4Gmgpa1o8msQF87p2Dx5V6uSqzT8VPDegX1NSWl4b7QgXczYa9qv7IAABttdWP0K7Q7eQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-concave": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-concave/-/boolean-concave-7.2.0.tgz", + "integrity": "sha512-v3dTN04dfO6VqctQj1a+pjDHb6+/Ev90oAR2QjJuAntY4ubhhr7vKeJdk/w+tWNSMKULnYwfe65Du3EOu3/TeA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-contains": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-7.2.0.tgz", + "integrity": "sha512-dgRQm4uVO5XuLee4PLVH7CFQZKdefUBMIXTPITm2oRIDmPLJKHDOFKQTNkGJ73mDKKBR2lmt6eVH3br6OYrEYg==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-crosses": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-7.2.0.tgz", + "integrity": "sha512-9GyM4UUWFKQOoNhHVSfJBf5XbPy8Fxfz9djjJNAnm/IOl8NmFUSwFPAjKlpiMcr6yuaAoc9R/1KokS9/eLqPvA==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-disjoint": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-7.2.0.tgz", + "integrity": "sha512-xdz+pYKkLMuqkNeJ6EF/3OdAiJdiHhcHCV0ykX33NIuALKIEpKik0+NdxxNsZsivOW6keKwr61SI+gcVtHYcnQ==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-equal": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-7.2.0.tgz", + "integrity": "sha512-TmjKYLsxXqEmdDtFq3QgX4aSogiISp3/doeEtDOs3NNSR8susOtBEZkmvwO6DLW+g/rgoQJIBR6iVoWiRqkBxw==", + "license": "MIT", + "dependencies": { + "@turf/clean-coords": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-intersects": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-7.2.0.tgz", + "integrity": "sha512-GLRyLQgK3F14drkK5Qi9Mv7Z9VT1bgQUd9a3DB3DACTZWDSwfh8YZUFn/HBwRkK8dDdgNEXaavggQHcPi1k9ow==", + "license": "MIT", + "dependencies": { + "@turf/boolean-disjoint": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-overlap": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-7.2.0.tgz", + "integrity": "sha512-ieM5qIE4anO+gUHIOvEN7CjyowF+kQ6v20/oNYJCp63TVS6eGMkwgd+I4uMzBXfVW66nVHIXjODdUelU+Xyctw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/line-overlap": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-parallel": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-7.2.0.tgz", + "integrity": "sha512-iOtuzzff8nmwv05ROkSvyeGLMrfdGkIi+3hyQ+DH4IVyV37vQbqR5oOJ0Nt3Qq1Tjrq9fvF8G3OMdAv3W2kY9w==", + "license": "MIT", + "dependencies": { + "@turf/clean-coords": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-point-in-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.2.0.tgz", + "integrity": "sha512-lvEOjxeXIp+wPXgl9kJA97dqzMfNexjqHou+XHVcfxQgolctoJiRYmcVCWGpiZ9CBf/CJha1KmD1qQoRIsjLaA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "point-in-polygon-hao": "^1.1.0", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-point-on-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-7.2.0.tgz", + "integrity": "sha512-H/bXX8+2VYeSyH8JWrOsu8OGmeA9KVZfM7M6U5/fSqGsRHXo9MyYJ94k39A9kcKSwI0aWiMXVD2UFmiWy8423Q==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-touches": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-touches/-/boolean-touches-7.2.0.tgz", + "integrity": "sha512-8qb1CO+cwFATGRGFgTRjzL9aibfsbI91pdiRl7KIEkVdeN/H9k8FDrUA1neY7Yq48IaciuwqjbbojQ16FD9b0w==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-valid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-valid/-/boolean-valid-7.2.0.tgz", + "integrity": "sha512-xb7gdHN8VV6ivPJh6rPpgxmAEGReiRxqY+QZoEZVGpW2dXcmU1BdY6FA6G/cwvggXAXxJBREoANtEDgp/0ySbA==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-crosses": "^7.2.0", + "@turf/boolean-disjoint": "^7.2.0", + "@turf/boolean-overlap": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@types/geojson": "^7946.0.10", + "geojson-polygon-self-intersections": "^1.2.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-within": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-7.2.0.tgz", + "integrity": "sha512-zB3AiF59zQZ27Dp1iyhp9mVAKOFHat8RDH45TZhLY8EaqdEPdmLGvwMFCKfLryQcUDQvmzP8xWbtUR82QM5C4g==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/buffer": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-7.2.0.tgz", + "integrity": "sha512-QH1FTr5Mk4z1kpQNztMD8XBOZfpOXPOtlsxaSAj2kDIf5+LquA6HtJjZrjUngnGtzG5+XwcfyRL4ImvLnFjm5Q==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/jsts": "^2.7.1", + "@turf/meta": "^7.2.0", + "@turf/projection": "^7.2.0", + "@types/geojson": "^7946.0.10", + "d3-geo": "1.7.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.2.0.tgz", + "integrity": "sha512-UTNp9abQ2kuyRg5gCIGDNwwEQeF3NbpYsd1Q0KW9lwWuzbLVNn0sOwbxjpNF4J2HtMOs5YVOcqNvYyuoa2XrXw==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-mean": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-7.2.0.tgz", + "integrity": "sha512-NaW6IowAooTJ35O198Jw3U4diZ6UZCCeJY+4E+WMLpks3FCxMDSHEfO2QjyOXQMGWZnVxVelqI5x9DdniDbQ+A==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-median": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-7.2.0.tgz", + "integrity": "sha512-/CgVyHNG4zAoZpvkl7qBCe4w7giWNVtLyTU5PoIfg1vWM4VpYw+N7kcBBH46bbzvVBn0vhmZr586r543EwdC/A==", + "license": "MIT", + "dependencies": { + "@turf/center-mean": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-of-mass": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-7.2.0.tgz", + "integrity": "sha512-ij3pmG61WQPHGTQvOziPOdIgwTMegkYTwIc71Gl7xn4C0vWH6KLDSshCphds9xdWSXt2GbHpUs3tr4XGntHkEQ==", + "license": "MIT", + "dependencies": { + "@turf/centroid": "^7.2.0", + "@turf/convex": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/centroid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.2.0.tgz", + "integrity": "sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/circle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-7.2.0.tgz", + "integrity": "sha512-1AbqBYtXhstrHmnW6jhLwsv7TtmT0mW58Hvl1uZXEDM1NCVXIR50yDipIeQPjrCuJ/Zdg/91gU8+4GuDCAxBGA==", + "license": "MIT", + "dependencies": { + "@turf/destination": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clean-coords": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.2.0.tgz", + "integrity": "sha512-+5+J1+D7wW7O/RDXn46IfCHuX1gIV1pIAQNSA7lcDbr3HQITZj334C4mOGZLEcGbsiXtlHWZiBtm785Vg8i+QQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clone": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.2.0.tgz", + "integrity": "sha512-JlGUT+/5qoU5jqZmf6NMFIoLDY3O7jKd53Up+zbpJ2vzUp6QdwdNzwrsCeONhynWM13F0MVtPXH4AtdkrgFk4g==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-7.2.0.tgz", + "integrity": "sha512-sKOrIKHHtXAuTKNm2USnEct+6/MrgyzMW42deZ2YG2RRKWGaaxHMFU2Yw71Yk4DqStOqTIBQpIOdrRuSOwbuQw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters-dbscan": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-7.2.0.tgz", + "integrity": "sha512-VWVUuDreev56g3/BMlnq/81yzczqaz+NVTypN5CigGgP67e+u/CnijphiuhKjtjDd/MzGjXgEWBJc26Y6LYKAw==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters-kmeans": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-7.2.0.tgz", + "integrity": "sha512-BxQdK8jc8Mwm9yoClCYkktm4W004uiQGqb/i/6Y7a8xqgJITWDgTu/cy//wOxAWPk4xfe6MThjnqkszWW8JdyQ==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "skmeans": "0.9.7", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/collect": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-7.2.0.tgz", + "integrity": "sha512-zRVGDlYS8Bx/Zz4vnEUyRg4dmqHhkDbW/nIUIJh657YqaMj1SFi4Iv2i9NbcurlUBDJFkpuOhCvvEvAdskJ8UA==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/combine": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-7.2.0.tgz", + "integrity": "sha512-VEjm3IvnbMt3IgeRIhCDhhQDbLqCU1/5uN1+j1u6fyA095pCizPThGp4f/COSzC3t1s/iiV+fHuDsB6DihHffQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/concave": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-7.2.0.tgz", + "integrity": "sha512-cpaDDlumK762kdadexw5ZAB6g/h2pJdihZ+e65lbQVe3WukJHAANnIEeKsdFCuIyNKrwTz2gWu5ws+OpjP48Yw==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/tin": "^7.2.0", + "@types/geojson": "^7946.0.10", + "topojson-client": "3.x", + "topojson-server": "3.x", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/convex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-7.2.0.tgz", + "integrity": "sha512-HsgHm+zHRE8yPCE/jBUtWFyaaBmpXcSlyHd5/xsMhSZRImFzRzBibaONWQo7xbKZMISC3Nc6BtUjDi/jEVbqyA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "concaveman": "^1.2.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/destination": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-7.2.0.tgz", + "integrity": "sha512-8DUxtOO0Fvrh1xclIUj3d9C5WS20D21F5E+j+X9Q+ju6fcM4huOqTg5ckV1DN2Pg8caABEc5HEZJnGch/5YnYQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/difference": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-7.2.0.tgz", + "integrity": "sha512-NHKD1v3s8RX+9lOpvHJg6xRuJOKiY3qxHhz5/FmE0VgGqnCkE7OObqWZ5SsXG+Ckh0aafs5qKhmDdDV/gGi6JA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/dissolve": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-7.2.0.tgz", + "integrity": "sha512-gPG5TE3mAYuZqBut8tPYCKwi4hhx5Cq0ALoQMB9X0hrVtFIKrihrsj98XQM/5pL/UIpAxQfwisQvy6XaOFaoPA==", + "license": "MIT", + "dependencies": { + "@turf/flatten": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.2.0.tgz", + "integrity": "sha512-HBjjXIgEcD/wJYjv7/6OZj5yoky2oUvTtVeIAqO3lL80XRvoYmVg6vkOIu6NswkerwLDDNT9kl7+BFLJoHbh6Q==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/distance-weight": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-7.2.0.tgz", + "integrity": "sha512-NeoyV0fXDH+7nIoNtLjAoH9XL0AS1pmTIyDxEE6LryoDTsqjnuR0YQxIkLCCWDqECoqaOmmBqpeWONjX5BwWCg==", + "license": "MIT", + "dependencies": { + "@turf/centroid": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/ellipse": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-7.2.0.tgz", + "integrity": "sha512-/Y75S5hE2+xjnTw4dXpQ5r/Y2HPM4xrwkPRCCQRpuuboKdEvm42azYmh7isPnMnBTVcmGb9UmGKj0HHAbiwt1g==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/transform-rotate": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/envelope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-7.2.0.tgz", + "integrity": "sha512-xOMtDeNKHwUuDfzQeoSNmdabsP0/IgVDeyzitDe/8j9wTeW+MrKzVbGz7627PT3h6gsO+2nUv5asfKtUbmTyHA==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/explode": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-7.2.0.tgz", + "integrity": "sha512-jyMXg93J1OI7/65SsLE1k9dfQD3JbcPNMi4/O3QR2Qb3BAs2039oFaSjtW+YqhMqVC4V3ZeKebMcJ8h9sK1n+A==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/flatten": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-7.2.0.tgz", + "integrity": "sha512-q38Qsqr4l7mxp780zSdn0gp/WLBX+sa+gV6qIbDQ1HKCrrPK8QQJmNx7gk1xxEXVot6tq/WyAPysCQdX+kLmMA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/flip": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-7.2.0.tgz", + "integrity": "sha512-X0TQ0U/UYh4tyXdLO5itP1sO2HOvfrZC0fYSWmTfLDM14jEPkEK8PblofznfBygL+pIFtOS2is8FuVcp5XxYpQ==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/geojson-rbush": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/geojson-rbush/-/geojson-rbush-7.2.0.tgz", + "integrity": "sha512-ST8fLv+EwxVkDgsmhHggM0sPk2SfOHTZJkdgMXVFT7gB9o4lF8qk4y4lwvCCGIfFQAp2yv/PN5EaGMEKutk6xw==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/great-circle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.2.0.tgz", + "integrity": "sha512-n30OiADyOKHhor0aXNgYfXQYXO3UtsOKmhQsY1D89/Oh1nCIXG/1ZPlLL9ZoaRXXBTUBjh99a+K8029NQbGDhw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/helpers": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", + "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/hex-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-7.2.0.tgz", + "integrity": "sha512-Yo2yUGxrTCQfmcVsSjDt0G3Veg8YD26WRd7etVPD9eirNNgXrIyZkbYA7zVV/qLeRWVmYIKRXg1USWl7ORQOGA==", + "license": "MIT", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/intersect": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/interpolate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-7.2.0.tgz", + "integrity": "sha512-Ifgjm1SEo6XujuSAU6lpRMvoJ1SYTreil1Rf5WsaXj16BQJCedht/4FtWCTNhSWTwEz2motQ1WNrjTCuPG94xA==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/hex-grid": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/point-grid": "^7.2.0", + "@turf/square-grid": "^7.2.0", + "@turf/triangle-grid": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/intersect": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-7.2.0.tgz", + "integrity": "sha512-81GMzKS9pKqLPa61qSlFxLFeAC8XbwyCQ9Qv4z6o5skWk1qmMUbEHeMqaGUTEzk+q2XyhZ0sju1FV4iLevQ/aw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/invariant": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.2.0.tgz", + "integrity": "sha512-kV4u8e7Gkpq+kPbAKNC21CmyrXzlbBgFjO1PhrHPgEdNqXqDawoZ3i6ivE3ULJj2rSesCjduUaC/wyvH/sNr2Q==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/isobands": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-7.2.0.tgz", + "integrity": "sha512-lYoHeRieFzpBp29Jh19QcDIb0E+dzo/K5uwZuNga4wxr6heNU0AfkD4ByAHYIXHtvmp4m/JpSKq/2N6h/zvBkg==", + "license": "MIT", + "dependencies": { + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "marchingsquares": "^1.3.3", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/isolines": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-7.2.0.tgz", + "integrity": "sha512-4ZXKxvA/JKkxAXixXhN3UVza5FABsdYgOWXyYm3L5ryTPJVOYTVSSd9A+CAVlv9dZc3YdlsqMqLTXNOOre/kwg==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "marchingsquares": "^1.3.3", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/jsts": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@turf/jsts/-/jsts-2.7.2.tgz", + "integrity": "sha512-zAezGlwWHPyU0zxwcX2wQY3RkRpwuoBmhhNE9HY9kWhFDkCxZ3aWK5URKwa/SWKJbj9aztO+8vtdiBA28KVJFg==", + "license": "(EDL-1.0 OR EPL-1.0)", + "dependencies": { + "jsts": "2.7.1" + } + }, + "node_modules/@turf/kinks": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-7.2.0.tgz", + "integrity": "sha512-BtxDxGewJR0Q5WR9HKBSxZhirFX+GEH1rD7/EvgDsHS8e1Y5/vNQQUmXdURjdPa4StzaUBsWRU5T3A356gLbPA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/length": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-7.2.0.tgz", + "integrity": "sha512-LBmYN+iCgVtWNLsckVnpQIJENqIIPO63mogazMp23lrDGfWXu07zZQ9ZinJVO5xYurXNhc/QI2xxoqt2Xw90Ig==", + "license": "MIT", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-arc": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-7.2.0.tgz", + "integrity": "sha512-kfWzA5oYrTpslTg5fN50G04zSypiYQzjZv3FLjbZkk6kta5fo4JkERKjTeA8x4XNojb+pfmjMBB0yIh2w2dDRw==", + "license": "MIT", + "dependencies": { + "@turf/circle": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-chunk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-7.2.0.tgz", + "integrity": "sha512-1ODyL5gETtWSL85MPI0lgp/78vl95M39gpeBxePXyDIqx8geDP9kXfAzctuKdxBoR4JmOVM3NT7Fz7h+IEkC+g==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/length": "^7.2.0", + "@turf/line-slice-along": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-intersect": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-7.2.0.tgz", + "integrity": "sha512-GhCJVEkc8EmggNi85EuVLoXF5T5jNVxmhIetwppiVyJzMrwkYAkZSYB3IBFYGUUB9qiNFnTwungVSsBV/S8ZiA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "sweepline-intersections": "^1.5.0", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-offset": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-7.2.0.tgz", + "integrity": "sha512-1+OkYueDCbnEWzbfBh3taVr+3SyM2bal5jfnSEuDiLA6jnlScgr8tn3INo+zwrUkPFZPPAejL1swVyO5TjUahw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-overlap": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-7.2.0.tgz", + "integrity": "sha512-NNn7/jg53+N10q2Kyt66bEDqN3101iW/1zA5FW7J6UbKApDFkByh+18YZq1of71kS6oUYplP86WkDp16LFpqqw==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/geojson-rbush": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "fast-deep-equal": "^3.1.3", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-segment": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-7.2.0.tgz", + "integrity": "sha512-E162rmTF9XjVN4rINJCd15AdQGCBlNqeWN3V0YI1vOUpZFNT2ii4SqEMCcH2d+5EheHLL8BWVwZoOsvHZbvaWA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-slice": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-7.2.0.tgz", + "integrity": "sha512-bHotzZIaU1GPV3RMwttYpDrmcvb3X2i1g/WUttPZWtKrEo2VVAkoYdeZ2aFwtogERYS4quFdJ/TDzAtquBC8WQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-slice-along": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-7.2.0.tgz", + "integrity": "sha512-4/gPgP0j5Rp+1prbhXqn7kIH/uZTmSgiubUnn67F8nb9zE+MhbRglhSlRYEZxAVkB7VrGwjyolCwvrROhjHp2A==", + "license": "MIT", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-split": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-7.2.0.tgz", + "integrity": "sha512-yJTZR+c8CwoKqdW/aIs+iLbuFwAa3Yan+EOADFQuXXIUGps3bJUXx/38rmowNoZbHyP1np1+OtrotyHu5uBsfQ==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/geojson-rbush": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@turf/square": "^7.2.0", + "@turf/truncate": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-to-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-7.2.0.tgz", + "integrity": "sha512-iKpJqc7EYc5NvlD4KaqrKKO6mXR7YWO/YwtW60E2FnsF/blnsy9OfAOcilYHgH3S/V/TT0VedC7DW7Kgjy2EIA==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/mask": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-7.2.0.tgz", + "integrity": "sha512-ulJ6dQqXC0wrjIoqFViXuMUdIPX5Q6GPViZ3kGfeVijvlLM7kTFBsZiPQwALSr5nTQg4Ppf3FD0Jmg8IErPrgA==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/meta": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.2.0.tgz", + "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/midpoint": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-7.2.0.tgz", + "integrity": "sha512-AMn5S9aSrbXdE+Q4Rj+T5nLdpfpn+mfzqIaEKkYI021HC0vb22HyhQHsQbSeX+AWcS4CjD1hFsYVcgKI+5qCfw==", + "license": "MIT", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/moran-index": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-7.2.0.tgz", + "integrity": "sha512-Aexh1EmXVPJhApr9grrd120vbalIthcIsQ3OAN2Tqwf+eExHXArJEJqGBo9IZiQbIpFJeftt/OvUvlI8BeO1bA==", + "license": "MIT", + "dependencies": { + "@turf/distance-weight": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-neighbor-analysis": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-neighbor-analysis/-/nearest-neighbor-analysis-7.2.0.tgz", + "integrity": "sha512-LmP/crXb7gilgsL0wL9hsygqc537W/a1W5r9XBKJT4SKdqjoXX5APJatJfd3nwXbRIqwDH0cDA9/YyFjBPlKnA==", + "license": "MIT", + "dependencies": { + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-7.2.0.tgz", + "integrity": "sha512-0wmsqXZ8CGw4QKeZmS+NdjYTqCMC+HXZvM3XAQIU6k6laNLqjad2oS4nDrtcRs/nWDvcj1CR+Io7OiQ6sbpn5Q==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point-on-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.2.0.tgz", + "integrity": "sha512-UOhAeoDPVewBQV+PWg1YTMQcYpJsIqfW5+EuZ5vJl60XwUa0+kqB/eVfSLNXmHENjKKIlEt9Oy9HIDF4VeWmXA==", + "license": "MIT", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point-to-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-7.2.0.tgz", + "integrity": "sha512-EorU7Qj30A7nAjh++KF/eTPDlzwuuV4neBz7tmSTB21HKuXZAR0upJsx6M2X1CSyGEgNsbFB0ivNKIvymRTKBw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/point-to-line-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/planepoint": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-7.2.0.tgz", + "integrity": "sha512-8Vno01tvi5gThUEKBQ46CmlEKDAwVpkl7stOPFvJYlA1oywjAL4PsmgwjXgleZuFtXQUPBNgv5a42Pf438XP4g==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-7.2.0.tgz", + "integrity": "sha512-ai7lwBV2FREPW3XiUNohT4opC1hd6+F56qZe20xYhCTkTD9diWjXHiNudQPSmVAUjgMzQGasblQQqvOdL+bJ3Q==", + "license": "MIT", + "dependencies": { + "@turf/boolean-within": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-on-feature": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-7.2.0.tgz", + "integrity": "sha512-ksoYoLO9WtJ/qI8VI9ltF+2ZjLWrAjZNsCsu8F7nyGeCh4I8opjf4qVLytFG44XA2qI5yc6iXDpyv0sshvP82Q==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-7.2.0.tgz", + "integrity": "sha512-fB9Rdnb5w5+t76Gho2dYDkGe20eRrFk8CXi4v1+l1PC8YyLXO+x+l3TrtT8HzL/dVaZeepO6WUIsIw3ditTOPg==", + "license": "MIT", + "dependencies": { + "@turf/bearing": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@turf/projection": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-polygon-distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/point-to-polygon-distance/-/point-to-polygon-distance-7.2.0.tgz", + "integrity": "sha512-w+WYuINgTiFjoZemQwOaQSje/8Kq+uqJOynvx7+gleQPHyWQ3VtTodtV4LwzVzXz8Sf7Mngx1Jcp2SNai5CJYA==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/point-to-line-distance": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/points-within-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-7.2.0.tgz", + "integrity": "sha512-jRKp8/mWNMzA+hKlQhxci97H5nOio9tp14R2SzpvkOt+cswxl+NqTEi1hDd2XetA7tjU0TSoNjEgVY8FfA0S6w==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-smooth": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-7.2.0.tgz", + "integrity": "sha512-KCp9wF2IEynvGXVhySR8oQ2razKP0zwg99K+fuClP21pSKCFjAPaihPEYq6e8uI/1J7ibjL5++6EMl+LrUTrLg==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-tangents": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-7.2.0.tgz", + "integrity": "sha512-AHUUPmOjiQDrtP/ODXukHBlUG0C/9I1je7zz50OTfl2ZDOdEqFJQC3RyNELwq07grTXZvg5TS5wYx/Y7nsm47g==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/boolean-within": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-to-line": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.2.0.tgz", + "integrity": "sha512-9jeTN3LiJ933I5sd4K0kwkcivOYXXm1emk0dHorwXeSFSHF+nlYesEW3Hd889wb9lZd7/SVLMUeX/h39mX+vCA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygonize": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-7.2.0.tgz", + "integrity": "sha512-U9v+lBhUPDv+nsg/VcScdiqCB59afO6CHDGrwIl2+5i6Ve+/KQKjpTV/R+NqoC1iMXAEq3brY6HY8Ukp/pUWng==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/envelope": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/projection": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-7.2.0.tgz", + "integrity": "sha512-/qke5vJScv8Mu7a+fU3RSChBRijE6EVuFHU3RYihMuYm04Vw8dBMIs0enEpoq0ke/IjSbleIrGQNZIMRX9EwZQ==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/quadrat-analysis": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/quadrat-analysis/-/quadrat-analysis-7.2.0.tgz", + "integrity": "sha512-fDQh3+ldYNxUqS6QYlvJ7GZLlCeDZR6tD3ikdYtOsSemwW1n/4gm2xcgWJqy3Y0uszBwxc13IGGY7NGEjHA+0w==", + "license": "MIT", + "dependencies": { + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/point-grid": "^7.2.0", + "@turf/random": "^7.2.0", + "@turf/square-grid": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/random": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.2.0.tgz", + "integrity": "sha512-fNXs5mOeXsrirliw84S8UCNkpm4RMNbefPNsuCTfZEXhcr1MuHMzq4JWKb4FweMdN1Yx2l/xcytkO0s71cJ50w==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rectangle-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-7.2.0.tgz", + "integrity": "sha512-f0o5ifvy0Ml/nHDJzMNcuSk4h11aa3BfvQNnYQhLpuTQu03j/ICZNlzKTLxwjcUqvxADUifty7Z9CX5W6zky4A==", + "license": "MIT", + "dependencies": { + "@turf/boolean-intersects": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rewind": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-7.2.0.tgz", + "integrity": "sha512-SZpRAZiZsE22+HVz6pEID+ST25vOdpAMGk5NO1JeqzhpMALIkIGnkG+xnun2CfYHz7wv8/Z0ADiAvei9rkcQYA==", + "license": "MIT", + "dependencies": { + "@turf/boolean-clockwise": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-bearing": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-7.2.0.tgz", + "integrity": "sha512-jbdexlrR8X2ZauUciHx3tRwG+BXoMXke4B8p8/IgDlAfIrVdzAxSQN89FMzIKnjJ/kdLjo9bFGvb92bu31Etug==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-destination": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-7.2.0.tgz", + "integrity": "sha512-U9OLgLAHlH4Wfx3fBZf3jvnkDjdTcfRan5eI7VPV1+fQWkOteATpzkiRjCvSYK575GljVwWBjkKca8LziGWitQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-distance": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-7.2.0.tgz", + "integrity": "sha512-NsijTPON1yOc9tirRPEQQuJ5aQi7pREsqchQquaYKbHNWsexZjcDi4wnw2kM3Si4XjmgynT+2f7aXH7FHarHzw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/sample": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-7.2.0.tgz", + "integrity": "sha512-f+ZbcbQJ9glQ/F26re8LadxO0ORafy298EJZe6XtbctRTJrNus6UNAsl8+GYXFqMnXM22tbTAznnJX3ZiWNorA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/sector": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-7.2.0.tgz", + "integrity": "sha512-zL06MjbbMG4DdpiNz+Q9Ax8jsCekt3R76uxeWShulAGkyDB5smdBOUDoRwxn05UX7l4kKv4Ucq2imQXhxKFd1w==", + "license": "MIT", + "dependencies": { + "@turf/circle": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/line-arc": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/shortest-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-7.2.0.tgz", + "integrity": "sha512-6fpx8feZ2jMSaeRaFdqFShGWkNb+veUOeyLFSHA/aRD9n/e9F2pWZoRbQWKbKTpcKFJ2FnDEqCZnh/GrcAsqWA==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/clean-coords": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/transform-scale": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/simplify": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-7.2.0.tgz", + "integrity": "sha512-9YHIfSc8BXQfi5IvEMbCeQYqNch0UawIGwbboJaoV8rodhtk6kKV2wrpXdGqk/6Thg6/RWvChJFKVVTjVrULyQ==", + "license": "MIT", + "dependencies": { + "@turf/clean-coords": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/square": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/square/-/square-7.2.0.tgz", + "integrity": "sha512-9pMoAGFvqzCDOlO9IRSSBCGXKbl8EwMx6xRRBMKdZgpS0mZgfm9xiptMmx/t1m4qqHIlb/N+3MUF7iMBx6upcA==", + "license": "MIT", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/square-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-7.2.0.tgz", + "integrity": "sha512-EmzGXa90hz+tiCOs9wX+Lak6pH0Vghb7QuX6KZej+pmWi3Yz7vdvQLmy/wuN048+wSkD5c8WUo/kTeNDe7GnmA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/rectangle-grid": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/standard-deviational-ellipse": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-7.2.0.tgz", + "integrity": "sha512-+uC0pR2nRjm90JvMXe/2xOCZsYV2II1ZZ2zmWcBWv6bcFXBspcxk2QfCC3k0bj6jDapELzoQgnn3cG5lbdQV2w==", + "license": "MIT", + "dependencies": { + "@turf/center-mean": "^7.2.0", + "@turf/ellipse": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/points-within-polygon": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/tag": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-7.2.0.tgz", + "integrity": "sha512-TAFvsbp5TCBqXue8ui+CtcLsPZ6NPC88L8Ad6Hb/R6VAi21qe0U42WJHQYXzWmtThoTNwxi+oKSeFbRDsr0FIA==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/tesselate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-7.2.0.tgz", + "integrity": "sha512-zHGcG85aOJJu1seCm+CYTJ3UempX4Xtyt669vFG6Hbr/Hc7ii6STQ2ysFr7lJwFtU9uyYhphVrrgwIqwglvI/Q==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "earcut": "^2.2.4", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/tin": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-7.2.0.tgz", + "integrity": "sha512-y24Vt3oeE6ZXvyLJamP0Ke02rPlDGE9gF7OFADnR0mT+2uectb0UTIBC3kKzON80TEAlA3GXpKFkCW5Fo/O/Kg==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/transform-rotate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-7.2.0.tgz", + "integrity": "sha512-EMCj0Zqy3cF9d3mGRqDlYnX2ZBXe3LgT+piDR0EuF5c5sjuKErcFcaBIsn/lg1gp4xCNZFinkZ3dsFfgGHf6fw==", + "license": "MIT", + "dependencies": { + "@turf/centroid": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/transform-scale": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-7.2.0.tgz", + "integrity": "sha512-HYB+pw938eeI8s1/zSWFy6hq+t38fuUaBb0jJsZB1K9zQ1WjEYpPvKF/0//80zNPlyxLv3cOkeBucso3hzI07A==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/transform-translate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-7.2.0.tgz", + "integrity": "sha512-zAglR8MKCqkzDTjGMIQgbg/f+Q3XcKVzr9cELw5l9CrS1a0VTSDtBZLDm0kWx0ankwtam7ZmI2jXyuQWT8Gbug==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/triangle-grid": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-7.2.0.tgz", + "integrity": "sha512-4gcAqWKh9hg6PC5nNSb9VWyLgl821cwf9yR9yEzQhEFfwYL/pZONBWCO1cwVF23vSYMSMm+/TwqxH4emxaArfw==", + "license": "MIT", + "dependencies": { + "@turf/distance": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/intersect": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/truncate": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-7.2.0.tgz", + "integrity": "sha512-jyFzxYbPugK4XjV5V/k6Xr3taBjjvo210IbPHJXw0Zh7Y6sF+hGxeRVtSuZ9VP/6oRyqAOHKUrze+OOkPqBgUg==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/turf": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-7.2.0.tgz", + "integrity": "sha512-G1kKBu4hYgoNoRJgnpJohNuS7bLnoWHZ2G/4wUMym5xOSiYah6carzdTEsMoTsauyi7ilByWHx5UHwbjjCVcBw==", + "license": "MIT", + "dependencies": { + "@turf/along": "^7.2.0", + "@turf/angle": "^7.2.0", + "@turf/area": "^7.2.0", + "@turf/bbox": "^7.2.0", + "@turf/bbox-clip": "^7.2.0", + "@turf/bbox-polygon": "^7.2.0", + "@turf/bearing": "^7.2.0", + "@turf/bezier-spline": "^7.2.0", + "@turf/boolean-clockwise": "^7.2.0", + "@turf/boolean-concave": "^7.2.0", + "@turf/boolean-contains": "^7.2.0", + "@turf/boolean-crosses": "^7.2.0", + "@turf/boolean-disjoint": "^7.2.0", + "@turf/boolean-equal": "^7.2.0", + "@turf/boolean-intersects": "^7.2.0", + "@turf/boolean-overlap": "^7.2.0", + "@turf/boolean-parallel": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/boolean-point-on-line": "^7.2.0", + "@turf/boolean-touches": "^7.2.0", + "@turf/boolean-valid": "^7.2.0", + "@turf/boolean-within": "^7.2.0", + "@turf/buffer": "^7.2.0", + "@turf/center": "^7.2.0", + "@turf/center-mean": "^7.2.0", + "@turf/center-median": "^7.2.0", + "@turf/center-of-mass": "^7.2.0", + "@turf/centroid": "^7.2.0", + "@turf/circle": "^7.2.0", + "@turf/clean-coords": "^7.2.0", + "@turf/clone": "^7.2.0", + "@turf/clusters": "^7.2.0", + "@turf/clusters-dbscan": "^7.2.0", + "@turf/clusters-kmeans": "^7.2.0", + "@turf/collect": "^7.2.0", + "@turf/combine": "^7.2.0", + "@turf/concave": "^7.2.0", + "@turf/convex": "^7.2.0", + "@turf/destination": "^7.2.0", + "@turf/difference": "^7.2.0", + "@turf/dissolve": "^7.2.0", + "@turf/distance": "^7.2.0", + "@turf/distance-weight": "^7.2.0", + "@turf/ellipse": "^7.2.0", + "@turf/envelope": "^7.2.0", + "@turf/explode": "^7.2.0", + "@turf/flatten": "^7.2.0", + "@turf/flip": "^7.2.0", + "@turf/geojson-rbush": "^7.2.0", + "@turf/great-circle": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/hex-grid": "^7.2.0", + "@turf/interpolate": "^7.2.0", + "@turf/intersect": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@turf/isobands": "^7.2.0", + "@turf/isolines": "^7.2.0", + "@turf/kinks": "^7.2.0", + "@turf/length": "^7.2.0", + "@turf/line-arc": "^7.2.0", + "@turf/line-chunk": "^7.2.0", + "@turf/line-intersect": "^7.2.0", + "@turf/line-offset": "^7.2.0", + "@turf/line-overlap": "^7.2.0", + "@turf/line-segment": "^7.2.0", + "@turf/line-slice": "^7.2.0", + "@turf/line-slice-along": "^7.2.0", + "@turf/line-split": "^7.2.0", + "@turf/line-to-polygon": "^7.2.0", + "@turf/mask": "^7.2.0", + "@turf/meta": "^7.2.0", + "@turf/midpoint": "^7.2.0", + "@turf/moran-index": "^7.2.0", + "@turf/nearest-neighbor-analysis": "^7.2.0", + "@turf/nearest-point": "^7.2.0", + "@turf/nearest-point-on-line": "^7.2.0", + "@turf/nearest-point-to-line": "^7.2.0", + "@turf/planepoint": "^7.2.0", + "@turf/point-grid": "^7.2.0", + "@turf/point-on-feature": "^7.2.0", + "@turf/point-to-line-distance": "^7.2.0", + "@turf/point-to-polygon-distance": "^7.2.0", + "@turf/points-within-polygon": "^7.2.0", + "@turf/polygon-smooth": "^7.2.0", + "@turf/polygon-tangents": "^7.2.0", + "@turf/polygon-to-line": "^7.2.0", + "@turf/polygonize": "^7.2.0", + "@turf/projection": "^7.2.0", + "@turf/quadrat-analysis": "^7.2.0", + "@turf/random": "^7.2.0", + "@turf/rectangle-grid": "^7.2.0", + "@turf/rewind": "^7.2.0", + "@turf/rhumb-bearing": "^7.2.0", + "@turf/rhumb-destination": "^7.2.0", + "@turf/rhumb-distance": "^7.2.0", + "@turf/sample": "^7.2.0", + "@turf/sector": "^7.2.0", + "@turf/shortest-path": "^7.2.0", + "@turf/simplify": "^7.2.0", + "@turf/square": "^7.2.0", + "@turf/square-grid": "^7.2.0", + "@turf/standard-deviational-ellipse": "^7.2.0", + "@turf/tag": "^7.2.0", + "@turf/tesselate": "^7.2.0", + "@turf/tin": "^7.2.0", + "@turf/transform-rotate": "^7.2.0", + "@turf/transform-scale": "^7.2.0", + "@turf/transform-translate": "^7.2.0", + "@turf/triangle-grid": "^7.2.0", + "@turf/truncate": "^7.2.0", + "@turf/union": "^7.2.0", + "@turf/unkink-polygon": "^7.2.0", + "@turf/voronoi": "^7.2.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/union": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/union/-/union-7.2.0.tgz", + "integrity": "sha512-Xex/cfKSmH0RZRWSJl4RLlhSmEALVewywiEXcu0aIxNbuZGTcpNoI0h4oLFrE/fUd0iBGFg/EGLXRL3zTfpg6g==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "polyclip-ts": "^0.16.8", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/unkink-polygon": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-7.2.0.tgz", + "integrity": "sha512-dFPfzlIgkEr15z6oXVxTSWshWi51HeITGVFtl1GAKGMtiXJx1uMqnfRsvljqEjaQu/4AzG1QAp3b+EkSklQSiQ==", + "license": "MIT", + "dependencies": { + "@turf/area": "^7.2.0", + "@turf/boolean-point-in-polygon": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/voronoi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-7.2.0.tgz", + "integrity": "sha512-3K6N0LtJsWTXxPb/5N2qD9e8f4q8+tjTbGV3lE3v8x06iCnNlnuJnqM5NZNPpvgvCatecBkhClO3/3RndE61Fw==", + "license": "MIT", + "dependencies": { + "@turf/clone": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@turf/invariant": "^7.2.0", + "@types/d3-voronoi": "^1.1.12", + "@types/geojson": "^7946.0.10", + "d3-voronoi": "1.1.2", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@types/aria-query": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", @@ -2708,6 +4737,18 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/d3-voronoi": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.12.tgz", + "integrity": "sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==", + "license": "MIT" + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -3180,6 +5221,15 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bignumber.js": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.0.tgz", + "integrity": "sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -3676,6 +5726,12 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -3727,6 +5783,18 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/concaveman": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz", + "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", + "license": "ISC", + "dependencies": { + "point-in-polygon": "^1.1.0", + "rbush": "^3.0.1", + "robust-predicates": "^2.0.4", + "tinyqueue": "^2.0.3" + } + }, "node_modules/content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", @@ -3836,6 +5904,27 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, + "node_modules/d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-geo": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", + "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1" + } + }, + "node_modules/d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==", + "license": "BSD-3-Clause" + }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -4033,6 +6122,12 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", + "license": "ISC" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -4281,8 +6376,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -4409,6 +6503,48 @@ "node": ">=6.9.0" } }, + "node_modules/geojson": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/geojson/-/geojson-0.5.0.tgz", + "integrity": "sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/geojson-equality-ts": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/geojson-equality-ts/-/geojson-equality-ts-1.0.2.tgz", + "integrity": "sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.14" + } + }, + "node_modules/geojson-polygon-self-intersections": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.1.tgz", + "integrity": "sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==", + "license": "MIT", + "dependencies": { + "rbush": "^2.0.1" + } + }, + "node_modules/geojson-polygon-self-intersections/node_modules/quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==", + "license": "ISC" + }, + "node_modules/geojson-polygon-self-intersections/node_modules/rbush": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", + "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", + "license": "MIT", + "dependencies": { + "quickselect": "^1.0.1" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -6355,6 +8491,15 @@ "node": ">=6" } }, + "node_modules/jsts": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.7.1.tgz", + "integrity": "sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==", + "license": "(EDL-1.0 OR EPL-1.0)", + "engines": { + "node": ">= 12" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -6457,6 +8602,12 @@ "tmpl": "1.0.5" } }, + "node_modules/marchingsquares": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/marchingsquares/-/marchingsquares-1.3.3.tgz", + "integrity": "sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==", + "license": "AGPL-3.0" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -6599,6 +8750,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -6906,6 +9058,37 @@ "node": ">=8" } }, + "node_modules/point-in-polygon": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==", + "license": "MIT" + }, + "node_modules/point-in-polygon-hao": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.2.4.tgz", + "integrity": "sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==", + "license": "MIT", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/point-in-polygon-hao/node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/polyclip-ts": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/polyclip-ts/-/polyclip-ts-0.16.8.tgz", + "integrity": "sha512-JPtKbDRuPEuAjuTdhR62Gph7Is2BS1Szx69CFOO3g71lpJDFo78k4tFyi+qFOMVPePEzdSKkpGU3NBXPHHjvKQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.1.0", + "splaytree-ts": "^1.0.2" + } + }, "node_modules/pretty-format": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", @@ -6986,6 +9169,12 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "license": "ISC" + }, "node_modules/range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -6995,6 +9184,15 @@ "node": ">= 0.6" } }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "license": "MIT", + "dependencies": { + "quickselect": "^2.0.0" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -7240,6 +9438,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", + "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==", + "license": "Unlicense" + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -7411,6 +9615,12 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, + "node_modules/skmeans": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", + "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==", + "license": "MIT" + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -7448,6 +9658,12 @@ "source-map": "^0.6.0" } }, + "node_modules/splaytree-ts": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/splaytree-ts/-/splaytree-ts-1.0.2.tgz", + "integrity": "sha512-0kGecIZNIReCSiznK3uheYB8sbstLjCZLiwcQwbmLhgHJj2gz6OnSPkVzJQCMnmEz1BQ4gPK59ylhBoEWOhGNA==", + "license": "BDS-3-Clause" + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -7584,6 +9800,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sweepline-intersections": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz", + "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==", + "license": "MIT", + "dependencies": { + "tinyqueue": "^2.0.0" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -7626,6 +9851,12 @@ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, + "node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", + "license": "ISC" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -7644,6 +9875,32 @@ "node": ">=8.0" } }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "license": "ISC", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, + "node_modules/topojson-server": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz", + "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", + "license": "ISC", + "dependencies": { + "commander": "2" + }, + "bin": { + "geo2topo": "bin/geo2topo" + } + }, "node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", @@ -7671,6 +9928,12 @@ "node": ">=8" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", diff --git a/package.json b/package.json index 77fe0f7..70f1a09 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,10 @@ ] }, "dependencies": { + "@turf/turf": "^7.2.0", "cheerio": "^1.0.0", + "geojson": "^0.5.0", "node-fetch": "^3.3.2", "sass": "^1.87.0" } -} \ No newline at end of file +} diff --git a/villes_stats.js b/villes_stats.js new file mode 100644 index 0000000..c21a0b7 --- /dev/null +++ b/villes_stats.js @@ -0,0 +1,187 @@ +/** +/** + * compter les stations IRVE par ville et les tags associés + */ +import fs from 'fs'; +import fetch from 'node-fetch'; + +const distanceThreshold = 10; // Distance maximale en km du centre ville +// Liste des 15 plus grandes villes de France avec leurs coordonnées et seuils spécifiques + +const cities = [ + { name: "Paris", coords: [48.8566, 2.3522], threshold: 15 }, // Plus grande ville, plus grand rayon + { name: "Marseille", coords: [43.2965, 5.3700], threshold: 12 }, + { name: "Lyon", coords: [45.7640, 4.8357], threshold: 12 }, + { name: "Toulouse", coords: [43.6047, 1.4442], threshold: 10 }, + { name: "Nice", coords: [43.7055, 7.262], threshold: 10 }, + { name: "Nantes", coords: [47.2184, -1.5536], threshold: 10 }, + { name: "Montpellier", coords: [43.6108, 3.8767], threshold: 8 }, + { name: "Strasbourg", coords: [48.5734, 7.7521], threshold: 8 }, + { name: "Bordeaux", coords: [44.8378, -0.5792], threshold: 8 }, + { name: "Lille", coords: [50.6292, 3.0585], threshold: 8 }, + { name: "Rennes", coords: [48.1141, -1.6778], threshold: 8 }, + { name: "Reims", coords: [49.2583, 4.0316], threshold: 6 }, + { name: "Le Havre", coords: [49.4944, 0.1064], threshold: 6 }, + { name: "Saint-Étienne", coords: [45.4484, 4.3928], threshold: 6 }, + { name: "Toulon", coords: [43.1242, 5.928], threshold: 6 }, + { name: "Rouen", coords: [49.4431, 1.0993], threshold: 6 }, + { name: "Ajaccio", coords: [41.9192, 8.7386], threshold: 6 }, + { name: "Saint-Denis", coords: [-20.8789, 55.4481], threshold: 6 }, + { name: "Brest", coords: [48.3904, -4.4861], threshold: 6 }, + { name: "Cergy", coords: [49.0379, 2.0760], threshold: 6 }, + { name: "Évry", coords: [48.6240, 2.4350], threshold: 6 }, + { name: "Saint-Quentin-en-Yvelines", coords: [48.7704, 2.0150], threshold: 4 }, + { name: "Marne-la-Vallée", coords: [48.8439, 2.7875], threshold: 4 }, + { name: "Melun-Sénart", coords: [48.5711, 2.6298], threshold: 4 }, + { name: "Dieppe", coords: [49.9237, 1.0789], threshold: 4 }, + { name: "Le Mans", coords: [48.0061, 0.1996], threshold: 4 }, + { name: "Orléans", coords: [47.9029, 1.9039], threshold: 4 }, + { name: "Nîmes", coords: [43.8367, 4.3600], threshold: 4 }, + { name: "Aix-en-Provence", coords: [43.5297, 5.4474], threshold: 4 }, + { name: "Tours", coords: [47.3942, 0.6900], threshold: 4 }, + { name: "Limoges", coords: [45.8333, 1.2500], threshold: 4 }, + { name: "Angers", coords: [47.4785, -0.5632], threshold: 4 }, + { name: "Lorient", coords: [47.7479, -2.7795], threshold: 4 }, + { name: "Saint-Nazaire", coords: [47.2862, -2.2133], threshold: 4 }, + { name: "Saint-Malo", coords: [48.6455, -2.0155], threshold: 4 }, + { name: "Saint-Étienne-du-Rouvray", coords: [49.3833, 1.0833], threshold: 4 }, + { name: "Saint-Quentin", coords: [49.8333, 2.8833], threshold: 4 }, + + +]; + +// Fonction pour charger les données GeoJSON +function loadGeojson(filePath) { + try { + const data = fs.readFileSync(filePath, 'utf8'); + return JSON.parse(data); + } catch (error) { + console.error('Erreur lors du chargement du fichier GeoJSON:', error.message); + throw new Error(`Impossible de charger le fichier ${filePath}: ${error.message}`); + } + +} + +// Fonction pour télécharger le fichier si manquant +async function ensureDataFile(filePath) { + if (!fs.existsSync(filePath)) { + console.log('Téléchargement du fichier opendata.json...'); + const response = await fetch('https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26'); + const buffer = await response.arrayBuffer(); + fs.writeFileSync(filePath, Buffer.from(buffer)); + console.log('Téléchargement terminé'); + } +} + +// Fonction pour calculer la distance entre deux points en km +function calculateDistance(lat1, lon1, lat2, lon2) { + const R = 6371; // Rayon de la Terre en km + const dLat = (lat2 - lat1) * Math.PI / 180; + const dLon = (lon2 - lon1) * Math.PI / 180; + const a = + Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * + Math.sin(dLon / 2) * Math.sin(dLon / 2); + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return R * c; +} + +// Fonction pour compter le nombre d'éléments IRVE par ville et les tags associés +function countIrveByCityWithTags(irveData, cities, distanceThreshold) { + const irveCountByCity = []; + const allTags = new Map(); + const irvePoints = irveData.elements; + // const irvePoints = irveData.features; + // console.log(irveData.elements.length, 'irvePoints dans le fichier', irvePoints.length, 'rayon : ', distanceThreshold, 'km'); + + // Pour chaque ville + for (const city of cities) { + const cityTagsCount = new Map(); + let totalCount = 0; + let totalCapacity = 0; + + // Pour chaque point IRVE + for (let i = 0; i < irvePoints.length; i++) { + if (irvePoints[i].lon !== undefined && irvePoints[i].lat !== undefined) { + const distance = calculateDistance( + city.coords[0], // latitude de la ville (premier élément) + city.coords[1], // longitude de la ville (deuxième élément) + irvePoints[i].lat, + irvePoints[i].lon + ); + // console.log(irvePoints[i].lon, irvePoints[i].lat, 'distance : ', distance, 'km'); + + if (distance <= city.threshold) { + totalCount++; + totalCapacity += (irvePoints[i].tags?.capacity * 1) || 0; + const tags = irvePoints[i].tags || {}; + for (const [tag, value] of Object.entries(tags)) { + cityTagsCount.set(tag, (cityTagsCount.get(tag) || 0) + 1); + allTags.set(tag, (allTags.get(tag) || 0) + 1); + } + } + } + } + + // Créer la feature pour la ville + const cityFeature = { + type: "Feature", + geometry: { + type: "Point", + coordinates: [city.coords[1], city.coords[0]] + }, + properties: { + name: city.name, + totalCount: totalCount, + totalCapacity: totalCapacity, + threshold: city.threshold, + tags: Object.fromEntries(cityTagsCount) + } + }; + irveCountByCity.push(cityFeature); + console.log(totalCount, totalCapacity, city.name); + } + return irveCountByCity; +} + + + + +// Fonction pour sauvegarder les résultats dans un fichier GeoJSON +function saveGeojson(data, filePath) { + const featureCollection = { + type: "FeatureCollection", + features: data + }; + fs.writeFileSync(filePath, JSON.stringify(featureCollection, null, 2)); +} + +// Chemins des fichiers GeoJSON d'entrée et de sortie +const inputFilePath = 'js/openstreetmap.json'; +const outputFilePath = 'js/irve_count_by_city_with_tags.geojson'; + +// Exécution du script +try { + // await ensureDataFile(inputFilePath); + const irveData = loadGeojson(inputFilePath); + + // Compter le nombre d'éléments IRVE par ville et les tags associés + const irveCountByCityWithTags = countIrveByCityWithTags(irveData, cities, distanceThreshold); + + // Sauvegarder les résultats dans un fichier GeoJSON + saveGeojson(irveCountByCityWithTags, outputFilePath); + + // Créer un fichier CSV avec les totaux par ville + const csvContent = irveCountByCityWithTags + .map(city => `${city.properties.name},${city.properties.totalCount},${city.properties.totalCapacity}`) + .join('\n'); + + const csvHeader = 'Ville,Nombre total de bornes,Capacité totale\n'; + fs.writeFileSync('js/irve_totaux_par_ville.csv', csvHeader + csvContent); + console.log('Les totaux par ville ont été sauvés dans js/irve_totaux_par_ville.csv'); + + console.log(`Les résultats ont été sauvés dans ${outputFilePath}`); +} catch (error) { + console.error('Erreur lors de l\'exécution du script:', error); +} +