Difference between revisions of "Accessibility Map LOG"

From ESE205 Wiki
Jump to navigation Jump to search
m (Protected "Accessibility Map LOG" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
 
(77 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Accessibility Map
 
https://classes.engineering.wustl.edu/ese205/core/index.php?title=Accessibility_Map
 
  
[[Accessibility Map]]
 
[[Page title|Link label]]
 
 
==Week of January 29==
 
==Week of January 29==
 
Wednesday: group met from 2-4 and discussed challenges of the project. We researched what exactly we will use to build the device as well as worked on the Gantt chart.
 
Wednesday: group met from 2-4 and discussed challenges of the project. We researched what exactly we will use to build the device as well as worked on the Gantt chart.
  
 
==Week of February 5==
 
==Week of February 5==
Sunday 2/4: Hannah spent 1 hour downloading and learning more about the Python program.  
+
'''Sunday 2/4:''' Hannah spent 1 hour downloading and learning more about the Python program.  
  
 
Goals:
 
Goals:
What to put into the algorithm
+
* What to put into the algorithm
Getting GIS to work
+
* Getting GIS to work
QGIS  download  
+
* Getting GIS to work
Read more info
+
* QGIS  download  
 +
* Read more info
  
 
Download Pycharm + QGIS
 
Download Pycharm + QGIS
  
Monday 2/5: Hannah spent 1 hour creating powerpoint presentation for class presentation.
+
'''Monday 2/5:''' Hannah spent 1 hour creating powerpoint presentation for class presentation.
  
Wednesday 2/7: Group met for one hour adding to wiki page and group presentation
+
'''Wednesday 2/7:''' Group met for one hour adding to wiki page and project proposal
 +
 
 +
==Week of February 12==
 +
 
 +
'''Tuesday 2/13:''' Wiki page was updated to include TA, Gantt Chart and a longer description of the project. The presentation was also worked on for the class.
 +
 
 +
'''Wednesday 2/14:''' Today we hashed out our GANTT chart, in addition to making additions to our longterm goals. We updated our wiki, and have goals for next week to present our proposal, become adept in python and gather the data of distances.
 +
 
 +
'''Wednesday 2/16:''' Presented project proposal to class.
 +
 
 +
==Week of February 19==
 +
 
 +
'''Sunday 2/18:''' Watched multiple python tutorial videos. Most helpful links are below.
 +
 
 +
https://www.youtube.com/watch?v=N4mEzFDjqtA
 +
 
 +
https://www.python-course.eu/advanced_topics.php
 +
 
 +
'''Wednesday 2/21:'''
 +
 
 +
TA meeting discussed short term and long term goals: 1 hour
 +
 
 +
==Week of February 26==
 +
 
 +
'''Sunday 2/25:''' Noah created a program in python to figure out distance between two coordinates. It took around 30 minutes.
 +
 
 +
 
 +
Hannah completed the python assignment listed below in goals (2.5 hours)
 +
 
 +
<gallery>
 +
pythonpractice.jpg|Python Assignment
 +
 
 +
</gallery>
 +
 
 +
'''Monday 2/26:''' Noah created a program that sorts the distances between coordinates in order. It took around 2 hours.
 +
 
 +
 
 +
'''Tuesday 2/27:'''  Hannah, Zahra and Noah met with  William Winston, an arGIS specialist on campus. We discussed the best possible programs and have scheduled another meeting for Friday afternoon.
 +
 
 +
 
 +
'''Wednesday 2/28:''' Group meeting with TA John G and discussed possible new goal. Tentatively stated we would
 +
 
 +
 
 +
Creating appropriate network + implementing algorithm then interface
 +
 
 +
 
 +
==Week of March 5==
 +
 
 +
This week we familiarized ourselves with the WashU arcGIS program along with mapping a part of the campus. We have divided up the each individual parts of the campus to map.
 +
 
 +
Created a linear network
 +
 
 +
 
 +
Zahra completed more python practice (2 hours)
 +
 
 +
==Week of March 12==
 +
 
 +
Zahra met with Bill Winston. He wants us to decide what type of GIS data is needed for python use. (We are using vector data but we may need to use raster data). He continued to explain how to plot points for vector data use.
 +
 
 +
==Week of March 19==
 +
 
 +
New Gantt chart was put into project page.
 +
 
 +
Hannah and Zahra met with William Winston and Molly Webb to further discuss ArcMap and how our implementation of python will be used.
 +
 
 +
https://www.youtube.com/watch?v=p0DNcTnreuY (link that shows us how to use excel data of nodes to make the shortest path).
 +
 
 +
 
 +
Group meeting in research studio in Olin. Goals were reassessed and we redid our GANTT chart. We have had a lot of time researching a learning and now our goal is to create our project.
 +
 
 +
2 hour meeting with whole group in arts sci computer lab. Maps and progress with interface were made. We planned another meeting with Molly Webb to learn more about exporting the data we draw from ArcGIS.
 +
 
 +
==Week of March 26==
 +
 
 +
'''March 27''' We met with Mollie who explained to us part of what we will need to do to complete our project including some coding information. The network was also finished and we started to put the path lengths in to a data table.
 +
 
 +
'''March 30''' Noah and Zahra started putting data into an excel table that can be used in Dijkstra's Algorithm.
 +
 
 +
'''April 1''' Noah finished putting the data into the excel table.
 +
 
 +
Short Term Goals:
 +
 
 +
create a simple user interface including a picture of the map and two drop downs with beginning location and ending location.
 +
<br />
 +
It will then produce a new image showing the map
 +
 
 +
==Week of April 2==
 +
 
 +
'''April 2''' Noah started putting in 100000 for the data points that do not connect. He also labeled the map with the specific numbered points that can be used for the map so the visual implementation can use the map.
 +
 
 +
 
 +
[https://drive.google.com/file/d/1dAF5FzZ8I2K73ldrNzmHatqe84rKa-GS/view?usp=sharing/  data of path lengths]
 +
 
 +
'''Hannah'''
 +
Design of the User Interface has begun. Ideal setup would be two drop down options for starting locations, along with the display of a map of campus with letters signifying each option to begin/end. Then once the user inputed those decisions, upon pressing enter a new HTML screen would appear, drawing the desired path/image of a map with a line on it.
 +
 
 +
Update:
 +
Begin using Tkinter to create the GUI.
 +
 
 +
Dijkstra's produces each route <br />
 +
 
 +
Then create image with each individual segment added together on top to create compositions image of path rather than jpg of each map path possible.
 +
 
 +
 
 +
'''Zahra'''
 +
FInished python version of Dijkstra's algorithm with example paths.
 +
 
 +
Dijkstra's algorithm code gotten from:
 +
https://www.youtube.com/watch?v=IG1QioWSXRI&t=3s
 +
 
 +
<gallery>
 +
Screen Shot 2018-04-04 at 3.36.56 PM.png | Python
 +
Screen Shot 2018-04-04 at 3.49.54 PM.png | example of the nodes & edges
 +
</gallery>
 +
 
 +
'''April 7''' Noah figured out the data for the wheelchair path.
 +
 
 +
==Week of April 9==
 +
 
 +
'''April 9''' Noah took screenshots of all the paths to be used to display the shortest path.
 +
 
 +
'''April 11''' [https://stackoverflow.com/questions/14196013/python-creating-dictionary-from-excel-data/ code for pandas file to dictionary]
 +
[https://stackoverflow.com/questions/14196013/python-creating-dictionary-from-excel-data/ code to put excel file in python]
 +
 
 +
'''April 13''' We finished the code that will give us the shortest path both for the map for everyone and the wheelchair map.
 +
[https://drive.google.com/open?id=1GGBVAd7FbqR_7cZEsX3Ef0TpBmrmBErY/ code for shortest path]
 +
[https://drive.google.com/open?id=1TFXr4guvesnet7fR-NMTX83UwelB-D8n/ code that shows shortest path]
 +
 
 +
'''April 14'''
 +
[https://bitbucket.org/hes833/accessibility-map/ bit bucket for code]
 +
 
 +
'''Hannah'''
 +
 
 +
I have been working on the GUI. Using tkinter and python, I have been having difficulties loading images and buttons. However I have made the drop down menus for beginning and ending location. Once the button is pressed, it will reload a different page taking the inputted beginning and ending locations and compositing an image to create a map of how to navigate campus.
 +
 
 +
<gallery>
 +
File:Original Image.png.jpeg|image of locations of washu campus
 +
 
 +
</gallery>
 +
 
 +
==Week of April 16==
 +
 
 +
 
 +
 
 +
==William Winston Notes==
 +
 
 +
Defined data set
 +
 
 +
BUILDING ENTRY
 +
 
 +
stairs, foot paths
 +
 
 +
brad aver back - GIS layout
 +
 
 +
Upgrade arc gis remote
 +
 
 +
arcGIS online
 +
 
 +
Use python to control arcGIS
 +
 
 +
Python questions: Molly webb
 +
 
 +
Build linear systems
 +
 
 +
Heads up digitization
 +
 
 +
Identify all doorways
 +
 
 +
Check if windows is running 10.5
 +
 
 +
Send contact name to update version
 +
 
 +
Making linear
 +
Digitize and create network
 +
 
 +
Entry ways (pick one closest to elevator)
 +
 
 +
 
 +
==Current Goals==
 +
 
 +
'''Python Skills:'''
 +
 
 +
Given two points, calculates distance between the two (2d coordinates) : Completed 2/27
 +
 
 +
Program, given n points, gives distance between all points in sorted order: Completed 2/27
 +
 
 +
 
 +
'''arcGIS :'''
 +
 
 +
Be able to load up Python environment and get points from a layer (list of points) : Completed 3/3
 +
 
 +
 
 +
'''Final Product Expectations :'''
 +
 
 +
* topological data for campus paths w/ different weights for different mobilities
 +
* Shortest path from a to b for different mobilities
 +
* Final path exported as GIS waypoints
 +
 
 +
==Code for Implementation of Dijkstra's Algorithm==
 +
 
 +
class Graph:
 +
  def __init__(self):
 +
    self.nodes = set()
 +
    self.edges = defaultdict(list)
 +
    self.distances = {}
 +
 
 +
  def add_node(self, value):
 +
    self.nodes.add(value)
 +
 
 +
  def add_edge(self, from_node, to_node, distance):
 +
    self.edges[from_node].append(to_node)
 +
    self.edges[to_node].append(from_node)
 +
    self.distances[(from_node, to_node)] = distance
 +
 
 +
 
 +
def dijsktra(graph, initial):
 +
  visited = {initial: 0}
 +
  path = {}
 +
 
 +
  nodes = set(graph.nodes)
 +
 
 +
  while nodes:
 +
    min_node = None
 +
    for node in nodes:
 +
      if node in visited:
 +
        if min_node is None:
 +
          min_node = node
 +
        elif visited[node] < visited[min_node]:
 +
          min_node = node
 +
 
 +
    if min_node is None:
 +
      break
 +
 
 +
    nodes.remove(min_node)
 +
    current_weight = visited[min_node]
 +
 
 +
    for edge in graph.edges[min_node]:
 +
      weight = current_weight + graph.distance[(min_node, edge)]
 +
      if edge not in visited or weight < visited[edge]:
 +
        visited[edge] = weight
 +
        path[edge] = min_node
 +
 
 +
  return visited, path
  
 
[[Accessibility_Map|Link to main project page]]  
 
[[Accessibility_Map|Link to main project page]]  

Latest revision as of 12:01, 5 May 2018

Week of January 29

Wednesday: group met from 2-4 and discussed challenges of the project. We researched what exactly we will use to build the device as well as worked on the Gantt chart.

Week of February 5

Sunday 2/4: Hannah spent 1 hour downloading and learning more about the Python program.

Goals:

  • What to put into the algorithm
  • Getting GIS to work
  • Getting GIS to work
  • QGIS download
  • Read more info

Download Pycharm + QGIS

Monday 2/5: Hannah spent 1 hour creating powerpoint presentation for class presentation.

Wednesday 2/7: Group met for one hour adding to wiki page and project proposal

Week of February 12

Tuesday 2/13: Wiki page was updated to include TA, Gantt Chart and a longer description of the project. The presentation was also worked on for the class.

Wednesday 2/14: Today we hashed out our GANTT chart, in addition to making additions to our longterm goals. We updated our wiki, and have goals for next week to present our proposal, become adept in python and gather the data of distances.

Wednesday 2/16: Presented project proposal to class.

Week of February 19

Sunday 2/18: Watched multiple python tutorial videos. Most helpful links are below.

https://www.youtube.com/watch?v=N4mEzFDjqtA

https://www.python-course.eu/advanced_topics.php

Wednesday 2/21:

TA meeting discussed short term and long term goals: 1 hour

Week of February 26

Sunday 2/25: Noah created a program in python to figure out distance between two coordinates. It took around 30 minutes.


Hannah completed the python assignment listed below in goals (2.5 hours)

Monday 2/26: Noah created a program that sorts the distances between coordinates in order. It took around 2 hours.


Tuesday 2/27: Hannah, Zahra and Noah met with William Winston, an arGIS specialist on campus. We discussed the best possible programs and have scheduled another meeting for Friday afternoon.


Wednesday 2/28: Group meeting with TA John G and discussed possible new goal. Tentatively stated we would


Creating appropriate network + implementing algorithm then interface


Week of March 5

This week we familiarized ourselves with the WashU arcGIS program along with mapping a part of the campus. We have divided up the each individual parts of the campus to map.

Created a linear network


Zahra completed more python practice (2 hours)

Week of March 12

Zahra met with Bill Winston. He wants us to decide what type of GIS data is needed for python use. (We are using vector data but we may need to use raster data). He continued to explain how to plot points for vector data use.

Week of March 19

New Gantt chart was put into project page.

Hannah and Zahra met with William Winston and Molly Webb to further discuss ArcMap and how our implementation of python will be used.

https://www.youtube.com/watch?v=p0DNcTnreuY (link that shows us how to use excel data of nodes to make the shortest path).


Group meeting in research studio in Olin. Goals were reassessed and we redid our GANTT chart. We have had a lot of time researching a learning and now our goal is to create our project.

2 hour meeting with whole group in arts sci computer lab. Maps and progress with interface were made. We planned another meeting with Molly Webb to learn more about exporting the data we draw from ArcGIS.

Week of March 26

March 27 We met with Mollie who explained to us part of what we will need to do to complete our project including some coding information. The network was also finished and we started to put the path lengths in to a data table.

March 30 Noah and Zahra started putting data into an excel table that can be used in Dijkstra's Algorithm.

April 1 Noah finished putting the data into the excel table.

Short Term Goals:

create a simple user interface including a picture of the map and two drop downs with beginning location and ending location.
It will then produce a new image showing the map

Week of April 2

April 2 Noah started putting in 100000 for the data points that do not connect. He also labeled the map with the specific numbered points that can be used for the map so the visual implementation can use the map.


data of path lengths

Hannah Design of the User Interface has begun. Ideal setup would be two drop down options for starting locations, along with the display of a map of campus with letters signifying each option to begin/end. Then once the user inputed those decisions, upon pressing enter a new HTML screen would appear, drawing the desired path/image of a map with a line on it.

Update: Begin using Tkinter to create the GUI.

Dijkstra's produces each route

Then create image with each individual segment added together on top to create compositions image of path rather than jpg of each map path possible.


Zahra FInished python version of Dijkstra's algorithm with example paths.

Dijkstra's algorithm code gotten from: https://www.youtube.com/watch?v=IG1QioWSXRI&t=3s

April 7 Noah figured out the data for the wheelchair path.

Week of April 9

April 9 Noah took screenshots of all the paths to be used to display the shortest path.

April 11 code for pandas file to dictionary code to put excel file in python

April 13 We finished the code that will give us the shortest path both for the map for everyone and the wheelchair map.

code for shortest path

code that shows shortest path

April 14 bit bucket for code

Hannah

I have been working on the GUI. Using tkinter and python, I have been having difficulties loading images and buttons. However I have made the drop down menus for beginning and ending location. Once the button is pressed, it will reload a different page taking the inputted beginning and ending locations and compositing an image to create a map of how to navigate campus.

Week of April 16

William Winston Notes

Defined data set

BUILDING ENTRY

stairs, foot paths

brad aver back - GIS layout

Upgrade arc gis remote

arcGIS online

Use python to control arcGIS

Python questions: Molly webb

Build linear systems

Heads up digitization

Identify all doorways

Check if windows is running 10.5

Send contact name to update version

Making linear Digitize and create network

Entry ways (pick one closest to elevator)


Current Goals

Python Skills:

Given two points, calculates distance between the two (2d coordinates) : Completed 2/27

Program, given n points, gives distance between all points in sorted order: Completed 2/27


arcGIS :

Be able to load up Python environment and get points from a layer (list of points) : Completed 3/3


Final Product Expectations :

  • topological data for campus paths w/ different weights for different mobilities
  • Shortest path from a to b for different mobilities
  • Final path exported as GIS waypoints

Code for Implementation of Dijkstra's Algorithm

class Graph:

 def __init__(self):
   self.nodes = set()
   self.edges = defaultdict(list)
   self.distances = {}
 def add_node(self, value):
   self.nodes.add(value)
 def add_edge(self, from_node, to_node, distance):
   self.edges[from_node].append(to_node)
   self.edges[to_node].append(from_node)
   self.distances[(from_node, to_node)] = distance


def dijsktra(graph, initial):

 visited = {initial: 0}
 path = {}
 nodes = set(graph.nodes)
 while nodes: 
   min_node = None
   for node in nodes:
     if node in visited:
       if min_node is None:
         min_node = node
       elif visited[node] < visited[min_node]:
         min_node = node
   if min_node is None:
     break
   nodes.remove(min_node)
   current_weight = visited[min_node]
   for edge in graph.edges[min_node]:
     weight = current_weight + graph.distance[(min_node, edge)]
     if edge not in visited or weight < visited[edge]:
       visited[edge] = weight
       path[edge] = min_node
 return visited, path

Link to main project page