Download Module
- urbanpy.download.get_hdx_dataset(resources_df: DataFrame, ids: int | list) DataFrame [source]
HDX dataset download.
- Parameters:
resources_df (pd.DataFrame) – Resources dataframe from returned by search_hdx_dataset
ids (int or list) – IDs in the resources dataframe
- Returns:
data – The corresponding dataset in DataFrame format
- Return type:
pd.DataFrame
Examples
>>> resources_df = urbanpy.download.search_hdx_dataset('peru') >>> population_df = urbanpy.download.get_hdx_dataset(resources_df, 0) >>> population_df latitude | longitude | population_2015 | population_2020 -18.339306 | -70.382361 | 11.318147 | 12.099885 -18.335694 | -70.393750 | 11.318147 | 12.099885 -18.335694 | -70.387361 | 11.318147 | 12.099885 -18.335417 | -70.394028 | 11.318147 | 12.099885 -18.335139 | -70.394306 | 11.318147 | 12.099885
- urbanpy.download.hdx_dataset(resource)[source]
Download a dataset from HDX. The allowed formats are CSV (.csv) and zipped CSV (.csv.zip). To run our function we would only copy what is after “https://data.humdata.org/dataset/” to the ‘resource’ parameter.
For example: ‘4e74db39-87f1-4383-9255-eaf8ebceb0c9/resource/317f1c39-8417-4bde-a076-99bd37feefce/download/population_per_2018-10-01.csv.zip’.
- Parameters:
resource (str) – Specific address to the HDX dataset resource. Since every dataset is referenced to a diferent resource id, only the base url can be provided by this library.
- Returns:
dataset – Contains the requested HDX dataset resource.
- Return type:
DataFrame
Examples
>>> hdx_data = hdx_dataset('4e74db39-87f1-4383-9255-eaf8ebceb0c9/resource/317f1c39-8417-4bde-a076-99bd37feefce/download/population_per_2018-10-01.csv.zip') >>> hdx_data.head() latitude | longitude | population_2015 | population_2020 -18.339306 | -70.382361 | 11.318147 | 12.099885 -18.335694 | -70.393750 | 11.318147 | 12.099885 -18.335694 | -70.387361 | 11.318147 | 12.099885 -18.335417 | -70.394028 | 11.318147 | 12.099885 -18.335139 | -70.394306 | 11.318147 | 12.099885
- urbanpy.download.hdx_fb_population(country, map_type)[source]
Download population density maps from Facebook HDX.
- Parameters:
country (str. One of {'argentina', 'bolivia', 'brazil', 'chile', 'colombia', 'ecuador', 'paraguay', 'peru', 'uruguay'}) – Input country to download data from.
map_type (str. One of {'full', 'children', 'youth', 'elderly'}) – Input population map to download.
- Returns:
population – DataFrame with lat, lon, and population columns. Coordinates are in EPSG 4326.
- Return type:
DataFrame
Examples
>>> urbanpy.download.hdx_fb_population('peru', 'full') latitude | longitude | population_2015 | population_2020 -18.339306 | -70.382361 | 11.318147 | 12.099885 -18.335694 | -70.393750 | 11.318147 | 12.099885 -18.335694 | -70.387361 | 11.318147 | 12.099885 -18.335417 | -70.394028 | 11.318147 | 12.099885 -18.335139 | -70.394306 | 11.318147 | 12.099885
- urbanpy.download.nominatim_osm(query: str, expected_position: int | None = 0, email: str = '') GeoDataFrame [source]
Download OpenStreetMaps data for a specific city.
- Parameters:
query (str) – Query string for OSM data to be downloaded (e.g. “Lima, Peru”).
expected_position (int 0:n) – Expected position of the polygon data within the Nominatim results. Default 0 returns the first result. If set to None, all the results are returned.
- Returns:
gdf – GeoDataFrame with the fetched OSM data.
- Return type:
GeoDataFrame
Examples
>>> lima = nominatim_osm('Lima, Peru', 2) >>> lima.head() geometry | place_id | osm_type | osm_id | display_name | place_rank | category | type | importance | icon MULTIPOLYGON | 235480647 | relation | 1944670.0 | Lima, Peru | 12 | boundary | administrative | 0.703484 | https://nominatim.openstreetmap.org/images/map...
- urbanpy.download.osmnx_graph(download_type: str, network_type='drive', query_str=None, geom=None, distance=None, **kwargs)[source]
Download a graph from OSM using osmnx.
- Parameters:
download_type (str. One of {'polygon', 'place', 'point'}) – Input download type. If polygon, the polygon parameter must be provided as a Shapely Polygon.
network_type (str. One of {'drive', 'drive_service', 'walk', 'bike', 'all', 'all_private'}) – Network type to download. Defaults to drive.
query_str (str (Optional).) – Only requiered for place type downloads. Query string to download a network.
polygon (Shapely Polygon or Point (Optional).) – Polygon requiered for polygon type downloads, Point for place downloads. Polygons are used as bounds for network download, points as the center. with a distance buffer.
distance (int) – Distance in meters to use as buffer from a point to download the network.
- Returns:
G – Requested graph with simplyfied geometries.
- Return type:
networkx.MultiDiGraph
Examples
>>> poly = urbanpy.download.nominatim_osm('San Isidro, Peru') >>> G = urbanpy.download.osmnx_graph('polygon', geom=lima.loc[0,'geometry']) >>> G <networkx.classes.multidigraph.MultiDiGraph at 0x1a2ba08150>
- urbanpy.download.overpass(type_of_data: str, query: dict, mask: GeoDataFrame | GeoSeries | Polygon | MultiPolygon) Tuple[GeoDataFrame, DataFrame | None] [source]
Download geographic data using Overpass API.
- Parameters:
type_of_data (str) – One of {‘node’, ‘way’, ‘relation’, ‘rel’}. OSM Data structure to be queried from Overpass API.
query (dict) – Dict containing OSM tag filters. Dict keys can take OSM tags and Dict values can be a list of strings, str, or None. Example: { ‘key0’: [‘v0a’, ‘v0b’, ‘v0c’], ‘key1’: ‘v1’, ‘key2’: None } Check keys [OSM Map Features](https://wiki.openstreetmap.org/wiki/Map_features).
mask (GeoDataFrame, GeoSeries, Polygon, or MultiPolygon) – Total bounds of mask to be used for the query.
- Returns:
gdf (GeoDataFrame) – POIs from the selected type of facility.
df (DataFrame) – Relations metadata such as ID and tags. Returns None if ‘type_of_data’ is other than ‘relation’.
- urbanpy.download.overpass_pois(bounds, facilities=None, custom_query=None)[source]
Download POIs using Overpass API.
- Parameters:
bounds (array_like) – Input bounds for query. Follows [minx,miny,maxx,maxy] pattern.
facilities (str. One of {'food', 'health', 'education', 'finance'}) – Type of facilities to download according to HOTOSM types. Based on this a different type of query is constructed.
custom_query (str (Optional). Default None.) – String with custom Overpass QL query (See https://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide). If this parameter is diferent than None, bounds and facilities values are ignored.
- Returns:
gdf (GeoDataFrame) – POIs from the selected type of facility. If ‘custom_query’ is given response is returned instead of gdf.
response (request.Response) – Returned only if ‘custom_query’ is given. Contains the server’s response to the HTTP request from the Overpass API Server.
Examples
>>> lima = nominatim_osm('Lima, Peru', 2) >>> urbanpy.download.overpass_pois(lima.total_bounds, 'health') type | id | lat | lon | tags | geometry | poi_type node | 367826732 | -0.944005 | -80.733941 | {'amenity': 'pharmacy', 'name': 'Fybeca'} | POINT (-80.73394 -0.94401) | pharmacy node | 367830051 | -0.954086 | -80.742420 | {'amenity': 'hospital', 'emergency': 'yes', 'n... | POINT (-80.74242 -0.95409) | hospital node | 367830065 | -0.954012 | -80.741554 | {'amenity': 'hospital', 'name': 'Clínica del S... | POINT (-80.74155 -0.95401) | hospital node | 367830072 | -0.953488 | -80.740739 | {'amenity': 'hospital', 'name': 'Clínica Cente... | POINT (-80.74074 -0.95349) | hospital node | 3206491590| -1.040708 | -80.665107 | {'amenity': 'hospital', 'name': 'Clínica Monte... | POINT (-80.66511 -1.04071) | hospital
- urbanpy.download.search_hdx_dataset(country: str, repository='high-resolution-population-density-maps-demographic-estimates')[source]
Dataset search within HDX repositories. Defaults to population density maps.
- Parameters:
country (str) – Country to search datasets
resource (str) – Resource type within the HDX database
- Returns:
datasets – DataFrame of available datasets within HDX
- Return type:
DataFrame
Examples
>>> resources_df = urbanpy.download.search_hdx_dataset('peru') >>> resources_df | created | name | population | size_mb | url id | | | | | 0 | 2019-06-11 | population_per_2018-10-01.csv.zip | Overall population density | 19.36 | https://data.humdata.org/dataset/4e74db39-87f1... 2 | 2019-06-11 | PER_children_under_five_2019-06-01_csv.zip | Children (ages 0-5) | 16.60 | https://data.humdata.org/dataset/4e74db39-87f1... 4 | 2019-06-11 | PER_elderly_60_plus_2019-06-01_csv.zip | Elderly (ages 60+) | 16.59 | https://data.humdata.org/dataset/4e74db39-87f1... 6 | 2019-06-11 | PER_men_2019-06-01_csv.zip | Men | 16.64 | https://data.humdata.org/dataset/4e74db39-87f1... 8 | 2019-06-11 | PER_women_2019-06-01_csv.zip | Women | 16.63 | https://data.humdata.org/dataset/4e74db39-87f1... 10 | 2019-06-11 | PER_women_of_reproductive_age_15_49_2019-06-01... | Women of reproductive age (ages 15-49) | 16.62 | https://data.humdata.org/dataset/4e74db39-87f1... 12 | 2019-06-11 | PER_youth_15_24_2019-06-01_csv.zip | Youth (ages 15-24) | 16.61 | https://data.humdata.org/dataset/4e74db39-87f1...