Вы находитесь на странице: 1из 32

Access-Wiki

Department of Electrical and Computer Engineering, Boston University

Himanshu Thapar Advisor: Professor Thomas Little February 15, 2013

Acknowledgement
I would like to thank Prof. Thomas Little for his guidance and support throughout the semester. I would also like to thank James Goebel for helping me install all the software required in the Multimedia & Communications Laboratory. I would like to thank Prof. John Brackett for reviewing my project and providing me with valuable suggestions.

ABSTRACT
The combination of the limited mobility and inaccessible built environments position disabled individuals at risk of exclusion from the opportunities and activities that many take for granted. While a trip to a store maybe a routine activity for a peripatetic (traveling on foot) person, for a people who use a wheelchair, minor features of the built environment such as a curb or a small step can prevent access. Therefore, there is a need to assist people with disabilities in navigating urban environments by providing them with personalized accessible routes. Access-Wiki is webbased system for assisting pedestrians of differing abilities to navigate through urban environments. The PHP Web Application serves as an interface with the MySQL database and maximizes the number of people who can use the application by serving it over the World Wide Web.

INTRODUCTION
Accessibility is an important issue in todays urban and built environments. Urban designers and architects are actively developing new spaces that are easy for people to navigate. However, retrofitting existing urban environments to assist people with disabilities in compliance with legislation has proven to be difficult. For example, in attempt to facilitate ease of movement in urban areas, municipalities have installed curb cuts at major intersections. While this effort has made it easier for wheelchair users, it in turn made it more difficult for the visually impaired person to identify where the sidewalk ended and the street began. While much work is being completed in the planning realm, there is a need for furthering research to assessing the accessibility of pedestrian networks and assisting people with disabilities in navigating urban environments. Access-Wiki is a World Wide Web-based geo-routing system that allows users to obtain optimal pedestrian routes through a built environment. Similar to other navigational tools (Google Map, Map Quest and Map Point), Access-Wiki allows users to select an origin and a destination. However, in addition users are also able to search for specific POIs, which eases their navigation further.

PRELIMINARIES
PHP (v6.0):
PHP is a general-purpose scripting language that is especially suited for web development. PHP generally runs on a web server, taking PHP code as its input and creating web pages as output. It can also be used for command-line scripting and client-side GUI applications. PHP can be deployed on most web servers, many operating systems and platforms, and can be used with many relational database management systems. PHP's principal focus is server-side scripting, and it is similar to other server-side scripting languages that provide dynamic content from a web server to a client, such as Microsoft's ASP.NET system, Sun Microsystems' Java Server Pages, and mod_perl.

MySQL (phpMyAdmin 2.10.3):


MySQL is a relational database management system (RDBMS) and is popular for web applications and acts as the database component of the LAMP, BAMP, MAMP, and WAMP platforms (Linux/BSD/Mac/Windows-Apache-MySQL-PHP/Perl/Python). MySQL is written in C and C++. To administer MySQL databases one can use the included command-line tool (commands: MySQL and mysqladmin) or the GUI administration tools: MySQL Administrator and MySQL Query Browser.

Apache Web Server (v2.2.4):


Apache is a web server notable for playing a key role in the initial growth of the World Wide Web. The application is available for a wide variety of operating systems, including UNIX, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows, OS/2, TPF, and eComStation. Apache supports a variety of features, many implemented as compiled modules which extend the core functionality ranging from server-side programming language support to authentication schemes. Apache features configurable error messages, DBMS-based authentication databases, and content negotiation. It is also supported by several graphical user interfaces (GUIs) which permit easier, more intuitive configuration of the server.

HARDWARE
The hardware used in this project was the GPS enabled phone, which was used to capture the images. We used the AT&T Tilt for this purpose. The theme of our application is geo-tagging images and for this reason we needed a device which has a built-in GPS feature.

