{ "cells": [ { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from sqlalchemy import create_engine\n", "import geopandas as gpd\n", "\n", "\n", "from dotenv import load_dotenv\n", "load_dotenv()\n", "\n", "db_name = 'colorado_spills'\n", "user = os.getenv('DB_USER')\n", "password = os.getenv('DB_PASSWORD')\n", "host = os.getenv('DB_HOST')\n", "port = os.getenv('DB_PORT')\n", "\n", "\n", "# Create an engine to connect to the PostgreSQL database\n", "engine = create_engine(f'postgresql+psycopg2://{user}:{password}@{host}:{port}/{db_name}')\n", "\n", "# Read in the spills as spills\n", "spills = pd.read_sql('spills', engine)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Document #ReportOperatorOperator #Tracking #Initial Report DateDate of DiscoverySpill TypeQtr QtrSection...Offsite DisposalOnsite TreatmentOther DispositionOther Disposition DescriptionGround Water RemovedSurface Water RemovedCorrective Actions CompletedApproved Form 27Form 27 Project Numbergeometry
0400628833I w/SGREAT WESTERN OPERATING COMPANY LLC1011040062883306/18/201406/11/2014HistoricalSESE2...0.00.01.0No work performed yetNaNNaNFalseNaN2141471.0POINT (-104.51097 39.81959)
1400629910ICOLORADO OIL & GAS CONSERVATION COMMISSION540062991006/19/201406/14/2014HistoricalNWNE1...NaNNaNNaNNoneNaNNaNFalseNaNNaNPOINT (-104.61818 40.08456)
2400629998SCOLORADO OIL & GAS CONSERVATION COMMISSION540062991006/19/201406/14/2014HistoricalNWNE1...1.00.00.0None0.00.0TrueNaNNaNPOINT (-104.61818 40.08456)
3400630821IKERR MCGEE GATHERING LLC4712140063082106/20/201406/19/2014RecentNWNW15...NaNNaNNaNNoneNaNNaNFalseNaNNaNPOINT (-104.88494 40.05447)
4400631216INOBLE ENERGY INC10032240063121606/23/201406/20/2014RecentNENW36...NaNNaNNaNNoneNaNNaNFalseNaN2141511.0POINT (-104.84506 40.44426)
..................................................................
16885403825450I w/SNOBLE ENERGY INC10032240382545006/14/202406/13/2024HistoricalSWSE7...0.00.00.0None0.00.0False1.033291.0POINT (-104.48176 40.3205)
16886403825485I w/SNOBLE ENERGY INC10032240382548506/14/202406/13/2024HistoricalSWSE7...0.00.00.0None0.00.0False1.033291.0POINT (-104.48225 40.32023)
16887403825575I w/SNOBLE ENERGY INC10032240382557506/14/202406/13/2024HistoricalSWSE7...0.00.00.0None0.00.0False1.033291.0POINT (-104.48256 40.32007)
16888403826200INOBLE ENERGY INC10032240382620006/14/202406/14/2024RecentSWSE5...NaNNaNNaNNoneNaNNaNFalse0.0NaNPOINT (-104.57222 40.50979)
16889403826294ICAERUS PICEANCE LLC1045640382629406/15/202406/15/2024RecentNESW22...NaNNaNNaNNoneNaNNaNFalse0.0NaNPOINT (-108.15951 39.59893)
\n", "

16890 rows × 107 columns

\n", "
" ], "text/plain": [ " Document # Report Operator \\\n", "0 400628833 I w/S GREAT WESTERN OPERATING COMPANY LLC \n", "1 400629910 I COLORADO OIL & GAS CONSERVATION COMMISSION \n", "2 400629998 S COLORADO OIL & GAS CONSERVATION COMMISSION \n", "3 400630821 I KERR MCGEE GATHERING LLC \n", "4 400631216 I NOBLE ENERGY INC \n", "... ... ... ... \n", "16885 403825450 I w/S NOBLE ENERGY INC \n", "16886 403825485 I w/S NOBLE ENERGY INC \n", "16887 403825575 I w/S NOBLE ENERGY INC \n", "16888 403826200 I NOBLE ENERGY INC \n", "16889 403826294 I CAERUS PICEANCE LLC \n", "\n", " Operator # Tracking # Initial Report Date Date of Discovery \\\n", "0 10110 400628833 06/18/2014 06/11/2014 \n", "1 5 400629910 06/19/2014 06/14/2014 \n", "2 5 400629910 06/19/2014 06/14/2014 \n", "3 47121 400630821 06/20/2014 06/19/2014 \n", "4 100322 400631216 06/23/2014 06/20/2014 \n", "... ... ... ... ... \n", "16885 100322 403825450 06/14/2024 06/13/2024 \n", "16886 100322 403825485 06/14/2024 06/13/2024 \n", "16887 100322 403825575 06/14/2024 06/13/2024 \n", "16888 100322 403826200 06/14/2024 06/14/2024 \n", "16889 10456 403826294 06/15/2024 06/15/2024 \n", "\n", " Spill Type Qtr Qtr Section ... Offsite Disposal Onsite Treatment \\\n", "0 Historical SESE 2 ... 0.0 0.0 \n", "1 Historical NWNE 1 ... NaN NaN \n", "2 Historical NWNE 1 ... 1.0 0.0 \n", "3 Recent NWNW 15 ... NaN NaN \n", "4 Recent NENW 36 ... NaN NaN \n", "... ... ... ... ... ... ... \n", "16885 Historical SWSE 7 ... 0.0 0.0 \n", "16886 Historical SWSE 7 ... 0.0 0.0 \n", "16887 Historical SWSE 7 ... 0.0 0.0 \n", "16888 Recent SWSE 5 ... NaN NaN \n", "16889 Recent NESW 22 ... NaN NaN \n", "\n", " Other Disposition Other Disposition Description Ground Water Removed \\\n", "0 1.0 No work performed yet NaN \n", "1 NaN None NaN \n", "2 0.0 None 0.0 \n", "3 NaN None NaN \n", "4 NaN None NaN \n", "... ... ... ... \n", "16885 0.0 None 0.0 \n", "16886 0.0 None 0.0 \n", "16887 0.0 None 0.0 \n", "16888 NaN None NaN \n", "16889 NaN None NaN \n", "\n", " Surface Water Removed Corrective Actions Completed Approved Form 27 \\\n", "0 NaN False NaN \n", "1 NaN False NaN \n", "2 0.0 True NaN \n", "3 NaN False NaN \n", "4 NaN False NaN \n", "... ... ... ... \n", "16885 0.0 False 1.0 \n", "16886 0.0 False 1.0 \n", "16887 0.0 False 1.0 \n", "16888 NaN False 0.0 \n", "16889 NaN False 0.0 \n", "\n", " Form 27 Project Number geometry \n", "0 2141471.0 POINT (-104.51097 39.81959) \n", "1 NaN POINT (-104.61818 40.08456) \n", "2 NaN POINT (-104.61818 40.08456) \n", "3 NaN POINT (-104.88494 40.05447) \n", "4 2141511.0 POINT (-104.84506 40.44426) \n", "... ... ... \n", "16885 33291.0 POINT (-104.48176 40.3205) \n", "16886 33291.0 POINT (-104.48225 40.32023) \n", "16887 33291.0 POINT (-104.48256 40.32007) \n", "16888 NaN POINT (-104.57222 40.50979) \n", "16889 NaN POINT (-108.15951 39.59893) \n", "\n", "[16890 rows x 107 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spills['geometry'] = gpd.points_from_xy(spills['Longitude'], spills['Latitude'])\n", "spills = gpd.GeoDataFrame(spills, geometry='geometry')\n", "spills.set_crs(epsg=4326, inplace=True) # WGS 84" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from geoalchemy2 import Geometry, WKTElement\n", "\n", "# Convert to GeoDataFrame\n", "spills['geometry'] = gpd.points_from_xy(spills['Longitude'], spills['Latitude'])\n", "spills = gpd.GeoDataFrame(spills, geometry='geometry')\n", "spills.set_crs(epsg=4326, inplace=True)\n", "\n", "# Save to database and create geojson\n", "spills.to_postgis('spills', engine, if_exists='replace', index=False)\n", "spills.to_file('spills.geojson', driver='GeoJSON')\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "spatial_env2", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.15" } }, "nbformat": 4, "nbformat_minor": 2 }