In [1]:
import os
import spandex
from spandex import spatialtoolz
In [2]:
# Connect to database if not already connected.
loader = spandex.TableLoader()
# Recreate PostgreSQL sample schema.
with loader.database.cursor() as cur:
cur.execute("""
CREATE EXTENSION IF NOT EXISTS postgis;
DROP SCHEMA IF EXISTS sample CASCADE;
CREATE SCHEMA sample;
""")
loader.database.refresh()
# Load all shapefiles in test data directory.
data_path = '../test_data'
for filename in os.listdir(data_path):
file_root, file_ext = os.path.splitext(filename)
if file_ext.lower() == '.shp':
shp_path = os.path.join(data_path, filename)
table_name = 'sample.' + file_root
loader.load_shp(filename, table_name)
# Assign shorter variable names for convenience.
t = loader.tables.sample
parcels = t.heather_farms
bg = t.hf_bg
water = t.hf_water
In [3]:
# conform_srid
print(spatialtoolz.conform_srids.__doc__)
print("Reprojecting to project SRID: {}".format(loader.srid))
spatialtoolz.conform_srids(loader.srid, schema=t)
In [4]:
# geom_invalid
print(spatialtoolz.geom_invalid.__doc__)
spatialtoolz.geom_invalid(parcels, index=parcels.parcel_id)
Out[4]:
In [5]:
# geom_duplicate
print(spatialtoolz.geom_duplicate.__doc__)
spatialtoolz.geom_duplicate(parcels)
Out[5]:
In [6]:
# geom_overlapping
print(spatialtoolz.geom_overlapping.__doc__)
spatialtoolz.geom_overlapping(parcels, key_name='parcel_id',
output_table_name='parcels_overlapping')
In [7]:
# geom_unfilled
print(spatialtoolz.geom_unfilled.__doc__)
spatialtoolz.geom_unfilled(parcels, output_table_name='parcels_unfilled')
In [8]:
# calc_area
print(spatialtoolz.calc_area.__doc__)
spatialtoolz.calc_area(parcels)
In [9]:
# calc_dist
print(spatialtoolz.calc_dist.__doc__)
spatialtoolz.calc_dist(parcels, water.geom)
Out[9]:
In [10]:
# tag
print(spatialtoolz.tag.__doc__)
spatialtoolz.tag(parcels, 'bg_id', bg, 'objectid')
In [11]:
# proportion_overlap
print(spatialtoolz.proportion_overlap.__doc__)
spatialtoolz.proportion_overlap(parcels, water, 'proportion_water')
In [12]:
# trim
print(spatialtoolz.trim.__doc__)
spatialtoolz.trim(parcels.geom, water.geom)
In [13]:
# db_to_df
print(spandex.db_to_df.__doc__)
In [14]:
spandex.db_to_df(water, index_col='id')
Out[14]:
In [15]:
with loader.database.session() as sess:
q = sess.query(
parcels.parcel_id, parcels.county,
parcels.calc_area, parcels.calc_dist
).filter(
parcels.calc_dist < 10
)
spandex.db_to_df(q, index_col='parcel_id')
Out[15]:
In [16]:
# db_to_db
print(spandex.db_to_db.__doc__)
spandex.db_to_db(q, name='watery_parcels', schema=t, view=True)