Witam,
Chciałbym pobrać przez API OpenStreetMaps lokaliacje (lat/log) wszystkich Żabek w Polsce. Jednak podczas pobierania danych część z Żabek nie jest załączana. Pobiera się 7.3k lokalizacji, a Żabek w Polsce powinno być około 10500 (rozumiem, że część może nie być ale cały czas dużo brakuje). W czym jest problem? Kod którego używam poniżej. Jeżeli komuś uda się pomóc wspomnę w artykule, który piszę
import requests
import json
import pandas as pd
# Define the Overpass API endpoint
overpass_url = "http://overpass-api.de/api/interpreter"
# Define the Overpass QL query to get all elements with "Żabka" in the name in Poland
overpass_query = """
[out:json];
area["ISO3166-1"="PL"]->.searchArea;
(
node["name"~"Żabka|Zabka|Zabka Polska"](area.searchArea);
way["name"~"Żabka|Zabka|Zabka Polska"](area.searchArea);
relation["name"~"Żabka|Zabka|Zabka Polska"](area.searchArea);
);
out center;
"""
# Send the request to the Overpass API
response = requests.get(overpass_url, params={'data': overpass_query})
# Check for successful response
if response.status_code == 200:
data = response.json()
else:
print("Error: Unable to fetch data")
data = None
# Function to extract addresses from the OSM data
def extract_addresses(osm_data):
addresses = []
if osm_data:
for element in osm_data['elements']:
address = {}
address['id'] = element['id']
if 'lat' in element and 'lon' in element:
address['lat'] = element['lat']
address['lon'] = element['lon']
elif 'center' in element:
address['lat'] = element['center']['lat']
address['lon'] = element['center']['lon']
if 'tags' in element:
tags = element['tags']
address['name'] = tags.get('name')
address['street'] = tags.get('addr:street')
address['housenumber'] = tags.get('addr:housenumber')
address['postcode'] = tags.get('addr:postcode')
address['city'] = tags.get('addr:city')
addresses.append(address)
return addresses
# Extract addresses from the response data
zabka_addresses = extract_addresses(data)
# Convert the list of addresses to a pandas DataFrame
df_zabka_addresses = pd.DataFrame(zabka_addresses)
# Print the DataFrame
print(df_zabka_addresses)
df_zabka_addresses.to_csv('zabka_addresses1.csv', index=False)