Exemplo n.º 1
0
    def test_geo(self):

        from ambry.valuetype import GeoCensusVT, GeoAcsVT, GeoGvidVT, resolve_value_type, cast_unicode
        from geoid import acs, civick

        # Check the ACS Geoid directly
        self.assertEqual('California', acs.State(6).geo_name)
        self.assertEqual('San Diego County, California',
                         acs.County(6, 73).geo_name)
        self.assertEqual('place in California', acs.Place(6, 2980).geo_name)

        # THen check via parsing through the GeoAcsVT
        self.assertEqual('California', GeoAcsVT(str(acs.State(6))).geo_name)
        self.assertEqual('San Diego County, California',
                         GeoAcsVT(str(acs.County(6, 73))).geo_name)
        self.assertEqual('place in California',
                         GeoAcsVT(str(acs.Place(6, 2980))).geo_name)

        self.assertEqual('California', GeoGvidVT('0O0601').state_name)
        self.assertEqual('Alameda County, California',
                         resolve_value_type('gvid')('0O0601').acs.geo_name)

        # Check that adding a parameter to the vt code will select a new parser.
        cls = resolve_value_type('geoid/census/tract')

        self.assertTrue(bool(cls))

        self.assertEqual(402600, cls('06001402600').tract)

        self.assertEquals('4026.00', cls('06001402600').dotted)

        self.assertEquals('4002.00',
                          cast_unicode(cls('06001400200').dotted, 'tract', {}))
Exemplo n.º 2
0
    def test_acs(self):
        import geoid.acs as acs

        self.assertEqual(str(acs.State(53)),
                         str(acs.AcsGeoid.parse('04000US53')))
        self.assertEqual(str(acs.County(53, 9)),
                         str(acs.AcsGeoid.parse('05000US53009')))
        self.assertEqual(str(acs.Blockgroup(29, 99, 701401, 2)),
                         str(acs.AcsGeoid.parse('15000US290997014012')))
        self.assertEqual(str(acs.Blockgroup(53, 33, 1800, 3)),
                         str(acs.AcsGeoid.parse('15000US530330018003')))

        # Just test that the parsing doesn't throw an exception

        for test_val in [
                '07000US020130159801090', '28300US020110R', '79500US0400101',
                '01000US', '61000US0200A', '04000US02', '61200US0200T185'
        ]:

            self.assertEqual(test_val, str(acs.AcsGeoid.parse(test_val)))

        # These vals get changed a bit, usually by removing the component value
        for test_val_in, test_val_out in [('03001US1', '03000US1'),
                                          ('030A0US1', '03000US1')]:
            self.assertEqual(test_val_out,
                             str(acs.AcsGeoid.parse(test_val_in)))

        self.assertEqual('61000US15001', str(acs.Sldu(15, 1)))
Exemplo n.º 3
0
    def test_simplify(self):

        from geoid import acs
        from geoid.util import simplify, isimplify

        geoids = []

        for state in [10, 11, 12]:
            geoids.append(acs.State(state))

        for state in [1, 2]:
            for county in range(1, 6):
                geoids.append(acs.County(state, county))

        for state in [3, 4]:
            for county in range(1, 4):
                geoids.append(acs.County(state, county))

        compiled = simplify(geoids)
        print([str(x) for x in compiled])

        print('---')

        geoids = []

        for state in range(0, 6):
            for county in range(6, 12):
                for tract in range(12, 20):
                    geoids.append(acs.Tract(state, county, tract))

        print(len(geoids))

        s0 = isimplify(geoids)

        for g in sorted(str(x) for x in s0):
            print(g)

        print('---')

        for g in simplify(simplify(geoids)):
            if g.is_allval:
                print(str(g))
Exemplo n.º 4
0
    def geoid(self):
        """Return a geoid for state, counties, places, Cbsa ans CSA """

        import geoid.acs as acs

        if self.place:
            return acs.Place(self.state, self.place)
        elif self.cbsa:
            return acs.Cbsa(self.cbsa)
        elif self.csa:
            return acs.Csa(self.csa)
        elif self.county:
            return acs.County(self.state, self.county)
        elif self.ac_prefix in ('ST', 'BS'):
            return acs.State(self.state)
        else:
            return None
Exemplo n.º 5
0
    def test_acs(self):
        from geoid import acs

        self.assertEqual(str(acs.State(53)),
                         str(acs.AcsGeoid.parse('04000US53')))
        self.assertEqual(str(acs.County(53, 9)),
                         str(acs.AcsGeoid.parse('05000US53009')))
        self.assertEqual(str(acs.Blockgroup(29, 99, 701401, 2)),
                         str(acs.AcsGeoid.parse('15000US290997014012')))
        self.assertEqual(str(acs.Blockgroup(53, 33, 1800, 3)),
                         str(acs.AcsGeoid.parse('15000US530330018003')))

        # Just test that the parsing doesn't throw an exception
        print(str(acs.AcsGeoid.parse('07000US020130159801090')))
        print(str(acs.AcsGeoid.parse('03001US1')))
        print(str(acs.AcsGeoid.parse('030A0US1')))
        print(str(acs.AcsGeoid.parse('28300US020110R')))
        print(str(acs.AcsGeoid.parse('79500US0400101')))
        print(str(acs.AcsGeoid.parse('01000US')))
        print(str(acs.AcsGeoid.parse('61000US0200A')))
Exemplo n.º 6
0
    def test_parse(self):
        from geoid import tiger, acs, civick
        from geoid.core import parse_to_gvid

        self.assertEqual(tiger.County, tiger.TigerGeoid.get_class('county'))
        self.assertEqual(tiger.County, tiger.TigerGeoid.get_class(50))

        self.assertEqual(
            '440030209032037',
            str(
                tiger.Block.parse('440030209032037').convert(
                    civick.GVid).convert(tiger.TigerGeoid)))

        self.assertEqual(
            '2g061a000y',
            str(
                civick.GVid.parse('2g061a000y').convert(
                    tiger.TigerGeoid).convert(civick.GVid)))

        self.assertEquals(str('010'), str(civick.GVid.get_class('null')(0)))

        self.assertEqual('010',
                         str(civick.GVid.parse('foobar', exception=False)))

        self.assertEqual('0O0R09', str(parse_to_gvid(str(civick.County(53,
                                                                       9)))))
        self.assertEqual(
            '2q0R0x00t23',
            str(parse_to_gvid(str(civick.Blockgroup(53, 33, 1800, 3)))))

        self.assertEqual('0O0R09', str(parse_to_gvid(str(acs.County(53, 9)))))
        self.assertEqual(
            '2q0R0x00t23',
            str(parse_to_gvid(str(acs.Blockgroup(53, 33, 1800, 3)))))

        with self.assertRaises(ValueError):
            self.assertEqual('0O0R09', str(parse_to_gvid('foobarity')))