From 37fedef26e983f2ce01b01f6e6411b8371d4df88 Mon Sep 17 00:00:00 2001 From: Tony Date: Thu, 30 Apr 2015 22:38:31 -0400 Subject: [PATCH] added 2 new functions, removed redundant file, added testfile --- .idea/workspace.xml | 596 ++++++++++++++++++--------------- GIS.py | 45 ++- __pycache__/GIS.cpython-34.pyc | Bin 0 -> 10287 bytes gis test.dat | 7 + main.py | 5 - 5 files changed, 365 insertions(+), 288 deletions(-) create mode 100644 __pycache__/GIS.cpython-34.pyc create mode 100644 gis test.dat delete mode 100644 main.py diff --git a/.idea/workspace.xml b/.idea/workspace.xml index a419a63..3c12cd4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -27,38 +27,33 @@ - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - @@ -67,6 +62,8 @@ @@ -136,6 +133,9 @@ + + + @@ -329,10 +329,10 @@ - + - + @@ -342,7 +342,7 @@ - + @@ -373,25 +373,11 @@ - - - file://$PROJECT_DIR$/GIS.py - 237 - - - - - - - - - - @@ -405,19 +391,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -442,19 +433,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -486,19 +482,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -509,19 +510,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -532,19 +538,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -555,19 +566,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -599,19 +615,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -636,19 +657,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -680,19 +706,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -710,19 +741,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -740,19 +776,24 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -778,103 +819,90 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - @@ -931,13 +959,6 @@ - - - - - - - @@ -952,33 +973,54 @@ + + + + + + + + - - + + + + + + + + + + - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/GIS.py b/GIS.py index 1cc7f58..e13f568 100644 --- a/GIS.py +++ b/GIS.py @@ -14,13 +14,13 @@ def __init__(self): self.edges = [] self.city_selections = set() self.edge_selections = set() - with open('gis.dat', 'r') as gisfile: + with open('gis test.dat', 'r') as gisfile: tokens = re.findall('[A-Za-z\- ]+, [A-Za-z\- ]*|[0-9]+', gisfile.read()) i = 0 # iterator while i < len(tokens): name = tokens[i+0] - lati = int(tokens[i+1]) - long = int(tokens[i+2]) + lati = float(tokens[i+1]) / 100.0 + long = float(tokens[i+2]) / 100.0 popu = int(tokens[i+3]) stat = re.findall('[\w]+$', name)[0] i += 4 @@ -31,6 +31,18 @@ def __init__(self): i += 1 self.cities.append(current_city) + def selectSingleCity(self, name): + for city in self.cities: + if name == city.name: + if city in self.city_selections: + print(name + ' is already selected') + else: + string = city.name + ' [' + str(city.latitude) + ',' + str(city.longitude) + '], ' + str(city.population) + print('city found: ' + string) + self.city_selections.add(city) + return + print(name + ' is not in the database') + def selectCities(self, attribute, lowerBound, upperBound=None): callbacks = { 'population': lambda city: city.population, @@ -69,6 +81,28 @@ def selectEdges(self, lowerBound, upperBound): if not lowerBound <= edge.distance <= upperBound: self.edge_selections.remove(edge) + def selectSingleEdge(self, cityNameState1, cityNameState2): + city1 = None + city2 = None + for city in self.cities: + if city.name == cityNameState1: + city1 = city + if city.name == cityNameState2: + city2 = city + + check = lambda edge: (edge.city1 is city1 and edge.city2 is city2) or (edge.city1 is city2 and edge.city2 is city1) + for edge in self.edges: + if check(edge): + if edge in self.edge_selections: + print('edge already selected') + else: + print('edge found: ' + edge.city1.name + '<-->' + edge.city2.name + ': ' + str(edge.distance)) + self.edge_selections.add(edge) + return + # One of the cities do not exist + missing = cityNameState1 if city1 is None else cityNameState2 + print(missing + ' is not a city in the database') + def selectAllEdges(self): for edge in self.edges: self.edge_selections.add(edge) @@ -233,18 +267,17 @@ def tour(self, start): x = Gis() x.selectAllCities() x.selectAllEdges() -x.testMinMaxConsDistance() - x.printEdges() x.printCities('name') print("\n") +x.makeGraph() x.selectCities('population', 1000, 15000) x.printCities() print("\n") x.selectCities('name', 'R', 'T') x.printCities() print("\n") -x.selectCities('latitude', 3000, 4000) +x.selectCities('latitude', 30, 40) x.printCities() print("\n") x.selectAllCities() diff --git a/__pycache__/GIS.cpython-34.pyc b/__pycache__/GIS.cpython-34.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eac358ef6286ba9a0060334e31a4a6bba4216037 GIT binary patch literal 10287 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