Source code for aequilibrae.utils.find_table_fields
from aequilibrae.utils.db_utils import read_and_close
[docs]
def find_table_fields(table_name, conn=None, db_path=None):
with conn or read_and_close(db_path, spatial=True) as conn:
structure = conn.execute(f"pragma table_info({table_name})").fetchall()
geotypes = ["LINESTRING", "POINT", "POLYGON", "MULTIPOLYGON"]
fields = [x[1].lower() for x in structure]
geotype = geo_field = None
for x in structure:
if x[2].upper() in geotypes:
geotype = x[2]
geo_field = x[1]
break
if geo_field is not None:
fields = [x for x in fields if x != geo_field.lower()]
return fields, geotype, geo_field