Identifying the most accessible Singapore hotel with (geospatial) data
Tourism is a huge contributor to our Singapore economy, but I reckon Singapore domestic tourism was largely non-existence, until Covid-19 hit and forced many Singaporeans to look towards domestic activities like hotel staycations. As our world shifts back to pre-Covid travel normalcy, I want to see if I can use data to bring forth some interesting perspectives about our Singapore hotel industry for tourists and curious Singaporeans like me. One perspective is to use data to identify the most accessible Singapore hotel.
And while the analysis is conceptually simple, it requires pulling data from various sources, cleaning and processing the data and calculating the defined “accessibility” metrics. I am using a very crude way to measure how accessible a hotel is, which is the average distance the hotel is from selected tourist attractions. Here is a slightly detailed explanation on what I did and what I learned from this exercise.
Hotels
I downloaded a list of Singapore hotels from our Singapore Tourism Board (STB) website. The list has 429 hotels, which to me, is a surprisingly large number of hotels for a city-state. As a simple side project, I couldn’t afford to check the validity of every hotel on this list. Hence, I am assuming this list from STB is an authoritative list of available Singapore hotels without doing further data quality validations.
Attractions
I identified 15 Singapore tourist attractions to measure how accessible they are from the 429 Singapore hotels:
- Clarke Quay
- Gardens by the Bay
- Fort Canning Park
- Haji Lane
- Little India
- Marina Bay Sands
- Merlion
- National Gallery Singapore
- National Museum of Singapore
- Singapore Art Museum
- Botanic Gardens
- Singapore City Gallery
- Singapore Zoo
- Bird Paradise
- Universal Studios Singapore
“Hey! My favourite Singapore attraction isn’t here!” Singapore has more than 15 worthy attractions. In fact, I initially chose 30 attractions. However, I realised calculating the accessibility of 429 hotels to 30 attractions required 12,870 OneMap Routing API calls (I will explain this later), and it took more than two hours to get all their route distances. As I wanted to test different iterations, taking two hours for each iteration felt too slow. So after a few iterations, I decided on 15 attractions to balance between having a representative number of attractions in my analysis while ensuring that I was reasonably efficient with my API calls to not hinder the speed of my analysis.
Location
With the hotel and attraction names, I used the OneMap API Geocoding API to get their latitudes and longitudes. For those who don’t know, the OneMap team is a team from the Singapore Land Authority (SLA) that provides a variety of Singapore geospatial data, and this data is freely available to all registered users.
Accessibility
With their latitude and longitude, I then used the OneMap Routing API to get the different distance measures between the hotels and attractions. To establish a baseline measurement, I calculated the most naive accessibility measure, which is the average linear distances between the hotels and attractions.
I also used the OneMap Routing API to get the vehicle route and public transport distances between hotels and attractions. Such measures are a better representation of accessibility because real world situations don’t allow people to travel in linear distances across locations. The vehicle route distance was easily provided by the OneMap API, but the public transport route gave some issues that I will explain later.
Simple Linear Distance
Calculating linear distance from latitude and longitude data just uses a simple function from the Python package, geopy.
Table 1 shows the 10 hotels with the least average linear distance (metres) to the 15 selected tourist attractions, while Figure 3 maps out these 10 hotels. Note that the Python programming language uses zero-indexing, which just means Python counts stuff starting from zero.
Naturally, the 10 hotels are near each other, and are around the “Bras Basah” and “Civic District” region, which is the southern part of Singapore. Based on the 15 selected tourist attractions, this region is the most accessible area of Singapore by linear distance.
Vehicle Distance
As mentioned above, I used the OneMap Routing API to get the vehicle driving distance between hotels and attractions. Compared to linear distance, vehicle distances can be useful for tourists who are looking to mostly take cabs around Singapore. The vehicle distance will provide a more realistic reflection of the hotel’s accessibility from the possible vehicle journey time and implied costs (if taking a cab).
Table 2 shows the 10 hotels with the least average vehicle distance (metres) to the selected tourist attractions, with their linear rankings and distances by the side. Naturally, average vehicle distances are longer than linear distances, because vehicles need to drive on roads that avoid physical buildings and amenities.
Firstly, these hotels largely remained within the top 10 accessible hotels : Grand Park City Hall, The Capitol Kempinski Hotel Singapore, Peninsula Excelsior Hotel, lyf Funan Singapore and 30 Bencoolen. On the other hand, we can see some ranking changes as well. Mercure Singapore Bugis, Oxford Hotel, Fairmont Singapore, V Hotel Bencoolen and Naumi are part of the new top 10 most accessible hotels by average vehicle distance.
Table 3 compares how the top 10 most accessible hotels by average linear distance far for their vehicle distances. We can see that Hotel Fort Canning, Rendezvous Hotel Singapore, Swissotel The Stamford, Singapore and Victoria Hotel dropped quite drastically out of the top 10 when using average vehicle distances.
From Google Maps (Figure 4), we see that it takes a few winding roads to get to Hotel Fort Canning. And for those well versed in that area, the Hotel Fort Canning is located on top of a small short hill. So interestingly, while Hotel Fort Canning is located quite near a lot of the major tourist attractions, it may not be as accessible as a hotel by vehicles.
For Rendezvous Hotel Singapore, the hotel’s vehicle entrance and exit seems to be located at a T-junction of a one way street (at the Korean restaurant side on Figure 5). Hence, vehicles leaving Rendezvous Hotel Singapore might need to take a long route to detour to specific attractions.
Lastly, Figure 7 shows a map of linear (red) and vehicle (blue) hotel accessibility rankings, and the most accessible hotel area in Singapore is still roughly the same area.
While I only could go through the ranking changes of two hotels, their accessibility ranking changes suggest that moving from linear to vehicle distances can affect a hotel’s accessibility. Hence, I was quite excited to see what I can learn when I look at public transport route distances!
Public Transport Distance
When I was reading the documentation, the OneMap Routing API mentions that it provides the public transport routes that cover public buses, the subway and walking. I felt that public transport distances are even more informative for tourists than vehicle distances, because they should be mostly taking public transport in Singapore.
OneMap Public Transport Routing Issue
After spending more than an hour making the routing API calls, I realised about 10% of these API calls return a “404 NOT FOUND : Unable to get route” result. Unfortunately, this meant I cannot fully calculate my average public transport route distances for now.
I blame myself for only checking this after attempting an hour plus of API calls, but I feel the OneMap team is partially responsible for my folly too, as their documentation did not indicate this possible “404” response!
This said, I have a potential workaround for this issue, but it requires a lot more work, and I will separate it out into another analysis post.
Current thoughts and caveats
Firstly, my analysis is stating the obvious that linear distance doesn’t mean true accessibility. So when possible, choose the more appropriate accessibility measure beyond linear distance.
Secondly, I am not using travel time as a measure accessibility. This was because I wanted average linear proximity (distance) as a benchmark, and it didn’t feel right to convert linear distance into possible time taken.
Thirdly, vehicle distances and public transport distances are not apples-to-apples comparisons. Public transport travel commonly involves walking and waiting during transits, and they are not necessary for vehicle travel. Hence, the same public transport and vehicle distances will have different actual accessibilities.
Lastly, I am not saying any of these hotels are good or bad. I am just identifying particular geospatial traits of several hotels, based on the data I got from the OneMap API. Many factors go into choosing a hotel, such as available amenities and room rates. In addition, I only selected 15 attractions, and not all tourists will visit these attractions when they visit Singapore. A more robust approach if one wants to use this method to screen Singapore hotels is to pre-define the attractions they want to go, and calculate the hotel accessibilities to those attractions. What I am doing is very much a proof-of-concept experiment, and an exercise to see how far I can quickly do up some analysis with current available data and my existing analytics skills.
Conclusion : Next Steps
This was my first time using the OneMap Routing API, and seeing the undocumented “404 NOT FOUND : Unable to get route” response was both a disappointing lesson and an interesting challenge. Building from this, I will explore how to fill up these missing public transport route distances to complete my accessibility measure comparison.
Thanks to everyone who has read this post. If you are interested in my next post on Singapore hotel accessibilities by public transport, do follow me on Medium or Linkedin. I share interesting data strategies on Substack (trying to keep that going) and also different data analytics projects on my Medium, including analyses on (1) Singapore housing prices, the (2) Taiwan housing prices, and (3) I even built a small web app for Singapore residents to track books that they want to borrow from our libraries. I will also sometimes share less technical stuff, like (4) how I learned to deal with uncertainty and (5) how I ended up being a freelance analytics consultant.