Open a Bike Rental Store in Madrid

Data used

  • Bike rental stores addresses: https://www.esmadrid.com/en/bike-rental-in-madrid#
    • Matadero Madrid. Bicycle hire - Paseo de la Chopera , 14
    • Bikes Rental Point in Juan Carlos I Park - Vía Dublín, s/n
    • Fun&Bikes - Avenida de Manzanares, 164
    • Mi Bike Río - Calle Aniceto Marinas, 26
    • Bravo Bike - Calle Juan Álvarez Mendizábal, 19
    • Bike & Roll - Calle Áncora, 36
    • 27 Bikes - Calle del Alcalde Sainz de Baranda, 16
    • Bike Spain Tours - Plaza de la Villa, 1
    • Biobike Pasillo Verde - Paseo de Juan Antonio Vallejo - Nájero Botas, 55
    • Bike Tour Trixi Madrid - Calle de los Jardines, 12
    • Eco Moving Sports - Avenida del Manzanares, 2
    • Otero Ciclos - Calle de Segovia, 18-20
    • Rent & Roll - Calle de Felipe IV, 10
    • Pangea - Paseo de las Yeserías, 15

In [1]:
from cartoframes.auth import set_default_credentials

set_default_credentials('creds.json')

In [2]:
from cartoframes.data.services import Geocoding

gc = Geocoding()
print(gc.available_quota())


4779227

In [3]:
from pandas import DataFrame

bike_rental_stores_df = DataFrame([
    ['Matadero Madrid. Bicycle hire', 'Paseo de la Chopera , 14'],
    ['Bikes Rental Point in Juan Carlos I Park', 'Vía Dublín, s/n'],
    ['Fun&Bikes', 'Avenida de Manzanares, 164'],
    ['Mi Bike Río', 'Calle Aniceto Marinas, 26'],
    ['Bravo Bike', 'Calle Juan Álvarez Mendizábal, 19'],
    ['27 Bikes', 'Calle del Alcalde Sainz de Baranda, 16'],
    ['Bike Spain Tour', 'Plaza de la Villa, 1'],
    ['Biobike Pasillo Verde', 'Paseo de Juan Antonio Vallejo - Nájero Botas, 55'],
    ['Bike Tour Trixi Madrid', 'Calle de los Jardines, 12'],
    ['Otero Ciclos ', 'Calle de Segovia, 18-20'],
    ['Rent & Roll', 'Calle de Felipe IV, 10'],
    ['Pangea', 'Paseo de las Yeserías, 15']],
    columns=['name', 'address']
)

bike_rental_stores_df


Out[3]:
name address
0 Matadero Madrid. Bicycle hire Paseo de la Chopera , 14
1 Bikes Rental Point in Juan Carlos I Park Vía Dublín, s/n
2 Fun&Bikes Avenida de Manzanares, 164
3 Mi Bike Río Calle Aniceto Marinas, 26
4 Bravo Bike Calle Juan Álvarez Mendizábal, 19
5 27 Bikes Calle del Alcalde Sainz de Baranda, 16
6 Bike Spain Tour Plaza de la Villa, 1
7 Biobike Pasillo Verde Paseo de Juan Antonio Vallejo - Nájero Botas, 55
8 Bike Tour Trixi Madrid Calle de los Jardines, 12
9 Otero Ciclos Calle de Segovia, 18-20
10 Rent & Roll Calle de Felipe IV, 10
11 Pangea Paseo de las Yeserías, 15

In [4]:
bike_rental_stores_data, bike_rental_stores_metadata = gc.geocode(
    bike_rental_stores_df,
    street='address',
    city={'value': 'Madrid'},
    country={'value': 'Spain'})


Success! Data geocoded correctly

In [5]:
bike_rental_stores_data


Out[5]:
the_geom name address gc_status_rel carto_geocode_hash
0 POINT (-3.69744 40.39274) Matadero Madrid. Bicycle hire Paseo de la Chopera , 14 0.95 35830402de3843fd3309309469b50efc
1 POINT (-3.61520 40.46088) Bikes Rental Point in Juan Carlos I Park Vía Dublín, s/n 0.75 86ecf14d283f407e5d5af49b233afa71
2 POINT (-3.70846 40.39559) Fun&Bikes Avenida de Manzanares, 164 0.89 30833b87570ed1d90e100f6781665f97
3 POINT (-3.72274 40.42205) Mi Bike Río Calle Aniceto Marinas, 26 0.91 7945970d13061be0bc7fe64472e723ff
4 POINT (-3.71509 40.42493) Bravo Bike Calle Juan Álvarez Mendizábal, 19 0.95 6f1b2606125e2462f6235df39aac5176
5 POINT (-3.67672 40.41680) 27 Bikes Calle del Alcalde Sainz de Baranda, 16 0.99 3c45d9e073bfe074be2895af7c84f846
6 POINT (-3.71020 40.41543) Bike Spain Tour Plaza de la Villa, 1 0.95 846343c4eb3f6e295246e4b3e9a601a4
7 POINT (-3.71480 40.40359) Biobike Pasillo Verde Paseo de Juan Antonio Vallejo - Nájero Botas, 55 0.99 6d19e11e1d529bc849a2b53c27c9a785
8 POINT (-3.70143 40.41888) Bike Tour Trixi Madrid Calle de los Jardines, 12 0.95 1a83b6a267b2c23d32bb5db2d29c3e92
9 POINT (-3.71208 40.41402) Otero Ciclos Calle de Segovia, 18-20 0.92 70f30859922b437bec9c747962fcca38
10 POINT (-3.68974 40.41497) Rent & Roll Calle de Felipe IV, 10 0.95 3fb28606fd7c9eb91cf9aa34320c1945
11 POINT (-3.71026 40.39951) Pangea Paseo de las Yeserías, 15 0.95 b199bc7ad784ab3d86cef425bcd99385

In [6]:
from cartoframes.data.services import Isolines

iso_service = Isolines()
isodistances = iso_service.isodistances(
    bike_rental_stores_data,
    [100, 200, 300],
    mode='walk',
    dry_run=True,
    exclusive=True)

print('Available Quota: {0}'.format(iso_service.available_quota()))
print('Required Quota: {0}'.format(isodistances.metadata.get('required_quota')))


Available Quota: 77995
Required Quota: 36

In [7]:
isodistances_data, isodistances_metadata = iso_service.isodistances(
    bike_rental_stores_data,
    [100, 200, 300],
    mode='walk',
    exclusive=True)


Success! Isolines created correctly

In [8]:
isodistances_data.head()


Out[8]:
source_id data_range lower_data_range the_geom range_label
0 11 300 200 POLYGON ((-3.71329 40.40085, -3.71269 40.40085... 5 min.
1 10 300 200 MULTIPOLYGON (((-3.69269 40.41595, -3.69226 40... 5 min.
2 7 300 200 POLYGON ((-3.71741 40.40497, -3.71698 40.40514... 5 min.
3 9 300 200 POLYGON ((-3.71535 40.41458, -3.71492 40.41475... 5 min.
4 6 300 200 POLYGON ((-3.71346 40.41544, -3.71338 40.41595... 5 min.

In [9]:
# isodistances_data['geometry'] = isodistances_data['__carto_geometry']

In [10]:
from cartoframes.viz import Map, Layer

Map(
    Layer(isodistances_data)
)


Out[10]:
:
StackTrace
    ">