GIS PORTFOLIO PROJECT

Bathymetry
Analysis Tool

A standalone Python application with a custom GUI that automates lake depth analysis — generating contour maps, interpolated raster surfaces, and 3D ArcScene visualizations using the ArcPy API.

Platform
ArcGIS Pro / Standalone
Language
Python 3 / PyQt5
ARCSCENE — 3D DEPTH MODEL
Synthetic preview · Generated from interpolated raster
00 —

Technology Stack

//
Python 3
Core scripting language. Built and tested in the Spyder IDE with a structured OOP approach.
ArcPy API
ESRI's geoprocessing library. Drives interpolation tools, contour generation, and surface volume calculations.
Qt Designer / PyQt5
GUI framework used to design and deploy the standalone interface with all input/output widgets.
ArcScene / ArcGIS Pro
3D visualization environment. Outputs can be embedded as a custom toolbox inside ArcGIS Pro.
~
Bathymetry Module
Custom Python class module scripted from scratch encapsulating all spatial analysis logic.
OS / File I/O
Standard library handling directory management, output path routing, and file validation.
01 —

Project Overview

This project delivers a standalone bathymetry analysis application built entirely in Python 3. At its core is a custom Bathymetry class module that wraps ArcPy geoprocessing tools into a clean, scriptable interface — accepting depth point shapefiles as input and outputting a comprehensive suite of spatial products.

The application is designed for dual-use deployment: it runs as a standalone desktop tool for office-based workflows, and its lightweight footprint makes it practical for field use. It can additionally be packaged as a custom tool inside ArcGIS Pro's toolbox, integrating directly into existing GIS workflows.

The GUI was designed in Qt Designer and wired to the Bathymetry module through a handler script, creating a clean three-file architecture: the GUI definition, the core analysis module, and the handler that binds them together. Every widget includes contextual tooltips to guide users through the analysis parameters.

ARCHITECTURE NOTE
Three-file structure: gui.py (Qt Designer layout), bathymetry.py (core class module), and handler.py (execution bridge). Fully modular — each component is independently testable.
DEPLOYMENT MODES
Runs standalone from any machine with Python + ArcPy installed. Alternatively, the module can be wrapped as a custom ArcGIS Pro toolbox — making it accessible directly from the ArcGIS interface alongside native ESRI tools.
INPUT REQUIREMENTS
Three shapefiles — a point layer (depth measurements), a polyline boundary, and a lake perimeter — plus a designated output folder. The 'Z value' field (depth attribute) is selectable from within the GUI.
02 —

Execution Workflow

Steps marked ★ are required to run the tool. All other steps configure optional parameters.

STEP 01
Create Output Directory
Create a new empty folder in a local directory. This is where all generated files — rasters, contours, volume reports, and the ArcScene document — will be written.
STEP 02
Load Input Shapefiles
Use the browse buttons in the Input section to load the three required shapefiles: depth point layer, polyline boundary, and lake polygon perimeter.
STEP 03
Set Output Path
Point the Output field to the folder created in Step 1. All analysis products will be routed here automatically by the handler.
STEP 04
Choose Interpolation Method
Select one of three interpolation methods from the Parameters section. Each method offers a different perspective on the lake's spatial depth distribution.
STEP 05
Assign Z Value Field
Select the depth attribute field from the input point shapefile to use as the Z (elevation) value for all surface calculations.
STEP 06
Run Analysis
Click the Run button. The handler invokes the Bathymetry class module, processes all geoprocessing tasks via ArcPy, and writes outputs to the specified directory.
03 —

Key Features

CORE MODULE
Custom Bathymetry Class
The heart of the project is a purpose-built Python class module that encapsulates all geoprocessing logic. Written in the Spyder IDE, it wraps ArcPy interpolation tools, contour generation, and surface volume calculations into clean, reusable methods. The class accepts structured inputs and handles all ArcPy workspace management internally — abstracting away the complexity from the GUI layer.
arcpy.sa Interpolation ContourList SurfaceVolume OOP Design
04 —

Analysis Outputs

Contour Map
Depth contour polylines derived from the interpolated surface, representing isobaths across the lake's floor at defined depth intervals.
.shp / .lyr
Interpolation Raster(s)
One or more raster grids generated by the selected interpolation method — IDW, Kriging, or Spline — representing continuous depth estimates across the lake.
.tif / .img
Surface Volume Report
Volumetric calculation of the lake body using the interpolated surface, providing total volume and area statistics at specified reference planes.
.txt / .dbf
3D ArcScene Document
A fully layered ArcScene file displaying the lake's bathymetric surface in 3D, with depth exaggeration and symbology applied for visual interpretation.
.sxd / .aprx
Lake Review Summary
Automated report summarizing key metrics: maximum depth, average depth, surface area, and volume — formatted for review in office or field settings.
.txt / .pdf
All Inputs Preserved
The output folder contains all source shapefiles, intermediate processing files, and final deliverables organized in a single directory for easy archiving or sharing.
Organized directory
05 —

Challenges & Future Direction

CHALLENGE ENCOUNTERED
Map Display Integration
Attempts to embed a live map canvas in the GUI ran into significant compatibility friction. QGIS widgets (QgsMapCanvas), geopandas, and ArcPy's mapping functions all presented integration issues. The arcpy.mapping API had been deprecated and migrated to arcpy.mp — an undocumented change that made implementation difficult within the project timeline.
RESOLVED
GUI + Module Integration
Initial concern about connecting the PyQt5 GUI to the Bathymetry class module proved unfounded. The handler script successfully bridged both components and the GUI/module pairing worked reliably — demonstrating a clean separation of interface logic from geoprocessing logic.
FUTURE ENHANCEMENT
In-GUI Map Preview
With additional development time, embedding a live shapefile preview within the GUI would significantly improve usability — allowing users to visually verify inputs before running the analysis, directly in the tool window.
FUTURE ENHANCEMENT
Extended ArcScene Pipeline
The architecture is well-suited for expanding into full 3D ArcScene workflows — automating the scene document setup, applying depth-scaled symbology, and exporting fly-through animations of the mapped lake for presentations and reporting.
FUTURE ENHANCEMENT
Interpolation Parameter Controls
Adding fine-grained parameter controls for each interpolation method (cell size, search radius, variogram model for Kriging) would give analysts more control over output accuracy and allow direct comparison of method outputs.
DESIGN DECISION
Standalone vs. Integrated Tool
The tool was architectured to work both as a standalone script and as an ArcGIS Pro custom toolbox — giving it maximum versatility across office GIS workstations, field laptops, and enterprise ArcGIS environments.