The configuration of the phone is as follows: Operating System: Windows Mobile 6.1 Professional Processor: Qualcomm MSM 7200 Chipset 400 MHz Memory: 256 MB FLASH ROM / 128 MB SDRAM Built-In Camera: 3 mega-pixel CMOS imagine sensor with AF and 10x Zoom, NO Flash GPS: Qualcomm gpsOne A-GPS Chipset

Hacking the TILT registry


The Tilt has a built-in GPS feature, which is turned off in the default factory-settings. The only way we could have geo-tagged the images without the GPS feature was to take the images, physically record the address where the image was taken, and look-up the coordinates by using some third party application or by recording the coordinates using an external GPS device. Both these methods could be cumbersome, so instead we altered the registry and turned on the GPS feature in Tilt. We installed the PHM RegEdit, which is a free registry editor for Mobile and Smart phones. The PHM software allows you to do the following tasks: Explore the registry to find the operating system and applications configuration. Modify system and applications tweaks not available from the standard options screens. Export all or parts of the registry to .reg files. Backup and restore the complete registry. Perform search on the registry data.

In order to get this feature working, go to HKEY_LOCAL_MACHINE\SOFTWARE\HTC\Camera\ and in the folder named P9 change the value from 0 to1. Once that is done it will give an option for GPS photo in the type of photo you can take in your camera interface. Once you go to this option it will then initialize the embedded SIRF Star GPS chip. Once the chip is initialized, the camera will grab the Latitude and Longitude from the streaming NMEA (in the WGS 84 datum) and embed it into the EXIF header the moment the photo is taken. It then saves the GPS tagged image in the My Documents folder in a folder named My POI.

SOFTWARE
The Server module is implemented on a Windows Desktop

Platform:
Windows XP, 1 GB RAM J phpMyAdmin 2.10.3 Apache Web Server 2.2.4 PHP 6.0 Dreamweaver 8.0 Running MySQL 5.0.4-dev

Components:
To achieve the functional and performance requirements, the Server module is implemented as two main components:

Web Application MySQL Database.

The requirement of having a GUI to show analyzed data using profile authentication for an enduser is achieved using a Web Application developed in Dreamweaver 8.0. The requirement of efficient data logging capabilities is achieved using a MySQL database. The functional requirement of the server being able to retrieve and fetch pages is achieved through the use of the Web Service component for which Apache Web Server is used. The requirement of having the capability to properly analyze raw data added/uploaded by the user, extract relevant information and convert the data into cooked values is implemented in the Web service component.

Components Architecture
The diagram below shows the components of the Server module and the overall architecture.

The Web Service performs operations on the user data and then stores the processed data/information in a local Database server. The users PDA or laptop has a Web Application with a Web interface (GUI) that would enable the user to authenticate his credentials and review the information to get directions to a destination or to identify the access points and barriers in his/her path.

Web Application
The Web Application provides a user-friendly interface to the end-users. It takes processed data from the database and shows them on the GUI according to user submitted query. It also enables profile authentication before logging a user into the application. The Web Application is 2-tier architecture as follows:

Presentation Layer - This layer contains the UI/Interface code and logic. Data Access layer This layer contains the code to access the database and insert,
update and delete data. The SQL Queries for performing the insert/update/delete functions are also implemented in this layer.

This architecture brings modularity into the Web Application such that if the database implementation changes, which might happen if, further advancement in making this application more scalable is made, the Presentation layer would remain unchanged.

10

The user interface and the functionality provided by the Web Application are shown below:

Registering with Access-Wiki


This page is the landing page for the application.

We have implemented a very basic registration page with the basic details required from the user. Details like Username, Full Name, Email Address and Password are only required for a successful registration. For incorporating a secure registration, we take care of the following details:

Every username is unique No 2 users have the same email address Confirm the authenticity of each email address; this is done by sending an email to the user after the registration procedure is completed.
11

