{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# AirBnB Listings by Reputation and Description\n", "by [Talha Oz](http://talhaoz.com)\n", "\n", "## Abstract\n", "\n", "Reviewing is a feedback mechanism that e-commerce sites leverage to help their customers make more informative purchase decisions on their platforms. Although the biggest online sellers such as Amazon and eBay allow their users to filter the search results by seller reputations, the leading space sharing platform AirBnB lacks this crucial feature. Even more disappointingly, AirBnB does not allow it’s users to search for keywords within listing contents (descriptions). In this project, I create a demo geo-web application to meet these needs of AirBnB users. The application allows its users i) to filter the listings by review scores for six reputation categories, ii) to search in listing descriptions, and iii) to experience better visualization by adopting a different marker for each listing room type and by providing clustered-listings view. I demonstrate the application for the Washington, D.C. area by utilizing a publicly available AirBnB listings dataset." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pandas as pd\n", "pd.set_option('display.float_format', lambda x: '%.2f' % x)\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "colpal = sns.color_palette(\"hls\", 7)\n", "sns.set(palette=colpal, style='ticks', rc={\"figure.figsize\":(7.75,5),'savefig.dpi':150})\n", "\n", "import folium\n", "from IPython.display import HTML" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## INTRODUCTION\n", "AirBnB is one of the greatest success stories of sharing economy, a website of value $25.5 billion as of November 2015 [1] where hosts provide lodging spaces and guests rent them. Hosts basically rent three types of spaces using this platform: `entire home`, `private room`, and `shared room`. In return of the quality they received during their rental, guests then leave feedback, some of which is public, to the hosts. In addition to the option of free text comments, AirBnB provides six review categories where guests can rate their experience from zero to five (in 0.5 incremental steps). This richness of feedback types is very valuable as trust is of great importance in the sharing economy.\n", "\n", "One of the main parts, if not the main part, of listings on AirBnB website is the free-text `description` section where hosts strive for describing their property as attractive as possible. Surprisingly though, currently the website does not allow for searching in it.\n", "\n", "It is unfortunate that the guests can see the listing descriptions as well as the review scores, while not being able to narrow their search exploiting this information. In this project I create a geo-web application to overcome this problem. \n", "In this report, I first introduce AirBnB and describe the purpose of my demo geo-web application in this (Introduction) section. In the next (Data) section I then provide some of the characteristics of the dataset on which I built this demo application. The third section is about the Design of the application where I discuss it under two subsections as Back End and Front End. I then conclude the report with Conclusion and Discussion section. Tables and code snippets are added to appendices whenever found necessary. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of records: 3723\n", "Number of columns: 91\n", "listing_url, scrape_id, last_scraped, name, summary, space, description, experiences_offered, neighborhood_overview, notes, transit, thumbnail_url, medium_url, picture_url, xl_picture_url, host_id, host_url, host_name, host_since, host_location, host_about, host_response_time, host_response_rate, host_acceptance_rate, host_is_superhost, host_thumbnail_url, host_picture_url, host_neighbourhood, host_listings_count, host_total_listings_count, host_verifications, host_has_profile_pic, host_identity_verified, street, neighbourhood, neighbourhood_cleansed, neighbourhood_group_cleansed, city, state, zipcode, market, smart_location, country_code, country, latitude, longitude, is_location_exact, property_type, room_type, accommodates, bathrooms, bedrooms, beds, bed_type, amenities, square_feet, price, weekly_price, monthly_price, security_deposit, cleaning_fee, guests_included, extra_people, minimum_nights, maximum_nights, calendar_updated, has_availability, availability_30, availability_60, availability_90, availability_365, calendar_last_scraped, number_of_reviews, first_review, last_review, review_scores_rating, review_scores_accuracy, review_scores_cleanliness, review_scores_checkin, review_scores_communication, review_scores_location, review_scores_value, requires_license, license, jurisdiction_names, instant_bookable, cancellation_policy, require_guest_profile_picture, require_guest_phone_verification, calculated_host_listings_count, reviews_per_month\n" ] } ], "source": [ "# read data in \n", "df = pd.read_csv('data/listings.csv',index_col='id')\n", "print('Number of records:',df.shape[0])\n", "print('Number of columns:',df.shape[1])\n", "print(', '.join(df.columns)) #see the columns starting with review_score..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Source\n", "AirBnB (as of December 1, 2015) does not provide a publicly accessible application programming interface (API) for developers to collect information about the listings on their platform. However, enthusiastic hackers have managed to collect the listing data by implementing web scrapers (a search of ‘airbnb data’ in GitHub lists some). \n", "\n", "The dataset (`Listing.csv`) being utilized in this study is retrieved from [insideairbnb.com](http://insideairbnb.com/get-the-data.html) website and also made available in the public repository of this project. The original data source provides the date they scraped the listings, which happens to be October 3, 2015 for Washington, DC.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# pre-process the data\n", "revcols = 'host_id\thost_listings_count\tnumber_of_reviews\treview_scores_rating\treview_scores_accuracy\treview_scores_cleanliness\treview_scores_checkin\treview_scores_communication\treview_scores_location\treview_scores_value'.split('\\t')\n", "df = df.dropna(subset=revcols).sort('review_scores_rating',ascending=False)\n", "df = df.rename(columns=dict(zip(revcols[3:],[c.split('_')[-1] for c in revcols[3:]])))\n", "df = df.rename(columns={'neighbourhood_cleansed':'neighborhood'})\n", "revcols = [c.split('_')[-1] for c in revcols[4:]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Descriptive Statistics\n", "There are a total of 3723 listings in Washington, D.C area in the dataset. The very first question one might ask is the spatial distribution of these listings. Are people in Georgetown area more willing to host (list) their properties on AirBnB than those in Foggy Bottom? What neighborhoods are leading in the listings count? To be able to answer questions of this kind, I created a table (Appendix A) as well as a map (Figure 1) showing the number of listings per neighborhood.\n", "\n", "The AirBnB listings dataset is also attribute rich, Listing.csv has 91 columns (Appendix A), including listing id, name, neighborhood, room type, description, latitude, longitude, host id, host listings count, number of reviews, and review scores. Other than the total review score, each listing reviewed has scores of six review categories: accuracy, check-in, cleanliness, communication, location, and value. Then one might wonder what the average review score for each category is. For all of the six categories, I found that (Figure 2) the guest satisfaction in general is very high; value and cleanliness are the lowest two with 9.32 and 9.33 respectively, and communication is the highest with 9.75 (One of course from these results should not interpolate that the hosts in the capital are good communicators but dirty, just as the main theme of the city, the politics itself). I should note that only 2846 listings of 3723 are reviewed at least once.\n", "\n", "For data management operations, Python’s Pandas library [7] is used, and for visualization Folium [4] and Seaborn [8] exploited." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
neighborhoodrating
0Columbia Heights, Mt. Pleasant, Pleasant Plain...351
1Dupont Circle, Connecticut Avenue/K Street285
2Capitol Hill, Lincoln Park242
3Shaw, Logan Circle239
4Union Station, Stanton Park, Kingman Park234
5Edgewood, Bloomingdale, Truxton Circle, Eckington194
6Kalorama Heights, Adams Morgan, Lanier Heights183
7Brightwood Park, Crestwood, Petworth140
8Downtown, Chinatown, Penn Quarters, Mount Vern...135
9Howard University, Le Droit Park, Cardozo/Shaw114
10West End, Foggy Bottom, GWU95
11Georgetown, Burleith/Hillandale87
12Southwest Employment Area, Southwest/Waterfron...63
13Ivy City, Arboretum, Trinidad, Carver Langston52
14Takoma, Brightwood, Manor Park47
15Brookland, Brentwood, Langdon44
16Cathedral Heights, McLean Gardens, Glover Park43
17Cleveland Park, Woodley Park, Massachusetts Av...41
18Spring Valley, Palisades, Wesley Heights, Foxh...28
19North Michigan Park, Michigan Park, University...26
20Historic Anacostia24
21Friendship Heights, American University Park, ...23
22North Cleveland Park, Forest Hills, Van Ness22
23Twining, Fairlawn, Randle Highlands, Penn Bran...18
24Colonial Village, Shepherd Park, North Portal ...16
25Hawthorne, Barnaby Woods, Chevy Chase15
26Woodridge, Fort Lincoln, Gateway12
27Near Southeast, Navy Yard12
28Lamont Riggs, Queens Chapel, Fort Totten, Plea...9
29Capitol View, Marshall Heights, Benning Heights7
30Sheridan, Barry Farm, Buena Vista7
31River Terrace, Benning, Greenway, Dupont Park6
32Douglas, Shipley Terrace6
33Mayfair, Hillbrook, Mahaning Heights6
34Eastland Gardens, Kenilworth5
35Congress Heights, Bellevue, Washington Highlands5
36Fairfax Village, Naylor Gardens, Hillcrest, Su...4
37Deanwood, Burrville, Grant Park, Lincoln Heigh...3
38Woodland/Fort Stanton, Garfield Heights, Knox ...3
\n", "
" ], "text/plain": [ " neighborhood rating\n", "0 Columbia Heights, Mt. Pleasant, Pleasant Plain... 351\n", "1 Dupont Circle, Connecticut Avenue/K Street 285\n", "2 Capitol Hill, Lincoln Park 242\n", "3 Shaw, Logan Circle 239\n", "4 Union Station, Stanton Park, Kingman Park 234\n", "5 Edgewood, Bloomingdale, Truxton Circle, Eckington 194\n", "6 Kalorama Heights, Adams Morgan, Lanier Heights 183\n", "7 Brightwood Park, Crestwood, Petworth 140\n", "8 Downtown, Chinatown, Penn Quarters, Mount Vern... 135\n", "9 Howard University, Le Droit Park, Cardozo/Shaw 114\n", "10 West End, Foggy Bottom, GWU 95\n", "11 Georgetown, Burleith/Hillandale 87\n", "12 Southwest Employment Area, Southwest/Waterfron... 63\n", "13 Ivy City, Arboretum, Trinidad, Carver Langston 52\n", "14 Takoma, Brightwood, Manor Park 47\n", "15 Brookland, Brentwood, Langdon 44\n", "16 Cathedral Heights, McLean Gardens, Glover Park 43\n", "17 Cleveland Park, Woodley Park, Massachusetts Av... 41\n", "18 Spring Valley, Palisades, Wesley Heights, Foxh... 28\n", "19 North Michigan Park, Michigan Park, University... 26\n", "20 Historic Anacostia 24\n", "21 Friendship Heights, American University Park, ... 23\n", "22 North Cleveland Park, Forest Hills, Van Ness 22\n", "23 Twining, Fairlawn, Randle Highlands, Penn Bran... 18\n", "24 Colonial Village, Shepherd Park, North Portal ... 16\n", "25 Hawthorne, Barnaby Woods, Chevy Chase 15\n", "26 Woodridge, Fort Lincoln, Gateway 12\n", "27 Near Southeast, Navy Yard 12\n", "28 Lamont Riggs, Queens Chapel, Fort Totten, Plea... 9\n", "29 Capitol View, Marshall Heights, Benning Heights 7\n", "30 Sheridan, Barry Farm, Buena Vista 7\n", "31 River Terrace, Benning, Greenway, Dupont Park 6\n", "32 Douglas, Shipley Terrace 6\n", "33 Mayfair, Hillbrook, Mahaning Heights 6\n", "34 Eastland Gardens, Kenilworth 5\n", "35 Congress Heights, Bellevue, Washington Highlands 5\n", "36 Fairfax Village, Naylor Gardens, Hillcrest, Su... 4\n", "37 Deanwood, Burrville, Grant Park, Lincoln Heigh... 3\n", "38 Woodland/Fort Stanton, Garfield Heights, Knox ... 3" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# number of listings per neighborhood\n", "grouped = pd.DataFrame(df.pivot_table(index='neighborhood',values='rating',aggfunc='count')).sort('rating',ascending=False).reset_index()\n", "grouped # Appendix A" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# number of listings per neighborhood\n", "mapname= 'neighborhoods'\n", "m = folium.Map(location=[38.92,-77.03], zoom_start=12, tiles='OpenStreetMap')\n", "m.geo_json(geo_path='neighbourhoods.geojson', data=grouped, data_out=mapname+'.json',\n", " columns=['neighborhood','rating'],\n", " key_on='feature.properties.neighbourhood',\n", " fill_color='PuRd', fill_opacity=0.7, line_opacity=0.2,\n", " legend_name='AirBnB listings per neighborhood')\n", "m.create_map(path=mapname+'.html')\n", "HTML('')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": [ "iVBORw0KGgoAAAANSUhEUgAABEsAAALMCAYAAAAcvTwhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", "AAAXEQAAFxEByibzPwAAIABJREFUeJzs3Xl4Tdf+x/HPyWCImLWKBkH1IIYkFVOCEqVqbs1UW2NV\n", "W/SnqKKDtrgtWrSlWjVrSMQQmtY8h2uuMRVTKDXPMnB+f3jOvvvISSSSiOr79Tx5ru5prbPPSZ67\n", "P2et77LYbDabAAAAAAAAIElyyeoOAAAAAAAAPEoISwAAAAAAAEwISwAAAAAAAEwISwAAAAAAAEwI\n", "SwAAAAAAAEwISwAAAAAAAEwISwAAAAAAAEwISwAAAAAAAEwISwAAAAAAAEwISwAAAAAAAEwISwAA\n", "AAAAAEwISwAAAAAAAEwISwAAAAAAAEwISwAAAAAAAEwISwAAj6UlS5bIarXKarVq+PDhKR7buXNn\n", "Wa1WjRs3Lk1tjB8/3mjj3h8fHx8FBQWpe/fuCg8PT89LcapevXrJtu3n56cXXnhBw4YN04EDB9J8\n", "7djYWONaW7ZsSfV5YWFhslqtqlOnTprbdCYxMVFHjx512BYVFWX07c6dOxnSTlazf446dOiQaW0c\n", "OHDAuG87d+5M9riIiAjjuJdffjnFa7Zo0UJWq1WjRo3K6O6myP7Znzdv3kM5LzOcPn1a165dy+pu\n", "PJBBgwYl+7enUqVKqlGjhtq0aaOJEyfq77//zpA2d+zYoeHDh6tJkyby9fWVj4+PAgMD1atXLy1c\n", "uPCx+VsA4NFCWAIAeCyFhoYa/168eLGuX7+e4vEWi0UWi+WB2sqWLZv8/f0dfqxWq1xcXLRu3ToN\n", "GjRIPXv21O3btx/o+ikpWrSoQ7u+vr7y8vLSuXPnFBISoldeeeWBw5q03hP7sQ96H83Wr1+vJk2a\n", "JOl7RrbxqHgYr8lqtapgwYKS7j54JmfdunXGv/fv368LFy44Pe7KlSs6ePCgLBaLAgMDM7azqfQg\n", "9ys9v+cZISEhQV9//bUaNWqkixcvZlk/MoKnp2eSv3vPPPOM3N3dtXv3bo0fP16NGzfW0qVLH7iN\n", "q1evql+/fmrfvr1++eUXHTt2TE8++aTKli2ruLg4rV69WgMHDlTLli11/PjxDHx1ACC5ZXUHAADI\n", "aKdOndLmzZuVN29eeXt7a+fOnVq8eLHatWvn9PjRo0fr1q1bypcv3wO198QTT2jWrFlO9+3cuVM9\n", "e/bUmjVrNHnyZL355psP1EZyWrVqpT59+iTZnpiYqO+++04TJ07U0KFD5e/vLy8vrwxt+14NGjRQ\n", "lSpV5OaW/v97MWnSJB09ejTJg22lSpW0dOlSWSwWubg8Ht/5dOzYUS+99JJy5syZqe1Ur15dERER\n", "2r59u15//XWnx6xfv16SVLp0aR0+fFjr169Xs2bNkhy3bds22Ww25ciRQ1WrVs3UfmeUadOmKTEx\n", "UU888USW9eHMmTP67rvvHouwr3z58po+fbrTfUeOHNEXX3yhtWvX6v3335eHh4fq1q2bpuufP39e\n", "bdu2VWxsrJ588km99dZbatWqldzd3Y1jli9frtGjR+vgwYPq2LGj5s+fr8KFC6fnZQGA4fH4fxkA\n", "AJiEhYXJZrPJz89P9erVkyT98ssvyR5fpEgReXt7K3/+/BnelypVquidd96RpGQDlczg5uamt99+\n", "Wz4+PkpISFBISEimt+np6Slvb+9MDWVy5MihUqVKydvbO9PaeNjy588vb29vPfXUU5naTvXq1SUl\n", "P7LkwIEDOnfunEqVKqUmTZpIchxpYrZ161ZJkr+/v7Jly5YJvc14Xl5e8vb2lqenZ5b14XEISVLD\n", "29tb33//vYKCgpSYmKgPPvhAN27cSPX5NptNAwcOVGxsrIoVK6Y5c+aobdu2DkGJJAUHB2vWrFkq\n", "WLCgzp49q48//jijXwqAfzHCEgDAY8Vms2nBggWSpDp16ujFF1+UdPdBcNeuXVnSp4CAAEl3vym9\n", "dOnSQ23b/q1/dHT0Q203o9hstqzuwmOjZs2aku5+Dp1NWVi7dq1xXFBQkCRp48aNTq9lD0tq1aqV\n", "GV19bJk/z4/7Z9vFxUUjRoyQu7u7Lly4oNmzZ6f63GXLlmn9+vWyWCz6+OOPVaxYsWSPfeKJJ/T2\n", "229LklatWsV0HAAZhrAEAPBY2bx5s06ePClXV1fVr19fXl5eqlSpkmw2m+bMmeP0HGcFXu1FTgMD\n", "A/X333+rR48eqlSpkgICAvTee++lqU8JCQmS7n6r7OHh4bDPXhgxPj5ev//+uzp37qznnntOlStX\n", "VsuWLfXzzz8rMTExjXchadu5cuV64GukVkoFXtetW6devXqpRo0aqlChgqpVq6bOnTtr9uzZRh/N\n", "17A/jH///feyWq0aPHiwpOQLvNqLTs6dO1exsbEaPHiwateuLR8fH9WuXVsffvihTp486bTfiYmJ\n", "mjdvntq0aaOqVavK399fr732mjZs2GC017lzZ4dzbt++rdmzZ6t9+/by9/c3Ck726dNHq1evTtN9\n", "S67Aq70gaUxMjLZs2aIePXqoWrVqqlixoho3bqzx48en6dv6YsWKycvLSzabTdu3b0+y3z6KJDAw\n", "UBUqVFDevHl14cIF/fHHHw7H3bhxQ/v27ZPFYjECGLv9+/dr6NChevHFF+Xn5ycfHx/VrFlTPXr0\n", "UGRkpNN+nTlzRiNGjFDDhg3l4+MjX19fNW7cWJ999lmy75l0N2zYtm2bevXqpWrVqqlSpUpq2LCh\n", "xowZ47RGkbMCr/b3t23btkpMTNRPP/2kZs2aqXLlynruuefUpUsXrVixItk+7NmzR++++67q1q2r\n", "SpUqqVGjRvr+++8VHx9vtHfq1ClJd//OBAcHG31/4YUXnBZR3rNnjwYMGKC6devKx8dHAQEB6ty5\n", "s0JDQ50WMrX//Vq3bp0OHDigd999VzVr1pSPj4/q16+vL774ItnaM5mtcOHCxvSb5cuXp/o8+0hA\n", "+9/g+2nWrJk+//xz/frrrypevPgD9RUA7kVYAgB4rNgLuwYEBBi1CexTCpYtW6YrV64ke66zIfLx\n", "8fF64403tHHjRpUpU0aurq56+umn09Qn+0NC9erVnU5ZsFgsGjt2rN5++23t3btXxYsXV+7cubV/\n", "/36NHDlS77//fpras0tISDBGC6S1XkB63Hsfp0+fru7du2v16tXKli2bypcvr9y5c2vr1q365JNP\n", "1LVrV+MhsFChQvLz8zOmShQpUkT+/v5Jpt0kN51h3759at68uRYuXCgPDw95e3vr77//1vz589W6\n", "dWudPn3a4fi4uDj16dNHQ4cO1Z49e1SgQAGVKFFC//3vf9W1a1fNnDkzSXs2m039+vXTJ598op07\n", "d6pQoUIqV66cbDabli9frl69eumbb75J932zbwsJCdGrr76qLVu2qEiRIipUqJBiYmI0ceJEde3a\n", "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\n", "uWrRokWyI0fMUz/MtSzs4VJmBjx169aVu7u7Tp06ZYyuMIuLi1N4eHiS7R988IHatWunH374Ick+\n", "Nzc3I0gwv55HTY0aNWSz2RQWFqYrV67IarUmu/JIYGCgbDablixZohs3bsjf3z9JIdHY2FhJUvny\n", "5Z1ew/47arPZjNofFy9eVMOGDfXGG284HXFVsmRJFSlSRNKjdS+zZ8+uOnXqyGazJTtCLblVt8w1\n", "g8yf7ZIlS8rb21s2m03Tpk1zeu727duNukz2FW4eZXfu3NFHH30kSSpSpIhatGiR6nODgoKMYsMf\n", "f/yxTp06leyxJ06c0JdffinpbqFslhsGkFEISwAA/2hnz541gghnK5fcq3nz5sb0izlz5mRq36S7\n", "w+o/+ugjxcTEpLjSRWY4cOCABg0aJEkqVqyYGjRokOZrXLlyRRcuXEjxJyWNGzc2pnF8/vnnDgUv\n", "L1y4YCyXWrlyZYclYO1THU6ePJnmPqdWwYIF1aFDB0nSwIEDHVaHuXjxovr27eu0fftD3y+//JJk\n", "9Eh0dLRmzJghKflVbB4F9pDKXuvH2agSO/u+iIgISc7rldiX1v7ll1905swZY/u1a9c0fvx4TZ48\n", "2dhmL7yaP39+46F/8ODBRpFT6e6D9qxZsxQdHS1XV1eHVXoeBb1795arq6siIiL07bffGsVTbTab\n", "5syZo6lTpzo9zzyF597P1rvvvivp7qi38ePHO9TfiIqK0jvvvCPpbpBgXwI6PeyjWA4fPpzmYrj3\n", "s2/fPnXv3l0bN26Um5ubPv/88yQ1ZhITE432nY0qGz58uAoXLqwTJ06oTZs2Cg0NdbgniYmJioiI\n", "ULt27XT58mUVLlxYn376aZraAICUsBoOAOAfLTw8XLdv31a2bNmM5YFT4unpqaZNmyokJETr1q27\n", "by2E1IxsOHv2bJIlRG02m/EwkpCQIBcXF/Xu3dvpN8LpGT0RGhqaZFSEzWbT+fPndeLECUl3CyZ+\n", "/fXXTpcVTYnNZtNbb7113+P++9//JluY8oknntDnn3+uAQMGaPr06Zo3b56KFy+u27dv6/jx44qP\n", "j1eBAgX02WefOZxXoUIFrV69WosXL9aBAwdUtWpVo+5FRurfv7/27dunrVu3qn379ipRooRy5cql\n", "6Oho3blzRz4+Pvrjjz+MaReS1KBBA7Vp00YhISEaOHCgRo4cqSJFiujatWs6fvy4pLvhT69evTK8\n", "vxmlYsWKypUrlzFVJKWwxGq1qlChQjp37pwk52FJv3791Lt3b/35558KDg42pokcO3ZM8fHxKl68\n", "uKS70zLMU3I++eQTtW3bVtHR0WrSpImKFSum3Llz69SpU7p06ZIsFov69etnhDFZ5d7f0QoVKmjI\n", "kCH69NNP9c0332jatGkqXry4Tp06pfPnz6tKlSrauXOnJDnU6ciXL5+KFi2qU6dOqXfv3ipdurTe\n", "ffddBQUFqVGjRurfv7/Gjh2riRMn6ueff5a3t7cuXLhgjKwICAgwijan165du4zwdvr06QoICEjT\n", "+fv27XP4u2ez2XTz5k2dPn1aly9fliTlyZNHo0aNchrunD592phu88UXX6hly5YO+59++mn98ssv\n", "6tmzpw4ePKghQ4bo448/1tNPP60cOXLo6NGjunHjhqS778c333yTZNnw+7UBACkhLAEA/KMtWLBA\n", "FotFzz//vPLly5eqczp06KCQkBDduXPHGC6fXE2RlGqN2PclJCQYD0Z2Li4u8vDwkLe3t3x9fdW6\n", "detkp+Dcr55JSn07ffp0ksDHzc1NefLkUdWqVRUUFKR27do5jNpIrbTWWUnu+KZNm+qpp57SzJkz\n", "tXv3bsXExChbtmzy9vZW3bp19frrryd577p3766///5by5cv1/Hjx++75KjFYknVe3Wv7Nmza+rU\n", "qZo5c6YWLVqko0eP6vz58woICNCbb76p7du3648//kiyItLHH38sX19fhYeH69ChQzp06JBy5cql\n", "qlWr6sUXX1Tbtm1TVcwypb6lZt+D1sJxdXVVQECAVq1aJQ8PjyTLWd+rZs2aWrRokdPlhaW7U5rm\n", "z5+vb7/9Vvv27dORI0fk4eEhq9WqBg0aqFOnTpoyZYomTpyo1atXq3PnzpLuhmnz58/Xjz/+qHXr\n", "1unEiRM6ffq0ChUqpFq1aqlz585Oa1Ck556l9tj7HdehQweVLVtWU6ZM0e7du3Xw4EF5eXnpjTfe\n", "0Isvvqh69epJ+l8hYbtvvvlGI0aM0MGDB3Xs2DEjYJOkHj16qHr16po+fbq2bdumQ4cOKU+ePKpZ\n", "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\n", "XV0VERGhbt26afTo0WrWrJkk6ZtvvtG3336rEiVK6KWXXlLOnDkVHR2tNWvWKCoqSpMmTVKdOnVU\n", "vnx59enTRxMmTFCuXLn0+uuvq1y5csm+nvXr1+vNN9/UnTt3VLt2bZUsWVL79+9XSEiIIiMjNW3a\n", "NCN8sZsyZYr279+v4OBgBQUFafPmzYqIiNC2bdu0dOlSeXh4JNseAAAAAACPknSHJVOnTtWOHTvU\n", "pEkTjRw5Um5udy/Zrl07tWvXTiNHjtS3336rjz76SHny5EnyoD1u3Dh9//33GjJkiH788UeHa588\n", "eVILFy40QpRy5crpo48+0tSpUzV8+HC1b99ekvTOO++oUaNG2rRpk86cOaPChQsb1zhy5Ihef/11\n", "DRw4UJKUmJio4OBg7dmzRyVKlFBERIRy5colSapYsaKGDRum8PDwJGFJWvz999964YUXNHbsWLm6\n", "ukqSmjRpoi5dumjWrFlJwhKzJUuWKDIyUtWqVdO3335r9K1r165q2bKlRo4cqZdeekkXL17U5MmT\n", "VaZMGYWGhip79uzGNebOnauPPvpICxYsUJ06dWS1WmW1WjVhwoT71km5fv26BgwYIIvFoh9++EE1\n", "a9Y09s2bN09Dhw5V//79FRER4RDyHDhwQLNnz1alSpUk3R0d06VLF23ZskUrVqxQ06ZNH+xmAgAA\n", "AADwkKV7Gk54eLjc3Nw0ZMgQIyiRJB8fHw0YMECtWrVSaGioEhIS1LVr1yQjEt5++20VL15cGzZs\n", "0MmTJx32vfTSSw6jTfz8/CRJ+fLlM4ISSXJ3d5ePj49sNluSa1gsFnXv3t34bzc3N+OBvlOnTkYY\n", "Yb7+vddIK4vFop49expBiSRVq1ZNnp6e9712eHi4JGnw4MEOfStWrJg++OADdevWTdevX5e7u7tG\n", "jx6tESNGOAQlkhQQECBJSaYlpcbKlSt18eJFtWzZ0iEokaTWrVuratWqiomJcZh6JEm1atUy7qt0\n", "9x7Uq1dPUvrvJwAAAAAAD1O6RpbExcXpyJEjKlOmjPLnz59kf5cuXSTdHfkhSdWrV09yjKurq3x9\n", "fXX8+HHt379fxYoVM/aVLFnS4Vj7VI6nn346yXVy5sxp9Mksd+7cKlCggNPrFC9e3GF7jhw5nF7j\n", "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\n", "/ViwYIHc3d3VtGnTdL8PAAAAAAA8LIQl9zFu3Djd+H/27j3u6/n+H/jjotDBIWclmlOXHMspyuaQ\n", "w2hIbSKS+MqIbTaEOcxmk2G2hNmXWJiKhL45H1o5xAhJUVapnEpSXCj6/P7o17X3tUJ0XS7pfr/d\n", "rtt2vV/vz/v9fH1ertOj1+v1rqjITTfdlF133bXy+Omnn5799tsvDz74YCoqKlKvXr2cffbZ+fjj\n", "j3PVVVdl3333rTz397//ff7+97/n9ttvT9euXTN06NDcf//92W233XL11VenQYMGSZLjjz8+HTp0\n", "yCWXXJKDDz44K6+88teq+eOPP84999yTRo0aVR674YYb8tprr6Vnz57p2bNn5fFSqZQjjzwyzz//\n", "fJ566qnKWSxXXHFFJk+enOOPPz5nnHFG5fk//OEP07Nnz1x55ZW56qqr0rFjxwwfPjx33XVXlbDk\n", "9ddfz3PPPZf9998/a6211tfqBwAAANQGYcmX6Nq1aw488MAqQUmSrL322tliiy3y4osvZvbs2Zkw\n", "YUImT56cdu3aVQlKkqRHjx5ZddVVs/nmmydJhgwZkiQ5++yzK4OSJGnSpEnOOeeczJo1Kx9++GHW\n", "WGONr1Vz69atqwQlSbLHHnvkt7/9bX74wx9WOV5WVpZddtklzz//fN57770kybx58/J///d/WXvt\n", "tXP66adXOb9du3bp2bNnNthggyTJPvvsk0aNGuW+++7Lr3/966yyyipJFs4qSZKOHTt+rT4UVVRU\n", "LPW5CxYsWOb7AQAAsGITlnyJPfbYI8nCZSnjx4/P1KlT8/rrr2fs2LF5+eWXkySfffZZ5f9v2bLl\n", "YtdYZ5118stf/rLy83HjxqV+/fopLy9f7NzDDjtsmWtu2rTpYsfKy8tTXl6eTz75JC+++GImT56c\n", "qVOn5pVXXsmoUaMq+5EkU6dOzYcffpidd955ibNbijNT6tSpk0MOOSQ33XRTHn300RxwwAEplUq5\n", "6667st5662XPPfdc5v4s6T0FAACAmiIs+RLvvPNOLrnkktx///2VYcL666+fVq1aZYMNNsj06dNT\n", "KpUye/bsJMnqq6/+pdecPXt21l577RqrebXVVlvs2Lx583LVVVfl1ltvzQcffJBkYa3bbbddtthi\n", "izz77LMplUqV9SVJw4YNl+p+HTt2zE033ZQhQ4bkgAMOyKhRo/LGG2/khBNOyEor2UMYAACA5Yuw\n", "5AuUSqWceOKJGT9+fI466qj86Ec/yhZbbFEZiPzkJz/J9OnTk6Ry49a5c+cu8Voffvhh5ZKb+vXr\n", "58MPP1ziefPmzcvKK69cZUbHkpaWfPTRR1+pL3/84x/Tv3//7L777unevXuaN2+e9ddfP0ly2WWX\n", "5dlnn608d1Gdi0KVJd27Xr16lZ9vtdVW2XbbbTNy5MjMmTMnQ4cOTZIcfvjhX6nGzzN69OilPveo\n", "o9V+lWMAACAASURBVI7KuHHjquW+AAAArJj8s/8XeOWVVzJ+/Pi0bds2559/flq2bFkZlMyfPz+T\n", "J0+uPHfrrbdOkrzwwguLXWfu3LnZdddd07179yQLl8RUVFTk1VdfXezcP/3pT9lhhx3y9NNPJ1m4\n", "zGVJwUrx3ktjyJAhadCgQf72t79lzz33rAxKkmTixIlJUjmzZLPNNkvdunUzduzYJQY1Xbp0yS67\n", "7FIlsOnYsWPmz5+fhx9+OI8++mh22GGHbLbZZl+pxs9Tv379pf4wkwUAAIBl5S/LL7DoMbpvv/12\n", "5RKcZOHeHn/4wx8yZ86cJAuDk5133jlNmzbNI488kscff7zKda655pp89tlnlfufdOjQIcnC2R4f\n", "f/xx5XlvvPFGBg8enAYNGmTHHXdMkmyxxRb58MMPK8OTZOGGpzfccMNX7svHH3+cd999t8rxoUOH\n", "5rHHHkuSfPrpp0mSVVZZJQcffHBmzpyZvn37Vjn/sccey7hx49KyZcsqs0vat2+fVVddNVdddVXe\n", "fffdaptVAgAAAN80y3C+wPe+9720atUqzz33XDp16pTWrVtn/vz5GTFiRKZMmZJ11lkn7777bt57\n", "771svvnmueSSS3LCCSfkf/7nf7LPPvukadOmGTNmTP71r3+lZcuW6datW5KFy1MeeeSRPPTQQznk\n", "kEPStm3bfPrpp7n33nvz4Ycfpm/fvpVPlenSpUvOO++8/PSnP60MJB566KGss846qVevXuVskC/T\n", "sWPH/PWvf02nTp1ywAEHpG7dunnxxRfz7LPPZt11183MmTMrn4aTJGeeeWZGjx6dvn375vHHH0/L\n", "li3z5ptv5oEHHshaa62VCy+8sMr1V1999ey3334ZOnRoVltttRx88MHVMgYAAADwTTOz5Ev07ds3\n", "Rx55ZN5///3ccssteeSRR7Lpppvmb3/7W84666wkyfDhw5MkO+20U26//fb88Ic/zOjRo9O/f/+8\n", "+eabOeGEE3LDDTekTp3/ZFN/+ctfcu6556ZBgwa54447MnTo0Gy77bbp169f9t5778rzfvzjH+c3\n", "v/lNGjdunMGDB+f+++9Pu3bt0q9fv9SpUydlZWWV55aVlVX5vOi0007LGWeckTXWWCO333577rnn\n", "nixYsCDnnXdeBgwYUKUfycJHIw8cODDHHXdcZs6cmf79++fpp5/OQQcdlIEDB6Zx48aL3aN9+/ZJ\n", "Fj5eeGk3hwUAAIBvm7LS0k5NgC9x9dVX5y9/+UtuvPHGtG7dulZqOPzwwzN27Ng0atYwB1y8S63U\n", "AADwXTTq0gm5b+DDtV0GwDfCzBKqxdtvv51//OMf2WyzzWotKAEAAIDqYM8Slsktt9ySwYMHZ/Lk\n", "yamoqMj5559f2yUBAADAMhGWsEwaN26cadOmpUGDBjn99NOz33771XZJAAAAsEyEJSyTvffeO6NG\n", "jartMgAAAKDa2LMEAAAAoEBYAgAAAFAgLAEAAAAoEJYAAAAAFAhLAAAAAAqEJQAAAAAFwhIAAACA\n", "AmEJAAAAQIGwBAAAAKBAWAIAAABQICwBAAAAKBCWAAAAABQISwAAAAAKhCUAAAAABcISAAAAgAJh\n", "CQAAAECBsAQAAACgQFgCAAAAUCAsAQAAACgQlgAAAAAUCEsAAAAACoQlAAAAAAXCEgAAAIACYQkA\n", "AABAgbAEAAAAoEBYAgAAAFAgLAEAAAAoEJYAAAAAFNSp7QKgJnz49icZdemE2i4DAOA7o2HdNWq7\n", "BIBvjLCE76QtN9sqgwcOru0yAAAAWA5ZhgMAAABQICwBAAAAKBCWAAAAABQISwAAAAAKhCUAAAAA\n", "BcISAAAAgAJhCQAAAECBsAQAAACgQFgCAAAAUCAsAQAAACgQlgAAAAAUCEsAAAAACoQlAAAAAAXC\n", "EgAAAIACYQkAAABAgbAEAAAAoEBYAgAAAFAgLAEAAAAoqFPbBUBNePXfE7PvTw6t7TIA4HOtUXe1\n", "3HnLgNouAwBYAmEJ30mrbrB2tjyzc22XAQCfa8Klt9V2CQDA57AMBwAAAKBAWAIAAABQICwBAAAA\n", "KBCWAAAAABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAAAECBsAQAAACgQFgCAAAAUCAsAQAAACgQ\n", "lgAAAAAUCEsAAAAACoQlAAAAAAXCEgAAAIACYQkAAABAgbAEAAAAoEBYAgAAAFAgLAEAAAAoEJYA\n", "AAAAFAhLAAAAAAqEJQAAAAAFwhIAAACAAmEJAAAAQIGwBAAAAKBAWAIAAABQICwBAAAAKBCWVLNe\n", "vXqlvLw8Tz75ZG2XUsWCBQsycODAvPPOO5XHBg8enPLy8vz5z3+uxcoAAADg20VYsoL45S9/mfPP\n", "Pz+ffPJJ5bEWLVqkZ8+ead26dS1WBgAAAN8udWq7AL4ZM2fOTFlZWZVj5eXlKS8vr6WKAAAA4NvJ\n", "zJIVSKlUSqlUqu0yAAAA4FtNWPINePPNN3P++ednr732yrbbbpu2bdvml7/8ZSZOnLjE85988sn0\n", "6NEju+++e1q1apUOHTrk1ltvzYIFC6qcN3bs2PzqV7/KXnvtle222y4tW7ZMhw4d0q9fv8pQZNq0\n", "aSkvL88zzzyTJNl///2zzz77JPnPniVXXnlllevOnj07vXv3zn777Zdtt902u+22W376059m9OjR\n", "Vc5bdO3f/va3efbZZ9OtW7e0atUqLVu2zLHHHpunn366Wt4/AAAA+CYJS2rYuHHjcuihh2bgwIFp\n", "1qxZjjnmmGy33Xa5995706lTp4wcObLK+TfffHOOO+64PPPMM2nbtm06d+6cTz75JBdddFEuuOCC\n", "yvNGjhyZI444IiNGjEibNm3SvXv37Lfffpk8eXJ69+6dyy67LEmy5pprpmfPnmncuHGS5Jhjjkm3\n", "bt2q3LO4POfNN9+sDFzWXnvtHH300dljjz3y+OOP5+ijj86dd965WB+fe+65HHvssfnss89y5JFH\n", "pk2bNhk1alS6d++eMWPGVNdbCQAAAN8Ie5bUoAULFuSMM87I3Llz84c//CEdOnSobBsxYkR69OiR\n", "X/3qV3n44YfToEGDTJs2Lb17987666+f/v37Z9NNN02S/PznP8/RRx+dQYMGpUuXLikvL0/v3r2z\n", "0korZcCAAWnWrFnldV977bW0b98+Q4YMyRlnnJHVV189PXv2zKhRo/LGG2+ka9euadq06efWfN55\n", "5+XNN9/MqaeemlNOOaXy+Msvv5yjjz46559/fnbdddc0adKksm3cuHHp1atXlRCmT58+6du3bwYO\n", "HJjtttuuGt5NAAAA+GaYWVKDnn/++UycODFt2rSpEpQkyZ577plDDz00s2fPzv33358kGTZsWObP\n", "n58TTjihMihJklVWWSVnnXVWTj311NStWzfJwgDlsssuqxKUJMnmm2+eddZZJ7NmzfrK9b799tsZ\n", "OXJkNttssypBSbLwyTndu3fP/PnzM3jw4Cpta6yxRrp27VrlWLt27ZIk06dP/8p1/LeKioql/vjv\n", "pUoAAADwVZlZUoNefvnlJMluu+22xPadd945d955Z8aNG5cklf/bsmXLxc7daaedstNOO1V+vu++\n", "+yZJZsyYkVdffTVTp07N5MmTM2bMmMqgpFQqLfYEnKWpd9ddd11i+y677FKlzkU22WSTrLRS1dyt\n", "YcOGSZJ58+Yt9f0/z5LeDwAAAKgpwpIaNHfu3CTJ6quvvsT2DTbYIEny0UcfJVm4seoXnV/02muv\n", "pXfv3hkxYkTlZq4bb7xxdt5550ycODFz5sz5ymHJl9W7/vrrV6l3kVVXXXWxcxfd19N3AAAAWN4I\n", "S2rQotDh7bffXmL7nDlzkiSNGjVKktSvXz/Jf0KLogULFmT+/PlZddVVU1FRkW7dumXWrFk56aST\n", "su+++2azzTarfH2bNm2+Vr2LZoMsbb3flP9+Cs8XOeqooxab+QIAAABfhT1LalCLFi2S5HMfofvU\n", "U08lSZo3b54k2XrrrZMkL7zwwmLnDh8+PDvssEP69u2bJ554IjNmzEinTp3ys5/9LNtuu21lUDJr\n", "1qwqy3C+Tr2jR4/Op59+ulj7qFGjqtT7Talfv/5Sf/z3ciAAAAD4qvxlWYNatmyZzTbbLM8++2wG\n", "DhxYpe2JJ57I4MGD06hRo+yzzz5JkkMOOSQrr7xyrr/++iobo86bNy/XXXddysrKsueee6ZevXpJ\n", "kjfeeKPKNT/55JOcd955lSFJMfBYtDHsF+0hsuGGG6ZNmzaZOnVqrrrqqipt48ePz/XXX59VV101\n", "7du3/6pvBQAAACw3LMOpQWVlZbnsssvSrVu3nH/++Rk2bFi23nrrTJ48OY899lhWW221XH755ZWz\n", "QjbZZJOcccYZueSSS9KhQ4fsu+++WX311TN8+PBMmTIl3bt3z/bbb5+PP/44m266aUaMGJGjjz46\n", "O+64Y+bMmZPhw4dn5syZadSoUd57772899572XDDDZMkjRs3TpJcdNFF2WWXXdKzZ88l1vzb3/42\n", "Xbp0ybXXXpsnnngiLVu2zDvvvJOHHnoopVIpv/vd76o8NhgAAAC+a8wsqWZlZWVVNlVt0aJF7rzz\n", "znTq1CmTJk1K//79M27cuHTo0CF33nln9thjjyqv79atW6677rq0aNEiDz74YP7xj3+kXr16ueii\n", "i3LmmWcmSVZbbbX069cv7du3z9SpU9O/f/889dRT2WGHHXLrrbema9euKSsry2OPPVZ53ZNOOikt\n", "W7bM6NGjc8stt+SDDz6orLeocePGueOOO3Lsscdm1qxZufXWW/PMM89k3333zT/+8Y8cdthhNfTO\n", "AQAAwLdDWcnjSvgOOfzwwzN27Ng0bLZRdrm4R22XAwCfa8Klt+XhgXfVdhkAwBKYWQIAAABQICwB\n", "AAAAKBCWAAAAABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAAAECBsAQAAACgQFgCAAAAUCAsAQAA\n", "ACgQlgAAAAAUCEsAAAAACoQlAAAAAAXCEgAAAIACYQkAAABAgbAEAAAAoEBYAgAAAFAgLAEAAAAo\n", "EJYAAAAAFAhLAAAAAAqEJQAAAAAFwhIAAACAAmEJAAAAQIGwBAAAAKBAWAIAAABQICwBAAAAKBCW\n", "AAAAABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAAAECBsAQAAACgoE5tFwA14ZO3Z2XCpbfVdhkA\n", "8LnWqLtabZcAAHwOYQnfSVtttkUGDxxc22UAAACwHLIMBwAAAKBAWAIAAABQICwBAAAAKBCWAAAA\n", "ABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAAAECBsAQAAACgQFgCAAAAUCAsAQAAACgQlgAAAAAU\n", "CEsAAAAACoQlAAAAAAXCEgAAAIACYQkAAABAgbAEAAAAoKBObRcANeHVif/Ovj/6SW2XAcBSWqNe\n", "3dw58JbaLgMAIImwhO+oVdfaIFsecmZtlwHAUppw96W1XQIAQCXLcAAAAAAKhCUAAAAABcISAAAA\n", "gAJhCQAAAECBsAQAAACgQFgCAAAAUCAsAQAAACgQlgAAAAAUCEsAAAAACoQlAAAAAAXCEgAAAIAC\n", "YQkAAABAgbAEAAAAoEBYAgAAAFAgLAEAAAAoEJYAAAAAFAhLAAAAAAqEJQAAAAAFwhIAAACAAmEJ\n", "AAAAQIGwBAAAAKBAWAIAAABQICwBAAAAKBCWAAAAABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAA\n", "AEDBChmWTJs2LeXl5TnqqKNqu5QlGjx4cMrLy3PllVdWHuvVq1fKy8vz5JNP1mJlAAAA8N1Xp7YL\n", "qE1lZWW1XcIXKtbXrl27bLzxxmnatGktVgQAAADffSt0WLI8adeuXdq1a1fbZQAAAMB33gq5DAcA\n", "AADg83wnZ5bMnz8/N910U+655568/vrradCgQbbddtucfPLJ2X777b/wtcOGDcvNN9+ccePGJUm2\n", "2GKLHHHEEenUqdNi544dOzb9+vXLv/71r7z77rupU6dOmjVrlkMOOSTdunWrXEYzbdq0tGvXLl26\n", "dMlBBx2UPn365MUXX0ypVMr222+fU045JbvuuusX1tWrV68MGTIk/fr1y+67754kKS8vz1577ZVf\n", "/epXueKKK/LMM89k/vz5ad68eY4//vjsv//+i13n8ccfz/XXX58xY8Zk3rx52XTTTXPYYYela9eu\n", "qVOn6n8OAwYMyODBgzNp0qTMnz8/m2yySQ4++OAcd9xxqVu3buV5U6dOTZ8+ffLcc8/l7bffzppr\n", "rplWrVqlR48e2Wabbb6wXwAAAPBt852bWTJv3rx07do1l112WebPn5+OHTtmr732yqhRo9KlS5eM\n", "GjXqc1/7u9/9LqeffnreeuutHHrooencuXPmzJmTX//61zn33HOrnDty5MgcccQRGTFiRNq0aZPu\n", "3btnv/32y+TJk9O7d+9cdtlli13/ueeey7HHHpvPPvssRx55ZNq0aZNRo0ale/fuGTNmzNfq75Qp\n", "U9K5c+e8/fbb6dSpU/bbb7+MHTs2p512Wh566KEq595www05/vjjM378+BxwwAE55phjstJKK+XS\n", "Sy9Njx498tlnn1We27dv31xwwQX5+OOP07Fjx3Tu3DmfffZZrrjiivTq1avyvFmzZqVz58554IEH\n", "0qpVq3Tv3j277bZbHn300Rx11FEZP3781+oXAAAA1Jbv3MySfv36ZfTo0Wnfvn0uueSSytkSnTt3\n", "TufOnXPJJZfkqquuWux1jzzySG6++ea0bt061157bVZbbbUkyemnn56f/vSnueOOO7LnnnvmwAMP\n", "TJL07t07K620UgYMGJBmzZpVXue1115L+/btM2TIkJxxxhlV7jFu3Lj06tUr3bp1qzzWp0+f9O3b\n", "NwMHDsx22233lfs7adKkdO3aNeecc07lsd133z3nnHNObr311sp9TsaPH58//vGP2XLLLdO/f/+s\n", "tdZaSZJf/epXOffcc3PHHXfkxhtvzPHHH58k6d+/fzbZZJMMHjw4K6+8cpLkF7/4RQ4//PAMGzYs\n", "vXr1ynrrrZd777037777bi6++OJ07Nixsoa77747Z555Zm699dZcdNFFX7lfAAAAUFu+czNLhgwZ\n", "kjp16uTcc8+tsqxk2223zRlnnJHDDz88n3766WKvu+2225Ik55xzTmVQkiR169atDD0GDRpUefzn\n", "P/95LrvssipBSZJsvvnmWWeddTJr1qzF7rHGGmuka9euVY4tCjOmT5/+FXu6UFlZWU4++eQvveaA\n", "AQNSKpVy+umnVwYli5x55plZaaWVqvSvVCpl1qxZmTBhQuWxVVZZJf369cszzzyT9dZbr/K8JHn+\n", "+eervK8HHXRQHn744Vx44YVfq19FFRUVS/2xYMGCZb4fAAAAK7bv1MySTz75JJMmTcoWW2yRRo0a\n", "LdZ+7LHHJlm4h8h/W7QM5t577839999fpW3RH+Avv/xy5bF99903STJjxoy8+uqrmTp1aiZPnpwx\n", "Y8ZUBiWlUqnK43832WSTrLRS1XyqYcOGSRYuH/o61lprrcXCj9VXX32xay7q3+OPP56XXnppsevU\n", "r18/kydPzkcffZR69eqlS5cuufrqq9OhQ4eUl5enTZs2adOmTXbZZZcqIdSBBx6Yq6++OoMGDcr9\n", "99+f3XffPW3atMn3v//9NGnS5Gv16b+1bNmyWq4DAAAAS+M7FZbMnj07yX8CiK9izpw5SZJrrrlm\n", "ie1lZWWV5yQLl9v07t07I0aMqJxdsfHGG2fnnXfOxIkTM2fOnMXCklVXXXWJ103+M0Pjq1raay6q\n", "/eabb17idcrKyir7WK9evZx22mlp1qxZBg4cmNGjR2fcuHH53//936y55po58cQTK5frrLvuuhk8\n", "eHD++te/5qGHHsr9999fGTa1bt06F1544WKzbwAAAODb7DsVltSvXz9J8sEHHyyx/eOPP15iuJAk\n", "DRo0yPz58zN69OgvvU9FRUW6deuWWbNm5aSTTsq+++6bzTbbrPL+bdq0+Zo9qDkNGjRIWVlZHn/8\n", "8ay99tpL9ZpDDjkkhxxySD744IM888wzGT58eO6666788Y9/zPrrr58f/ehHSZINN9wwF1xwQS64\n", "4IK8+uqrefLJJzN06NA89dRTOemkk3LfffctU+1LMyaLHHXUUZVPMgIAAICv4zu1Z8nqq6+exo0b\n", "Z/LkyXn//fcXaz/zzDOzww47LHFfixYtWuSjjz7KK6+8sljbzJkzc/HFF1fu6fHEE09kxowZ6dSp\n", "U372s59l2223rQxKZs2aVWUZzrdFixYtUiqV8vzzzy/W9sknn+T3v/99brzxxiTJ22+/nT//+c+5\n", "8847kyycqbP33nvnwgsvzAUXXJAkeeaZZ5IsfNTyhRdeWBlQbbXVVjn22GMzYMCAbLrpppkyZUpm\n", "zJixTLXXr19/qT/+e5kTAAAAfFXfub8sO3TokE8//TS9e/eu8ijcsWPH5tFHH03Tpk0rn+5S1KlT\n", "pyTJb37zmyozUxYsWJDf/e536d+/fyZNmpQklRvAvvHGG1Wu8cknn+S8886rDEmWtJFsbVnUv0sv\n", "vXSx8OLKK6/M3//+98oZHA0aNMj111+fP/3pT4ttVDt16tQkSdOmTZMsfMrObbfdttjynvfffz+z\n", "Z89OgwYNlrh/DAAAAHxbfaeW4SRJjx49MnLkyAwePDhjx47Nrrvumrlz52bYsGFZeeWVc+mlly5x\n", "xkf79u0zcuTIDBkyJD/84Q/zgx/8IA0bNszjjz+eCRMmZJtttql86szOO++cTTfdNCNGjMjRRx+d\n", "HXfcMXPmzMnw4cMzc+bMNGrUKO+9917ee++9bLjhht/0W7BELVu2zMknn5yrr746Bx98cPbZZ5+s\n", "vfbaefbZZ/PCCy+kSZMmlY8fbtiwYU477bRcdtllad++fdq1a5c11lgjr7zySkaOHJlNN900nTt3\n", "TpJ069YtQ4cOzZVXXplRo0Zl6623zkcffZQHH3wwc+bMya9//esqG8ICAADAt9137q/YVVZZJX//\n", "+99z/fXXZ+jQobnttttSr169tG3bNqeeemq23nrrJT4NJ0kuueSStG7dOgMGDMiwYcNSKpXStGnT\n", "/PznP88xxxyTBg0aJFk4s6Rfv3654oor8swzz2TMmDHZYIMNssMOO+T444/PE088kb/85S957LHH\n", "KkOFr2LRZqtfduyrOu2007Lddtulf//+efjhhzNv3rw0adIk3bt3zwknnFBlL5MTTjghTZo0yS23\n", "3JKHH344c+bMyUYbbZRu3brlpJNOqnziztprr51//OMfue666zJy5MiMHj06q666arbZZpt07do1\n", "e+211zLVDAAAAN+0stK3aWMNWEaHH354xo4dm4YbNMsux1xc2+UAsJQm3H1pHr5nYG2XAQCQ5Du4\n", "ZwkAAADAshCWAAAAABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAAAECBsAQAAACgQFgCAAAAUCAs\n", "AQAAACgQlgAAAAAUCEsAAAAACoQlAAAAAAXCEgAAAIACYQkAAABAgbAEAAAAoEBYAgAAAFAgLAEA\n", "AAAoEJYAAAAAFAhLAAAAAAqEJQAAAAAFwhIAAACAAmEJAAAAQIGwBAAAAKBAWAIAAABQICwBAAAA\n", "KBCWAAAAABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAAAECBsAQAAACgQFgCAAAAUFCntguAmvDJ\n", "7Lcz4e5La7sMAJbSGvXq1nYJAACVhCV8J221xWYZPHhgbZcBAADAcsgyHAAAAIACYQkAAABAgbAE\n", "AAAAoEBYAgAAAFAgLAEAAAAoEJYAAAAAFAhLAAAAAAqEJQAAAAAFwhIAAACAAmEJAAAAQIGwBAAA\n", "AKBAWAIAAABQICwBAAAAKBCWAAAAABQISwAAAAAKhCUAAAAABcISAAAAgII6tV0A1IQJr/47B+37\n", "k9ouA4AkDdaom0F33lLbZQAALDVhCd9Jq6+6Qfbe8szaLgOAJI9OuLS2SwAA+EoswwEAAAAoEJYA\n", "AAAAFAhLAAAAAAqEJQAAAAAFwhIAAACAAmEJAAAAQIGwBAAAAKBAWAIAAABQICwBAAAAKBCWAAAA\n", "ABQISwAAAAAKhCUAAAAABcISAAAAgAJhCQAAAECBsAQAAACgQFgCAAAAUCAsAQAAACgQlgAAAAAU\n", "CEsAAAAACoQlAAAAAAXCEgAAAIACYQkAAABAgbAEAAAAoEBYAgAAAFAgLAEAAAAoEJYAAAAAFAhL\n", "AAAAAAqEJQAAAAAFwpIVWJ8+fVJeXp5BgwbVdikAAADwrSEsIWVlZbVdAgAAAHxrCEsAAAAACoQl\n", "AAAAAAXCkuVA7969U15ensGDBy+xvV27dmnZsmU++uijLFiwIIMGDcoxxxyT3XbbLdtuu2123333\n", "nHTSSXnuuee+9F7HHHNMysvLM3Xq1MXavv/976e8vHyx4y+++GJOOeWUtG7dOtttt10OPPDA/PnP\n", "f05FRcVX7ywAAADUMmHJcuDwww9PkgwdOnSxtueeey7Tpk3LgQcemHr16uXss8/Oeeedl7lz5+aw\n", "ww5L165ds+WWW+axxx5L165dM378+C+93xftYfLfbcOGDcuRRx6ZJ598Mj/4wQ9y3HHHZZ111sk1\n", "11yTo446Kh988MFX7C0AAADUrjq1XQBfbsstt8w222yTp556KjNnzsy6665b2Xb33XcnSTp06JCX\n", "Xnopd911V1q3bp1+/fpVCTYuv/zy/O1vf8s999yzxNkhRaVSaanqmjlzZs4555w0atQoAwYMSJMm\n", "TSrbrrrqqlx11VW54oorcv7553+V7gIAAECtMrNkOXH44YdnwYIF+b//+7/KY/Pnz8+9996bJk2a\n", "ZNddd816662XSy+9NOeee+5iM0B23XXXJMmsWbOqraYhQ4bk448/zkknnVQlKEmSk046KY0aNcqQ\n", "IUPy6aefLtN9KioqlvpjwYIFy3QvAAAAMLNkOdG+fftccsklueeee3LssccmSf75z3/m/fff54rl\n", "/gAAIABJREFUz9FHH50k2WCDDXLIIYdkwYIFmTBhQv79739n2rRpmThxYp5++ukkqdYwYcyYMUkW\n", "7lnSp0+fxdrr1auX9957L5MnT84WW2zxte/TsmXLr/1aAAAA+KqEJcuJNddcM3vvvXceeOCBTJ48\n", "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\n", "o5x44olZZZVVlqm+slKpVFqmK0ANmj17do488shMmjQpm222Wdq2bZt33303999/f5o0aZIbb7wx\n", "G2200RdeY/r06encuXPee++9tG/fPuuuu24efPDBTJkyJccdd1zOOuusb6g3K6bqGMOiN954I0cf\n", "fXTeeOON/O53v0unTp1qsPoVV3WM2+DBg3POOeekXr162X///bPOOuvk+eefz3PPPZfGjRtn4MCB\n", "WXfddb+hHq04qmPsBgwYkAsuuCBrr712DjzwwKy88sp58MEH89Zbb+Xkk0/Oaaed9g31ZsVS3d8v\n", "k+Smm27KH/7wh5SVleXhhx/2y34NqY6xmzFjRvbcc8+0aNEi++yzz2Lt22+/fb7//e/XVBdWWNUx\n", "djNnzkyXLl0yZcqUtG3bNuXl5Rk7dmyefPLJNGnSJHfcccfXCjv5css6fk8//XSefvrpJba99NJL\n", "eeyxx7LlllvmjjvuWOY/vKmqOr72nn/++XTt2jWfffZZ9t9//2y44YYZOXJkJkyYkNatW+eGG27I\n", "Sistw2KaEnyLnXvuuaXmzZuXTj311NK8efMqjz/33HOlbbbZpnTiiSd+6TVOOeWUUvPmzUvDhw+v\n", "PPbxxx+XjjjiiFJ5eXnppZdeqpHaWag6xnCRp59+utS2bdtS8+bNS82bNy8NGjSoJkqmtOzjNnv2\n", "7FLLli1LO+20U2nSpElV2v785z+XmjdvXjrrrLNqovQV3rKO3bvvvlvaZpttSm3bti3NnDmz8vjc\n", "uXNL7dq1K2299dalqVOn1lj9K7Lq/H5ZKpVKr732Wmn77bcvNW/evFReXl6aPn16dZfM/1cdYzd8\n", "+PBS8+bNS3/9619rslT+S3WM3c9+9rNS8+bNSzfffHOV43369Ck1b9689Mc//rHa62ah6v6+ucjs\n", "2bNLe+21V6lVq1alKVOmVFe5FFTH2B1xxBGl5s2blx544IHKY59++mmpe/fupebNm5fuuuuuZarR\n", "niV8a3322WcZNmxY6tatm9/85jepW7duZVvLli1zyCGHZPjw4ZkwYcLnXmP69Ol56KGH0qpVqyr/\n", "GrPqqqvmF7/4RUqlUgYMGFCj/ViRVccYJskHH3yQXr16pWvXrqmoqMjOO+9c06Wv0Kpj3IYPH56K\n", "ior8+Mc/TrNmzaq0nXzyyalbt24effTRmurCCqs6xm7cuHFp3LhxOnfunHXWWafyeMOGDbP33ntn\n", "wYIFefHFF2u0Hyui6vp+WbzeWWedlXXXXTfNmzdPyUTiGlNdYzd+/PgkSXl5eY3Wy39Ux9i99dZb\n", "ue+++9K6det06dKlSlu3bt1y6KGHZv3116+xPqzIqvv7ZtFvf/vbvPnmmznrrLOyySabVGfZpPrG\n", "bsyYMVlzzTWrLBFeeeWVK5fpP//888tUp7CEb6133303FRUVadasWRo1arRY+9Zbb50keeaZZz73\n", "Goum1e2+++6LtbVq1Sp16tTJqFGjqqli/lt1jGGSTJ06NUOGDMkPfvCD3H333dltt91qpF4Wqo5x\n", "22KLLXL66afngAMOWKxtpZVWSp06dVJRUVF9RZOkesauTZs2eeCBB3LKKacs1vbaa68liV/8a0B1\n", "fb9c5K9//WteeumlXHzxxalfv3611kpV1TV2wpJvXnWM3fDhw5MkBx100GJtDRs2TO/evdO1a9dq\n", "qpii6v6+ucizzz6boUOHZscdd8xPfvKTaqmVqqpr7NZaa6188MEHmTNnTpXjb7/9dpIs8/54whK+\n", "tRatC5w3b94S2+fOnZskmTZt2udeY/LkyUmyxES4bt262WijjTJt2rR8+umny1gtS1IdY5gkG2yw\n", "QQYOHJhrr702TZo0qd4iWUx1jFuLFi1y4oknZscdd1ysbcSIEfnoo4+y1VZbVUO1FFXX11zR/Pnz\n", "89prr+X888/P448/nt13393srhpQnWP38ssv5+qrr86RRx6Z1q1bV1+RLFF1jd24ceNSv3793Hff\n", "fTn00EPTsmXLtG3bNuedd15mzJhRvUWTpHrGblHItcUWW+Tuu+9Op06dsuOOO6Zt27a58MIL8957\n", "71Vz1SxSEz/zkuSSSy5JWVlZevXqtWwF8rmqa+y6dOmSzz77LL/4xS/y73//OxUVFXnooYfSt2/f\n", "rLXWWsu8t6GwhG+ttdZaK5tuumlef/31jB07tkrbggUL8vDDDydZuETj8yz6AfV5m2qtvvrqWbBg\n", "wRdeg6+vOsYwWZgKb7/99jVWJ1VV17gtydy5c/P73/8+SXLUUUcte7FUURNjt9dee+Xggw/OwIED\n", "s+OOO6ZPnz7VWjMLVdfYzZs3L2eddVY22mijnHHGGTVWL/9RHWP38ccfZ8qUKamoqMi1116bHXfc\n", "MUcccUQ23HDDDBo0KB07dsz06dNrtB8rouoYu3feeSdJcv3116dXr17ZaKONcuSRR2ajjTbKbbfd\n", "ls6dO+f999+vuU6swGriZ96oUaMyZsyYtG7deon/4EP1qK6xO/nkk/PrX/86Tz/9dA466KC0atUq\n", "PXv2zPrrr59BgwZlww03XKY6hSV8q5144okplUo59dRT8+ijj+aDDz7IlClTctZZZ2XSpElJ8oXr\n", "sOfPn58kn7t79aLjn3zySTVXziLLOobUjpoYtw8++CAnnnhipkyZkh/84Afp2LFjTZS+wqvOsSuV\n", "Stl///3TvXv3bL/99nn++efTuXPnvPXWWzXZhRVWdYzdlVdemYkTJ+YPf/hD6tWr902UTZZ97GbM\n", "mJEtt9wyu+yyS+6777785je/Sa9evXL77benR48eeeedd/LrX//6m+rOCmVZx27RktJHHnkk1157\n", "bfr06ZOzzjorgwYNyhFHHJEpU6bk8ssv/0b6siKq7t9XbrzxxiTJSSedVBPlUlAdY/fUU0/luuuu\n", "S506dXLIIYfkuOOOyw477JCJEyfmnHPOWeagss4yvRpqWMeOHfPmm2/mmmuuyU9/+tPK45tttlku\n", "vPDCnHnmmVlttdU+9/WL2j5vitei4w0aNKjGqila1jGkdlT3uM2YMSM9evTIyy+/nB133DF/+tOf\n", "aqJsUr1jV1ZWlgsuuKDy88svvzx/+9vfcuGFF+baa6+t9tpXdMs6dv/6179y44035phjjrFU6hu2\n", "rGPXtGnT3HXXXUtsO+2003L33XfnqaeeyowZM7LeeutVe/0rsmUdu0WPJT3wwAMXe7TzGWeckTvv\n", "vDP33XdfLrrooprpwAquOn/mzZo1K8OHD8/mm29uf7xvwLKO3VtvvZUePXqkfv36ueuuu6psu3DV\n", "VVflqquuyllnnbVMv68IS/jW69mzZw499NCMGDEiFRUV2XLLLdO2bdvKDbW+6JeGNddcM8l/1r39\n", "t7lz56asrCwNGzas/sKptCxjSO2prnF75ZVX0qNHj7z11lvZfffd07dvXxtO1rCa+pr7+c9/ngED\n", "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\n", "QUFBsLGxQXl5OW7fvo20tDSo1WrY2Nhg1KhRCA8PlwRndHr27ImhQ4eiqKgIV69exZUrV2BiYoKR\n", "I0fik08+wfPPPy+WtbGxwcsvvwxzc3Pk5OTg4sWLyM/Px/PPP49Zs2bhnXfekSxkfP/+fXz77bew\n", "sLCQjGjR16tXLwwePBglJSXIzMxEWloaysvL4ebmhrfeessguENERI2LI0uIiIjomVJcXIybN2/C\n", "0dFRHAmg7+DBg5g3bx5Gjx6Njz/+uAlqSERERE2Na5YQERHRM6WwsBD+/v4YMWIE8vLyJHm5ublY\n", "u3YtZDKZ0REXRERE9Gzg1sFERET0TOncuTNGjRqFAwcOwNvbG+7u7mjdujUKCwtx9uxZaLVaBAYG\n", "Yvjw4U1dVSIiImoinIZDREREz5yKigrs27cPu3btwvXr16HRaNCqVSs4OTkhKCgI3t7eTV1FIiIi\n", "akIMlhARERERERER6eGaJUREREREREREehgsISIiIiIiIiLSw2AJEREREREREZEeBkuIiIiIiIiI\n", "iPQwWEJEREREREREpIfBEiIiIiIiIiIiPQyWEBERERERERHpYbCEiIiIiIiIiEgPgyVERERERERE\n", "RHoYLCEiIiIiIiIi0sNgCRERERERERGRHgZLiIiIiIiIiIj0MFhCRERERERERKSHwRIiIiIiIiIi\n", "Ij3/ByMFVBOox2gXAAAAAElFTkSuQmCC\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# describe the data\n", "dd = (df[revcols].sum()/len(df)).order(ascending=False)\n", "ax = sns.barplot(y=dd.index,x=dd.values)\n", "#ax = dd.order().plot(kind='barh',color=sns.color_palette('hls'),figsize=(5,3))\n", "ax.set(xlim=(9,9.81),xlabel='Average Review Score',title='AirBnB Listings in Washington, D.C.');\n", "sns.despine(trim=True)\n", "plt.gcf().savefig('docs/review_scores.png',bbox_inches='tight')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(2846, 91)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.shape" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#export related fields to a csv file\n", "df[revcols] = df[revcols].astype(int)\n", "df[['host_id']+revcols+['number_of_reviews','listing_url','name','neighborhood','room_type','description','latitude','longitude']].to_csv('data/reviewed_listings.csv',encoding='utf8')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Design\n", "A typical web application stack consists of a database server, a web server, a server-side web application framework, and front-end libraries (JS/CSS). A geo-web app on the other hand requires specific technologies and configuration." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Back End\n", "On the server-side a geo-web app needs to store, operate on and communicate spatial data types effectively. First, regarding spatial data storage and operations, PostgreSQL along with its PostGIS extension allows keeping the data in various geometry types including Polygon and Point. Therefore, I import all the listings reviewed in the Listing.csv data file along with the more related columns (selected columns and rows can also be found in a file named reviewed_listings.csv in the repository) to my application into a PostgreSQL database (see Appendix B for the database schema), and create a new column of type geometry to keep and operate on the listing coordinates in a single column as points. For full text searching I leverage text search functions and operators in PostgreSQL [6].\n", "\n", "Second, to communicate the geospatial data better, I make us of a web server that is effective in creating responses to spatial client requests such as panning and zooming and that can handle specialized protocols such as WMS and WFS, namely GeoServer. I create a store for connecting to the database, and generate a layer (view) on top of it to be published by the server. The code snippet being used for creating the view is available in Appendix C. Given the parameters, the server configured to create and send JSONP objects over WFS when requested (by the browser).\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Front End\n", "The front end of the application works in the browser and thus heavily depends on JavaScript libraries. The application utilizes Leaflet library [5] for mapping (in particular using its geoJson, Icon, and markerClusterGroup classes) and uses JQuery's ajax method [9] for asynchronous communication. In addition to these, it makes use of a rating plugin built on top of Twitter's Bootstrap library [3], namely Krajee's star-rating plugin (open sourced and [available](https://github.com/kartik-v/bootstrap-star-rating) on GitHub online repository hosting service) [2]. Finally, I use three markers from the Map Icons Collection project to denote the room type of the listings.\n", "\n", "When the application is run, it basically shows a map of inquired region, along with some control tools. Since this demo focuses on the Washington, DC area, for the initial settings I set the center of the map accordingly (of latitude and longitudes: ~39, ~-77) with a zoom level enough to show the entire district but not much more." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Ratings (stars)...\n", "# \n", "\n", "# onclick...\n", "function change() {\n", " var query = document.getElementById('myTextField').value;\n", " var cleanliness = $('#cleanliness').val()*2;\n", " var accuracy = $('#accuracy').val()*2;\n", " var communication = $('#communication').val()*2;\n", " var checkin = $('#checkin').val()*2;\n", " var loc = $('#loc').val()*2;\n", " var val = $('#val').val()*2;\n", " console.log(cleanliness);\n", " if (query.length == 0) {\n", " alert('Nothing to search for...');\n", " return;\n", " }\n", " group.removeLayer(geojsonlayer);\n", " viewparam = {\n", " viewparams: \"word:\" + query +\n", " \";cleanliness:\" + cleanliness +\n", " \";accuracy:\" + accuracy +\n", " \";communication:\" + communication +\n", " \";checkin:\" + checkin +\n", " \";loc:\" + loc +\n", " \";val:\" + val\n", " };\n", " parameters = L.Util.extend(defaultParameters, viewparam);\n", " URL = owsrootUrl + L.Util.getParamString(parameters);\n", " console.log(\"Geoserver URL: \" + URL);\n", " queryWFS(URL);\n", "}" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# and the demo...\n", "HTML('')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "Utilizing an effective geo-web app development stack, the demo application extends upon AirBnB website. The contributions are three-fold, the application allows its users i) to filter the listings by review scores for six reputation categories by clicking on the star ratings, ii) to search in listing descriptions by entering a key phrase into the search box, and iii) to experience better visualization by adopting a different marker for each listing room type and by providing clustered-listings views. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "\n", "1.\tAirbnb, Inc. - Financial Report | Annual Revenue | Stock: http://www.privco.com/private-company/airbnb. \n", "1.\tBootstrap Star Rating - © Kartik: http://plugins.krajee.com/star-rating\n", "1.\tBootstrap · The world’s most popular mobile-first and responsive front-end framework.: http://getbootstrap.com/. \n", "1.\tFolium: Python Data. Leaflet.js Maps. — Folium 0.1.2 documentation: http://folium.readthedocs.org/en/latest/. \n", "1.\tLeaflet — an open-source JavaScript library for interactive maps: http://leafletjs.com/. \n", "1.\tPostgreSQL 9.1: Text Search Functions and Operators: http://www.postgresql.org/docs/9.1/static/functions-textsearch.html.\n", "1.\tPython Data Analysis Library — pandas: Python Data Analysis Library: http://pandas.pydata.org/index.html.\n", "1.\tSeaborn: statistical data visualization — seaborn 0.6.0 documentation: https://stanford.edu/~mwaskom/software/seaborn\n", "1.\tjQuery.ajax() | jQuery API Documentation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Appendix B\n", "```CREATE TABLE listings (\n", " id integer PRIMARY KEY,\n", " host_id integer,\n", " accuracy integer,\n", " cleanliness integer,\n", " checkin integer,\n", " communication integer,\n", " location integer,\n", " value integer,\n", " number_of_reviews integer,\n", " listing_url character varying(50),\n", " name character varying(50),\n", " neighborhood character varying(100),\n", " room_type character varying(15),\n", " description character varying(1000),\n", " latitude double precision,\n", " longitude double precision\n", ");```\n", "\n", "I copied the records in the CSV file to this table using the `copy` command in postgres:\n", "`copy listings from 'reviewed_listings.csv' DELIMITERS ',' CSV HEADER;`\n", "Latitute and longitude data (which was imported as `double precision`) are now to be converted to PostGIS geometry (point) object with the following code:\n", "\n", "`alter table listings add column the_geom geometry;`\n", "\n", "`update listings set the_geom = ST_GeomFromText('POINT(' || longitude || ' ' || latitude || ')',4326);`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Appendix C\n", "Using default connection settings, I first connected my PostGIS database to GeoServer (called `store` on this side), and named this `store` after the database `airbnb` ([instructions](http://docs.geoserver.org/stable/en/user/data/database/postgis.html)). \n", "\n", "Then, I created the `layer`/`view` named `dc` where I set my default search term as `Potomac` and rating values set to zero ([instructions](https://github.com/boundlessgeo/workshops/blob/master/tutorials/wordmap/src/index.rst#define-the-sql-view)):\n", "\n", "```SELECT name,listing_url,room_type,cleanliness,accuracy,communication,checkin,location,value,number_of_reviews,the_geom\n", "FROM listings\n", "WHERE\n", " (to_tsvector(description) @@\n", " to_tsquery(regexp_replace(trim('%word%'), E'\\\\s+', '&', 'g')))\n", " and cleanliness >= cast('%cleanliness%' as integer)\n", " and accuracy >= cast('%accuracy%' as integer)\n", " and communication >= cast('%communication%' as integer)\n", " and checkin >= cast('%checkin%' as integer)\n", " and location >= cast('%loc%' as integer)\n", " and value >= cast('%val%' as integer)```" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 0 }