Example #1
0
 def test_check_bounds(self):
     self.assertIsNone(check_bounds('100', '100', '100', ''))
     self.assertIsNone(check_bounds('-100', '100', '200', 'asdf'))
     expected_bounds = (float('10.0'), float('40.1234'), float('20.20'),
                        float('-10.123456'))
     actual_bounds = check_bounds('10.0', '-10.123456', '20.20', '40.1234')
     self.assertEqual(expected_bounds, actual_bounds)
Example #2
0
def get_censustract_geos(request):
    northEastLat = request.GET.get('neLat')
    northEastLon = request.GET.get('neLon')
    southWestLat = request.GET.get('swLat')
    southWestLon = request.GET.get('swLon')
    metro = request.GET.get('metro')
    geo_type = request.GET.get('geoType')
    geos = []
    if northEastLat or northEastLon or southWestLat or southWestLon:
        bounds = check_bounds(northEastLat, northEastLon, southWestLat,
                              southWestLon)
        if bounds:
            if geo_type == "msa":
                #*bounds expands the set from check_bounds
                msas = get_geos_by_bounds_and_type(*bounds, metro=True)
                geos = Geo.objects.filter(geo_type=Geo.TRACT_TYPE,
                                          cbsa__in=msas.values_list('geoid',
                                                                    flat=True))
            else:
                geos = get_geos_by_bounds_and_type(*bounds)
        else:
            raise Http404("Invalid bounds")
    elif metro:
        msa = get_object_or_404(Geo, geo_type=Geo.METRO_TYPE, geoid=metro)
        geos = msa.get_censustract_geos_by_msa()
    return geos
Example #3
0
def get_censustract_geos(request):
    northEastLat = request.GET.get('neLat')
    northEastLon = request.GET.get('neLon')
    southWestLat = request.GET.get('swLat')
    southWestLon = request.GET.get('swLon')
    year = request.GET.get('year')
    metro = request.GET.get('metro')
    geo_type = request.GET.get('geoType')
    geos = []
    if northEastLat or northEastLon or southWestLat or southWestLon:
        bounds = check_bounds(northEastLat, northEastLon, southWestLat, southWestLon)
        if bounds:
            maxlat, minlon, minlat, maxlon = bounds
            if geo_type == "msa":
                #*bounds expands the set from check_bounds
                msas = get_geos_by_bounds_and_type(maxlat, minlon, minlat, maxlon, year, metro=True)
                geos = Geo.objects.filter(geo_type=Geo.TRACT_TYPE, cbsa__in=msas.values_list('cbsa', flat=True))
            else:
                geos = get_geos_by_bounds_and_type(maxlat, minlon, minlat, maxlon, year)
        else:
            raise Http404("Invalid bounds")
    elif metro:
        msa = get_object_or_404(Geo, geo_type=Geo.METRO_TYPE, geoid=metro) # metro includes year
        geos = msa.get_censustract_geos_by_msa()
    return geos
Example #4
0
def msas(request):
    """return a list of MSA ids visible by bounding coordinates"""
    try:
        northEastLat = request.GET.get('neLat')
        northEastLon = request.GET.get('neLon')
        southWestLat = request.GET.get('swLat')
        southWestLon = request.GET.get('swLon')
        year = request.GET.get('year')
        maxlat, minlon, minlat, maxlon = check_bounds(northEastLat, northEastLon, southWestLat, southWestLon)
        msas = get_geos_by_bounds_and_type(maxlat, minlon, minlat, maxlon, year, metro=True)
        msa_list = [metro.geoid for metro in msas]
        return HttpResponse(json.dumps(msa_list), content_type='application/json')
    except:
        return HttpResponseNotFound("Invalid lat/lon bounding coordinates")
Example #5
0
 def test_check_bounds(self):
     self.assertIsNone(check_bounds('100', '100', '100', ''))
     self.assertIsNone(check_bounds('-100', '100', '200', 'asdf'))
     expected_bounds = (float('10.0'), float('40.1234'), float('20.20'), float('-10.123456'))
     actual_bounds = check_bounds('10.0', '-10.123456', '20.20', '40.1234')
     self.assertEqual(expected_bounds, actual_bounds)