The code snippet which achieves this functionality is in signup.php and is as follows:
if($_POST) { extract($_POST); $quserexist = getSqlQuery("select * from users where username = '$username' || email='$email'"); $userexistresult = mysql_num_rows($quserexist); $quserexistelse = getSqlQuery("select * from users where username = '$username'"); $userexistresultelse = mysql_num_rows($quserexistelse); $quserexistelse1 = getSqlQuery("select * from users where email='$email'"); $eserexistresultelse1 = mysql_num_rows($quserexistelse1); if($userexistresultelse>0 || $eserexistresultelse1>0 || $username=="" || $fullname=="" || !eregi("^[_a-z0-9-]+(\. [_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email) || ($re_email != $email) || $password =="" || ($password != $re_password) || $agree == "") { if($userexistresultelse>0) { $uexistcount="yes"; } if($eserexistresultelse1>0) { $eexistcount="yes"; } if($username == "") { $userisempty="yes"; } if($fullname == "") { $fullnameempty="yes"; } if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) { $emailidempty = "yes"; } if(($re_email != $email)) { $emailnotmatch="yes"; } if($password == "") { $passwordisempty = "yes"; } if($password != $re_password) { $retypepasswordnotmatch = "yes"; } if($agree == "") { $agreeempty = "yes"; } } else { function random_generator($digits) { srand ((double) microtime() * 10000000); //Array of alphabets $input = array ("A", "B", "C", "D", "E","F","G","H","I","J","K","L","M","N","O","P","Q", "R","S","T","U","V","W","X","Y","Z"); $random_generator="";// Initialize the string to store random numbers for($i=1;$i<$digits+1;$i++){ // Loop the number of times of required digits if(rand(1,2) == 1){// to decide the digit should be numeric or alphabet // Add one random alphabet $rand_index = array_rand($input); $random_generator .=$input[$rand_index]; // One char is added }else{ // Add one numeric digit between 1 and 10 $random_generator .=rand(1,10); // one number is added } // end of if else } // end of for loop return $random_generator; } // end of function $confirmation = random_generator(10); getSqlQuery("insert into users(username,fullname,email,password,verify,status) values ('".mysql_escape_string($username)."','".mysql_escape_string($fullname)."','".mysql_escape_string($email)."','".my sql_escape_string($password)."','$confirmation','1')"); 12

Logging into Access-wiki


This page authenticates the user before he/she can view their respective profile. Thus the application can support multiple user profiles.

After the user has successfully registered, they can login into their account. At this time, we confirm their details by comparing the values from the database.

13

The code snippet which does this is in verifylogin.php and is:


$qAdmin = "SELECT * FROM `users` WHERE username= '".$_POST['username']."' AND password= '". $_POST['password']."' AND status =1"; $rsAdmin = getSqlQuery($qAdmin); $no_rows = getSqlNumber($qAdmin); if ($no_rows > 0){ $resAdmin = getSqlFetch($rsAdmin); session_start(); //start a sessiion $_SESSION['userid'] = $resAdmin['user_id']; $_SESSION['username'] = $resAdmin['username']; if($_POST['remember'] == '1') { setcookie('username',$_POST['username'],time()+ 60 * 60 * 24 * 365,"/"); setcookie("password", $_POST['password'], time()+ 60 * 60 * 24 * 365, "/"); setcookie("save",$_POST['remember'] , time()- 60 * 60 * 24 * 365, "/"); setcookie("save",$_POST['remember'] , time()+ 60 * 60 * 24 * 365, "/"); } else { setcookie("username", "", time()-60 * 60 * 24 * 365, "/"); setcookie("password", "", time()-60 * 60 * 24 * 365, "/"); setcookie("save",$save12 , time()- 60 * 60 * 24 * 365, "/"); setcookie("save",$save12 , time()+ 60 * 60 * 24 * 365, "/"); } header("location:view.php"); exit; }else{ header("location:login.php?msg=error"); }

14

Different features inside Access-Wiki


This is the homepage of any particular user, i.e. the page after you login to the system.

After a user logins into their account, they have the following 3 options:

Home Folder - Access their Home Folder Map Me - Get directions to/from an address Search POIs - Search for Points of Interests within a particular radius of a zip code or address

15

Home Folder
This page is the users Home Folder, where a list of images uploaded by the user is maintained.

Within the home folder we maintain a list of all the images that are uploaded by the user. In this section, the user can either upload a new image or edit an existing image. They can also add some text to the image to provide details which can be useful to other users. Also, once a new image is being uploaded we extract the EXIF information in the backend. We check if the image has any location information associated with it.

16

The code snippet responsible for uploading images:


if($_POST){ extract($_POST); if($new_action == 'new'){ $image= $_FILES['image']['name']; $sqlnumquery = mysql_query("SELECT * FROM uploadedimages WHERE image = '$image'"); $sqlnumber = mysql_num_rows($sqlnumquery); if( $sqlnumber <= 0){ move_uploaded_file($_FILES['image']['tmp_name'],'images/googleimages/'.$image); $qNewAdmin = "INSERT INTO uploadedimages(userid,image,imagetype,description,date,status) VALUES ('$userid','$image','$imagetype','$desc',now(),'$status');"; mysql_query($qNewAdmin); $imgid = mysql_insert_id();

If there is any location information, we extract this information and save it so that the user can geo-tag their images. If there is no location information, we give a warning to the user and give them the option if they want to still continue the uploading. The code snippet to extract the location information:
$images = "images/googleimages/".$image; $exif = exif_read_data($images, 0, true); $latpart1 = explode("/",$exif['GPS']['GPSLatitude'][0]); $latpartsub1 = $latpart1[0]; $logpart1 = explode("/",$exif['GPS']['GPSLongitude'][0]); $logpartsub1 = $logpart1[0]; if($latpartsub1=="" or $logpartsub1=="") { ?> <script> if(confirm("You will not be able to view this image in Map as there is no Exif data. Do you still want to continue?")){ } else { document.location.href = 'maps.php?act=new&nogps&dtnew=<?=$imgid?>'; }

For all the images that we have this extra information, can be viewed in the Map. So the user can check all such images and place them in the Map. Also when a new image is being uploaded we ask the user to specify a category that the image belongs to. The reason for this is so that we can differentiate between these images and also if some other user is only interested in a particular category, we can only show them images of their interest.

17

The code snippet for viewing an image in the Map:


for($e=0;$e<count($_POST['checkout']);$e++) { $qGetAdmin = "SELECT * FROM uploadedimages where id = '".$checkout[$e]."' && status=1"; $rsGetAdmin = getSqlQuery($qGetAdmin); $resGetAdmin = getSqlFetch($rsGetAdmin); $images = "images/googleimages/".$resGetAdmin['image']; $qGetAdmincoord = "SELECT * FROM imgdata where imgid = '".$checkout[$e]."'"; $rsGetAdmincoord = getSqlQuery($qGetAdmincoord); $resGetAdmincoord = getSqlFetch($rsGetAdmincoord); $finallatitude = $resGetAdmincoord['lat']; $finallogitude = $resGetAdmincoord['lon']; if($finallatitude!="-0" && $finallogitude!="+0") { ?> var WINDOW_HTML<?=$e?> = '<div style="width: 210px; padding-right: 10px"><img src="<? =$images?>" width=120px height=90px></div>'; var lat = <?=$finallatitude?>; var lon = <?=$finallogitude?>; <? } else { ?> var lat = -0; var lon = +0; <? } ?> map.setCenter(new GLatLng(lat,lon),2); <? if($finallatitude!="-0" && $finallogitude!="+0") { ?> var marker<?=$e?> = new GMarker(new GLatLng(lat,lon)); map.addOverlay(marker<?=$e?>); GEvent.addListener(marker<?=$e?>, "click", function() { marker<?=$e? >.openInfoWindowHtml(WINDOW_HTML<?=$e?>); }); marker<?=$e?>.openInfoWindowHtml(WINDOW_HTML<?=$e?>); <? } } ?> } }

18

Map Me
This page is used by the users for getting driving/walking directions from/to any destination.

In this section of the application, the user can get directions to/from any address. For this section, we have integrated Google Maps into our website. The entire direction functionality is provided by the Google API code. This consists of both the driving and walking directions. However in the case of walking directions, we have included a certain piece of code which checks if these walking directions are the shortest route. The reason for this being that the Google API checks for sidewalks and pathways in walking directions, however does not confirm if they are available or not. So in the application we get these directions and verify if it is the shortest route between the 2 points. If not, we neglect these directions and get the one which provides the shortest route.

19

The code snippet for obtaining directions:


var map; var gdir; var lsc; var geocoder = null; var addressMarker; var startPoint = new GLatLng(-0, +0); var polygon; function initialize() { if (GBrowserIsCompatible()) { map = new GMap2(document.getElementById("map_canvas")); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(startPoint, 15); gdir = new GDirections(map, document.getElementById("directions")); GEvent.addListener(gdir, "load", onGDirectionsLoad); GEvent.addListener(gdir, "error", handleErrors); var options = { suppressInitialResultSelection : true }; lsc = new google.maps.LocalSearch(); map.addControl(new google.maps.LocalSearch(options)); <? if($_POST){ ?> setDirections("<?=$from2?>", "<?=$to2?>", "<?=$locale12?>"); <? } ?> } } function setDirections(fromAddress, toAddress, locale12) { if(locale12 == 'G_TRAVEL_MODE_DRIVING') { var travel=gdir.load("from: " + fromAddress + " to: " + toAddress, {travelMode:G_TRAVEL_MODE_DRIVING}); } else { gdir.load("from: " + fromAddress + " to: " + toAddress, {travelMode:G_TRAVEL_MODE_WALKING}); } }

20

Search POIs
In this part of the application, we assist the user in finding Points of their interest. The idea behind this is that a person with a particular disability can prepare themselves in advance for some access or barrier before visiting the place.

The way this works is, the user provides with an address or zip code. Then they mention a radius they are interested in around this point. So what they can do now is actually search for some attribute within this radius. Example: A person on wheelchair is interested in going to Fenway Park for a Red Sox game. They have never been to that neighborhood before and are not aware of the directions and other information. In that case, they can get the directions to Fenway Park by using any application such as Google Maps, Map Quest or they can have an automobile GPS system. Then if they need additional information like finding exactly where the Handicapped Parking area is, where the automated door entrance is, and other information like this, all they can do is access the Fenway
21

Park website which may or may not provide this information. So in our application we try to combine both these features of getting the directions and finding that extra piece of information. All the user has to do is mention Fenway park, Boston and then mention a particular radius around it like 3 miles, 5 miles and search for particular attributes within this radius like Parking Lots, Entrances/Exits, Rest Areas, Elevator access, Side-Walks, Curb cuts and so on. At this point, we give the directions to the user and also show them all the information that we have in the database regarding these attributes. At this point, the user can also see a panorama view generated which gives the actual satellite view of the area. This view is the Street View feature from Google. But the way we enhance it is, that we restrict the scope of this Street View to the search radius desired by the user and so the resolution of it increases substantially. The code for this entire functionality is in the sop.php file and a snippet of couple of its functions are as follows:
// ---------------------------------------function searchgeo(){ address = $("#searchval").val(); if(address == ""){ alert('please enter address.'); return ; } dirObj.clear(); geocoder.getLocations(address, function(resp){ if ( ! resp || resp.Status.code != 200) { alert("Status Code:" + response.Status.code); return ; } if (resp.Status.code == 200){ if(currentLocation){ map.removeOverlay(currentLocation); } place = resp.Placemark[0]; point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); marker = new GMarker(point); currentLocation = marker; map.addOverlay(marker); map.setCenter(point, map.getZoom()); redrawPoly(); 22

} } ); } // -------------------------------------function loadjson(s){ if(s.data.length == 0){ alert('No records found!!'); return; } for(i = 0; i < s.data.length; i ++ ){ point = new GLatLng(parseFloat(s.data[i].lat), parseFloat(s.data[i].lng)); icon = new GIcon(); icon.image = "images/newicon.png"; icon.iconSize = new GSize(22, 22); icon.shadowSize = new GSize(22, 22); icon.iconAnchor = new GPoint(6, 15); icon.infoWindowAnchor = new GPoint(5, 1); marker = new GMarker(point, icon); marker.id = s.data[i].iid; marker.img = s.data[i].img; marker.imt = s.data[i].imt; marker.imd = s.data[i].imd; smarkers.push(marker); amarkers.push(marker); map.addOverlay(marker); markerevents(marker); marker.hide(); } } // -----------------------------------------

23

Database
The database serves as the repository for analyzed data gathered from the uploaded information by the user. The database consists of 5 main Tables:

tbl_user - Contains the account information of the user tbl_uploadedimages Maintains the list of images uploaded by the user tbl_imgdata Maintains the Image Id, latitude and longitude by extracting this information from the images tbl_imagetypes Maintains the type of image uploaded by the user which is mainly categorized into 2 types: Access Points or Barriers tbl_admin Customizable table for the admin to store metadata which can be used in the future

The database diagram is shown below:

24

Database Implementation
For implementing the database we use the GUI tool phpMyAdmin v2.10.3. This is a very interactive tool where we can import sql files or write the sql query to create the database and its subsequent tables. We name our database maps and create it through the UI option provided in this tool. Within this database created, we write sql queries to implement 5 tables within maps.

25

tbl_usr Users table


In this table we store all the information pertaining to the user like user name, Full name, email address and password. We make sure that each user has a unique user name and no email address is repeated in any 2 accounts. The primary key in this table is the User Id. The query for implementing this table and the screenshot is as follows:
CREATE TABLE `users` ( `user_id` int(55) NOT NULL auto_increment, `username` varchar(55) NOT NULL default '', `fullname` varchar(55) NOT NULL default '', `email` varchar(55) NOT NULL default '', `password` varchar(55) NOT NULL default '', `verify` varchar(111) NOT NULL default '', `status` varchar(55) NOT NULL default '', PRIMARY KEY (`user_id`) ) ENGINE=MyISAM AUTO_INCREMENT=22 DEFAULT CHARSET=latin1;

26

tbl_uploadedimages Uploaded Images table


In this table we maintain a list of all the images uploaded in Access-Wiki. To identify which image belongs to which user we have included the user_id as one of the indexes. Also the permissions in this table are as such any user is free to view any image in this table. Also once the image is successfully uploaded, we dont save the actual copy of the image in the table since this could increase the size of the database drastically and would be a major performance hit. Instead we maintain a link to the image where it is saved on the server. For instance, we create a temporary copy of the image somewhere in the root directory, in our case in a folder called Google Images. In this way we save that extra space and also a reliable way of saving the image is achieved. The query for this table is as follows:
CREATE TABLE `uploadedimages` ( `id` int(111) NOT NULL auto_increment, `userid` int(111) NOT NULL default '0', `image` varchar(111) NOT NULL default '', `date` date NOT NULL default '0000-00-00', `status` tinyint(11) NOT NULL default '0', `imagetype` varchar(45) NOT NULL, `description` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=69 DEFAULT CHARSET=latin1;

27

tbl_imgdata Image data table


In this table we maintain a list of the GPS coordinates associated with each uploaded image. While the upload is happening, we extract the GPS coordinates in the backend using php exif_read_data() function, analyze it in a way in which it is easy to store these values and place it in the table. As these values are associated with an uploaded image, we have the image_id as one of the indexes. Also it is possible that an image without this information is uploaded, in that case we put in garbage values in the table which cannot be plotted on the map (even 0, 0 makes sense and cannot be used here). The query for this table is:
CREATE TABLE `imgdata` ( `id` int(111) NOT NULL auto_increment, `imgid` int(111) NOT NULL default '0', `lat` varchar(111) NOT NULL default '', `lon` varchar(111) NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=latin1;

28

tbl_imagetypes Active attributes table


In this table, we maintain a list of all the attributes that are offered to the users in the application. We have an index called status, the value of which indicates if the attribute is active or not. A value of 1 indicates active and a value of 0 indicates that it is not being offered at that particular time. The general lists of attributes that are always maintained in this table are Parking Lots, Curb cuts, Rest Areas, Public transport, etc. A very simple script is required in case we need to add or delete any attribute. The query for creating this table is:
CREATE TABLE `imagetypes` ( `imetypeid` int(111) NOT NULL AUTO_INCREMENT, `imagetype` varchar(111) NOT NULL DEFAULT '', `status` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`imetypeid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

Also we have some attributes in the application which are active. For this purpose, we need to insert some data into this table. The query for this is as follows:
INSERT INTO `imagetypes` VALUES (1, 'Parking Lot', 1); INSERT INTO `imagetypes` VALUES (2, 'Curb Cut', 1); INSERT INTO `imagetypes` VALUES (3, 'Rest Area / Parks', 1); INSERT INTO `imagetypes` VALUES (4, 'Entrances / Exits', 1); INSERT INTO `imagetypes` VALUES (5, 'Public Transport', 1); INSERT INTO `imagetypes` VALUES (6, 'Construction Sites', 1); INSERT INTO `imagetypes` VALUES (8, 'Stairs w/o railings', 1); INSERT INTO `imagetypes` VALUES (9, 'Elevator', 1); INSERT INTO `imagetypes` VALUES (10, 'Side-Walks', 1);

29

tbl_admin Admins table


This is a restricted access table which is only available to the admin/s of the application. The admin has special privileges to add/delete users, edit another users content, add/delete attributes, and save any metadata that can be useful in the future development of the application. The query is as follows:
CREATE TABLE `admin` ( `admin_id` int(11) NOT NULL auto_increment, `admin_fname` varchar(32) NOT NULL default '', `admin_lname` varchar(32) NOT NULL default '', `admin_password` varchar(32) NOT NULL default '', `admin_email` varchar(32) NOT NULL default '', `admin_dor` date NOT NULL default '0000-00-00', `admin_type` int(11) NOT NULL default '0', `admin_status` tinyint(1) NOT NULL default '0', PRIMARY KEY (`admin_id`) ) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;

30

Conclusion
We have achieved a stable framework, a platform where the user can interact with the system. The user can register, upload images, add useful text for the images and edit the information. We also have the code in place where we can extract the GPS coordinates from these images, convert them to the desirable format and tag these images in the Map. The user can get driving directions from/to any destination, which has been achieved by embedding Google Maps in the application. The user can also opt for walking directions, which makes sure that the user has access to pedestrian pathways for most of the route. The user can search for various attributes which can help them prepare in advance for any barrier in their way of travel. The accuracy of making sure that the user has this access is between 85 to 90% right now.

Future Work
Access-Wiki is designed for both planning purposes and to assist disabled people to identify access points and barriers in their routes trying to reduce the obstacles they have to face daily. There is a lot of research going on with respect to this particular application but there is still much work to do in order to better route disabled people as a whole through urban environments. As this is a Wiki model, we need to increase the information in the database, so that users can get all kinds of information that they expect. Also, the resolution of the application is at the street level as of now. We would want to increase that to 3-dimensional and also provide coverage inside building structures. But for this, we are also limited by the GPS technology. However further advancements in that field will also add to the betterment of Access-Wiki.

31

Вам также может понравиться