Welcome to Wiki Page of Group 7. In this page, you will find everything you need to know about our “Rate My Place!” application.

Team

Our team consists of three motivated students who come to Codecamp to eagerly learn about Sailfish OS, that's why we called ourselves as The Three Fishermen. All of us currently studied under Erasmus Mundus Master of Pervasive Computing and Communications for Sustainable Development (PERCCOM) and came all the way from University of Lorraine, France to study one semester in Lappeenranta University of Technology.In case you want to know more about our “Rate My Place!” application or PERCCOM Program, feel free to contact us on below email addresses.

Name Student No. Email Address
Chandra Satriana 0424786 chandra.satriana@lut.fi
Md. Mohaimenul Hossain 0424689 md.hossain@lut.fi
Alifia Fithritama 0424663 alifia.fithritama@lut.fi



Title

We named our application “Rate My Place!”. The idea behind this application came up from our very own experience as Erasmus Mundus Students who are moving from one country to another every 6 months or so. Every time we are moving to a new place, we need to prepare many things, and one of them is about finding an apartment. Without any prior knowledge about the new places, finding a good apartment can be as hard as finding a girlfriend. In order to make your live enjoyable (not miserable), you want to find one apartment that are within walk distance from the university, close to bus stop, has a panoramic view just outside of your window, and of course close enough to the city center where you can reach for any kind of shops, supermarket, cafes, bars and restaurants. You have all these criteria of perfect apartment in your head, but you have no idea how to find one. Well, wonder no more, because with “Rate My Place!” , we assure that you will find your dream apartment just in one click.

Motivation

The theme for Codecamp 2014 is about Open Data, so we decided to make an location-based application using Open Street Map. Our targeted user is anyone who wants to search for a living place. We want to help people to choose a good apartment by providing them a rating for based on the distance of the apartment to 7 nearby places which are bus stops,shops,atm,university,city center, restaurant, and hospitals. We hope that our application will be useful for people who are moving a lot and have limited time to search about appartment information, for example: exchange students, travelers, or businessmen. We would like to develop a user-friendly application that provide an integrated solution so the user can all the information they need in all in one place.

To help the user determine the quality of the apartment, we calculate a rating (from 1 to 5 stars)based on the distance criteria. The nearest the distance from the 7 places, the higher the rating will be. If distance is within 300 meters, score will be 5 star. Within 500 meters, score will be 4 stars. Within 700 meters, score will be 3 stars. Within 1 km, score will be 2 stars. And lastly, within 2 km, score will be 1 star. After getting 7 individual scores, finally we calculate the total score using simple average of those individual scores.For example, an apartment which has bus stops,shops,atm,university,city center, restaurant, and hospitals in 300 meters distance will got highest rate of 5 stars because each of individual scores are also 5 stars. However, we put some exception that if the individual score of bus stop is 5 stars (meaning: there is a bus stop within 300 meter distance from apartment), then the total score will get at least 3 stars. We made an assumption that as long as there is a bus top nearby, it is basically easy to go almost anywhere, therefore the bus stop has the highest priority among all.

Features

We are proudly present our very first Jolla application “Rate My Place!” which has bunch of cool features including:

  • Allow user to input their apartment address
  • Accommodate information for any apartment address in the world
  • Calculate apartment rate (from 1 to 5) based on the distance criteria
  • Calculate approximate distance from apartment to nearest bus stops,shops,atm,university,city center, restaurant, and hospitals
  • Provide detail address and location of the nearest bus stops,shops,atm,university,city center, restaurant, and hospitals



Technology

We are using the following technology in building our application:



Sources

The theme for Code camp 2014 is Open Data, therefore we use the readily available free data on the internet to develop our application. You can find the sources here:



Some Codes

Retrieval of Coordinate of an address

QString urlString =  "http://nominatim.openstreetmap.org/search.php?q="+address+"&viewbox=28.13$2C 61.05$2C28.14$2C61.04&format=xml";

    //Getting the XML for the user's address
    manager = new QNetworkAccessManager(this);
    reply = manager->get(QNetworkRequest(urlString));
    QEventLoop loop;
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();


    //Parsing the XML to get the coordinate of the user's address
    QDomDocument *doc = new QDomDocument();
    doc->setContent(reply);


    //Get the root element
      QDomElement docElem = doc->documentElement();
      QDomNodeList nodeList = docElem.elementsByTagName("place");

      //Check each node one by one.
          //for(int ii = 0;ii < nodeList.count(); ii++)
      for(int ii = 0;ii < 1; ii++)
QString urlString =  "http://nominatim.openstreetmap.org/search.php?q="+address+"&viewbox=28.13$2C 61.05$2C28.14$2C61.04&format=xml";

    //Getting the XML for the user's address
    manager = new QNetworkAccessManager(this);
    reply = manager->get(QNetworkRequest(urlString));
    QEventLoop loop;
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();


    //Parsing the XML to get the coordinate of the user's address
    QDomDocument *doc = new QDomDocument();
    doc->setContent(reply);


    //Get the root element
      QDomElement docElem = doc->documentElement();
      QDomNodeList nodeList = docElem.elementsByTagName("place");

      //Check each node one by one.
          //for(int ii = 0;ii < nodeList.count(); ii++)
      for(int ii = 0;ii < 1; ii++)
                {
              QDomElement el = nodeList.at(ii).toElement();
              latit = el.attribute("lat");
              longit = el.attribute("lon");
          }

      setLatLong(latit+"|"+longit);


Find parameters (bus stops,shops,atm,university,city center, restaurant, and hospitals) closest to the address

//within 500m
            //1. Getting ATM list
            QString atmString = "(node(around:500,"+latit+","+longit+")[\"amenity\"=\"atm\"];>;);out;";
            atmString = "http://overpass.osm.rambler.ru/cgi/interpreter?data="+atmString;
            //Getting the XML
            //manager = new QNetworkAccessManager(this);
            reply = manager->get(QNetworkRequest(atmString));
            connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
            loop.exec();

              doc->setContent(reply);
            //Get the root element
              docElem = doc->documentElement();
              nodeList = docElem.elementsByTagName("node");
              if (nodeList.count()>0){
                  //setAddressToRate("ada di <500m");
                  theATM.score = "4";
                  theATM.distance="500";

                //  setAddressToRate("Score"+theATM.score);
                  for(int ii=0;ii<nodeList.count();ii++){
                      // get the current one as QDomElement
                      QDomElement el = nodeList.at(ii).toElement();

                      atmResult = atmResult+"$"+"lat:"+el.attribute("lat")+"|lon:"+el.attribute("lon");
                  }
                  atmResult=atmResult+"|score:4|distance:500";
                  atmResulti=4;


Rate the place

totalz = totalz+atmResulti + municipalityResulti+restaurantResulti + busStopResulti + universityResulti+ smarketResulti + hospitalResulti;
totalz=qRound(totalz/7.0);                                                                                                                     if(busStopResulti==5){if(totalz<3)totalz=3;}}                                                                                                                                                                                                                                                        



Screenshots




Presentation

Meet Dr.Fish who is pleased to see you in person:
rate_my_place.pdf

Report

Read this to get a detailed explanation:
rate_my_place_report.pdf

Poster

300

Application

You can download our application here:
https://openrepos.net/content/3fishermen/rate-my-place


Source Code

You can download our source code here:
https://dl.dropboxusercontent.com/u/50897880/RateMyPlace.zip