예제 #1
0
 def get(self):
     session = get_current_session()
     self.response.out.write(webpages.header(session))
     distances = [1,2,5,7,10,15]
     counts = [0,0,0,0,0,0]
     g = geocoders.Google()
     place, (lat, lng) = g.geocode("Kanaalstraat 31, 2801 SH Gouda")
     school = db.GeoPt(lat,lng)
     leerlingen = selector.getList()
     if not leerlingen:
         leerlingen = entities.Leerling.all().fetch(MAX)
         
     for leerling in leerlingen:
         if leerling.lokatie:
             distanceTo = haversine(school,leerling.lokatie)
             for i in range(len(distances)):
                 if distanceTo < distances[i]:
                     counts[i] += 1
                     break
                 
     
     session["selectionReferer"] = "/map/afstanden"
     self.response.out.write("<a href='/selector'><h3>Selecteer leerlingen</h3></a>")
     self.response.out.write("<h1>Afstanden van leerlingen tot de school</h1><br /><table border='1'>")
     self.response.out.write("""
     <script>
     $(document).ready(function() {
         var myOptions = {
             center: new google.maps.LatLng(52.015043, 4.695895),
             zoom: 11,
             mapTypeId: google.maps.MapTypeId.ROADMAP
         };
         var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
         var image = '/images/marker.png';
         var test = new google.maps.LatLng(-33.890542, 151.274856);
         var marker = new google.maps.Marker({
             position: new google.maps.LatLng(52.015043, 4.695895),
             map: map
         });
     
     """)
     for leerling in leerlingen:
         self.response.out.write("var marker = new google.maps.Marker({ position: new google.maps.LatLng(%s,%s),map: map,icon:'/images/marker.png'});" %(str(leerling.lokatie.lat),str(leerling.lokatie.lon)))
     for distance in distances:
         self.response.out.write("var options = {strokeColor: '#FF0000',strokeOpacity: 0.5,strokeWeight: 2,fillColor: '#000000',fillOpacity: 0.00,map: map,center: new google.maps.LatLng(%s, %s),radius: %s};circle = new google.maps.Circle(options);" %(str(school.lat),str(school.lon),str(distance * 1000)))
     self.response.out.write("""});</script><script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBUHKNVPkzNbOjejdzPKIVIMK12IU7w4Vg&sensor=false"></script><div id="map_canvas" style="width:100%; height:100%"></div>""")
     #self.response.out.write("<a href='#' onclick='test()'>test</a>")
     for i in range(len(counts)):
         self.response.out.write("<tr><td>"+str(distances[i])+"km</td><td>"+str(counts[i])+"</td></tr> <br />")
     self.response.out.write("</table>")
     self.response.out.write(webpages.footer())
예제 #2
0
    def get(self):
        session = get_current_session()
        self.response.out.write(webpages.header(session))
        leerlingen = selector.getList()
        if not leerlingen:
            leerlingen = entities.Leerling.all().fetch(MAX)
        matrix = {}
        matrixRegel = {}
        length = len(leerlingen)
        for a in range(length):
            for b in range(length):
                matrixRegel[leerlingen[b].leerlingID] = haversine(leerlingen[a].lokatie,leerlingen[b].lokatie)
            matrix[leerlingen[a].leerlingID] = matrixRegel
            matrixRegel = {}
        
        """
        debugging...
                
        self.response.out.write("<h1>~Snelste routen tussen leerlingen</h1><br /><table border='1'><tr><td> </td>")
        for key,tmp in matrix.iteritems():
            self.response.out.write("<td>"+key+"</td>")
        
        self.response.out.write("</tr>")
        for key,dict in matrix.iteritems():
            self.response.out.write("<tr><td>"+key+"</td>")
            for key2,dictLine in dict.iteritems():
                self.response.out.write("<td>"+str(dictLine)+"</td>")
                
            self.response.out.write("</tr>")
        self.response.out.write("</table>")
        """
        
        leerlingenDic = {}
        for leerling in leerlingen:
            leerlingenDic[leerling.leerlingID] = leerling
        output = []
        visited = []
        current = leerlingen[0]
        
        debugLimit = 0
        output.append(current)
        visited.append(current.leerlingID)
        while len(output) < len(leerlingen) and debugLimit < 2000:
            debugLimit += 1
            lowest = MAX
            lowestID = current.leerlingID
            for key,afstand in matrix[current.leerlingID].iteritems():
                if afstand < lowest and key not in visited:
                    if afstand != 0:
                        lowest = afstand
                        lowestID = key
                    else:
                        if key not in visited:
                            visited.append(key)
                        leerlingTmp = leerlingenDic[key] 
                        if leerlingTmp not in output:
                            output.append(leerlingTmp)
            if current not in output:
                output.append(current)
            current = leerlingenDic[lowestID]
            visited.append(leerling.leerlingID)

        session["selectionReferer"] = "/map/kortsteroute"
        self.response.out.write("<a href='/selector'><h3>Selecteer leerlingen</h3></a>")
        self.response.out.write("<h1>Routen tussen de opgegeven leerlingen:</h1><table><tr><th>Afspraak#</th><th>LeerlingID</th><th>Lokatie</th></tr>")
        for count, leerling in enumerate(output):
            self.response.out.write(
            """
            <tr>
                <td>
                    %s
                </td>
                <td>
                    %s
                </td>
                <td>
                    %s
                </td>
            </tr>
            """ %(str(count),leerling.leerlingID,leerling.adres+" "+leerling.huisnummer+", "+leerling.woonplaats+", "+leerling.postcode))
        self.response.out.write("</table>")
        """
        self.response.out.write("<h1>~Snelste routen tussen leerlingen</h1><br /><table border='1'>")
        for i in range(len(counts)):
            self.response.out.write("<tr><td> < "+str(distances[i])+"km</td><td>"+str(counts[i])+"</td></tr> <br />")
        self.response.out.write("</table>")
        """
        self.response.out.write(webpages.footer())