Difference between revisions of "Accessibility Map LOG"
m (Protected "Accessibility Map LOG" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))) |
|||
(69 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
+ | |||
==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. | ||
Line 23: | Line 24: | ||
'''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/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
Contents
- 1 Week of January 29
- 2 Week of February 5
- 3 Week of February 12
- 4 Week of February 19
- 5 Week of February 26
- 6 Week of March 5
- 7 Week of March 12
- 8 Week of March 19
- 9 Week of March 26
- 10 Week of April 2
- 11 Week of April 9
- 12 Week of April 16
- 13 William Winston Notes
- 14 Current Goals
- 15 Code for Implementation of Dijkstra's Algorithm
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)
- Pythonpractice.jpg
Python Assignment
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.
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
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