def test_read_geo_packages(self): import warnings from requests.exceptions import HTTPError warnings.simplefilter("ignore") try: from publicdata.census.dataframe import CensusDataFrame except ImportError: return unittest.skip("Public data isn't installed") with open(test_data('line', 'line-oriented-doc.txt')) as f: text = f.read() doc = MetapackDoc(TextRowGenerator("Declare: metatab-latest\n" + text)) r = doc.reference('B09020') try: df = r.dataframe() except HTTPError: # The Census reporter URLs fail sometimes. return unittest.skip("Census Reporter vanished") self.assertIsInstance(df, CensusDataFrame) r = doc.reference('sra_geo') gf = r.geoframe() self.assertEqual(41, len(gf.geometry.geom_type)) self.assertEqual({'Polygon'}, set(gf.geometry.geom_type)) r = doc.reference('ri_tracts') gf = r.geoframe() self.assertEqual(244, len(gf.geometry.geom_type)) print(sorted(list(set(gf.geometry.geom_type)))) self.assertEqual(['MultiPolygon', 'Polygon'], sorted(list(set(gf.geometry.geom_type)))) print(gf.head())
def test_line_doc(self): from os.path import splitext, basename import sys with open(test_data('line', 'line-oriented-doc.txt')) as f: text = f.read() doc = MetapackDoc(TextRowGenerator("Declare: metatab-latest\n" + text)) # process_schemas(doc) r = doc.reference('tracts') self.assertEqual(628, len(list(r))) tracts = r.dataframe() self.assertEqual(-73427, tracts.lon.sum().astype(int)) tracts = r.read_csv() self.assertEqual(-73427, tracts.lon.sum().astype(int)) r.dataframe() # Test loading a Python Library from a package. ref = doc.reference('incv') self.assertIsNotNone(ref) ref_resource = parse_app_url( ref.url).inner.clear_fragment().get_resource() # The path has to be a Metatab ZIP archive, and the root directory must be the same as # the name of the path pkg_name, _ = splitext(basename(ref_resource.path)) lib_path = ref_resource.join(pkg_name).path if lib_path not in sys.path: sys.path.insert(0, lib_path)