Accessibility Map LOG
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.
Week of April 9
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