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', {}))
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)))
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))
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
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')))
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')))