29 lines
807 B
Python
29 lines
807 B
Python
import sys
|
|
import json
|
|
from urllib import request
|
|
|
|
# Define query parameters for OpenStreetMap Overpass API
|
|
query = """
|
|
{
|
|
__export_roof_area__: "paris";
|
|
("building" "roof");
|
|
union;
|
|
out;
|
|
totalways;
|
|
};
|
|
out geom;
|
|
"""
|
|
url = f"https://overpass-api.de/interpreter?data=[out:{query}]&lang=json&zipped=true"
|
|
|
|
# Execute GET request and retrieve JSON data
|
|
response = request.urlopen(url)
|
|
data = json.loads(response.read().decode('utf-8'))
|
|
way = next((x for x in data["elements"] if x["type"] == "way"), None)
|
|
total_area = 0.0
|
|
|
|
if way:
|
|
nodes = [node['nodes'] for node in way["geometry"] if node["type"] == "Area"]
|
|
for node in nodes:
|
|
area = float(node["value"]) * 10**6 # Convert bytes to km^2
|
|
total_area += area
|
|
print(f"Total roof area of buildings in Paris: {total_area}") |