{"version":1,"pages":[{"id":"Zzb3fft04FqJNeMATYkT","title":"Introduction","pathname":"/documentation","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"anchor","description":"A little bit about where we stand."},{"id":"L7TNDoASzaOn37WuSN5U","title":"Quick Start","pathname":"/documentation/default-start/quick-start","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"rocket","description":"A hands-on quick start guide for using AISdb.","breadcrumbs":[{"label":"Default Start"}]},{"id":"aHa8jHT8s1N1esWu9w9j","title":"SQL Database","pathname":"/documentation/default-start/sql-database","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"database","description":"How AISdb organizes decoded AIS messages across SQLite and PostgreSQL/TimescaleDB tables, and how to query them directly with SQL.","breadcrumbs":[{"label":"Default Start"}]},{"id":"ZlMInKks3ChO385Xqo1n","title":"AIS Hardware","pathname":"/documentation/default-start/ais-hardware","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"satellite-dish","description":"How to deploy your own Automatic Identification System (AIS) receiver.","breadcrumbs":[{"label":"Default Start"}]},{"id":"SCJMNEWEqhPoPHRP7azf","title":"Database Loading","pathname":"/documentation/tutorials/database-loading","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"download","description":"Load AIS data into a SQLite or PostgreSQL database with AISdb, from installation through a full-year Spire ingestion example.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"ZjL1BZHSyykkTYOSCLv6","title":"Data Querying","pathname":"/documentation/tutorials/data-querying","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"magnifying-glass","description":"Query AIS data loaded with AISdb using DBQuery and TrackGen, with practical examples for time range, bounding box, and MMSI filters.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"0Q0oBou5zFPpxg8gdPza","title":"Data Cleaning","pathname":"/documentation/tutorials/data-cleaning","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"broom","description":"Denoise AIS tracks with AISdb, removing duplicate-identifier jumps, anchored vessels, and land-locked positions before analysis.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"TRAiVHlcYIq74MpGrYnM","title":"Data Visualization","pathname":"/documentation/tutorials/data-visualization","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"map","description":"Visualize AISdb vessel tracks with the built-in web interface or with Contextily, Basemap, Cartopy, Plotly, and Kepler.gl.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"k6r6pS6YIqooMpi8DqOq","title":"Track Interpolation","pathname":"/documentation/tutorials/track-interpolation","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"bezier-curve","description":"Generate estimated vessel positions between AIS reports using linear, geodesic, cubic spline, and custom interpolation methods.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"GjRWJ15HIAeUpUP0q5ql","title":"Haversine Distance","pathname":"/documentation/tutorials/haversine-distance","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"globe","description":"Compute great-circle distance between AIS positions with the haversine formula, including 3D distance to a submerged reference point.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"tkb2s5b8eB1DZq4zoXTD","title":"Vessel Speed","pathname":"/documentation/tutorials/vessel-speed","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"gauge-high","description":"Calculate vessel speed over ground in knots between consecutive AIS positions, and use it to flag implausible track jumps.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"0bdQi4ZLdPvTHokNejDQ","title":"Coast, shore, and ports","pathname":"/documentation/tutorials/coast-shore-and-ports","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"water","description":"Extracting distance features from and to points-of-interest using raster files.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"QoKIMtQEW6EhjbvlG2fF","title":"Using Your AIS Data","pathname":"/documentation/tutorials/using-your-ais-data","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"folder-open","description":"Download open-source AIS data or import your own files into AISdb, from a raw CSV through database loading, querying, cleaning, and processing.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"hU3NCtry83jRvizGVS6i","title":"Vessel Metadata","pathname":"/documentation/tutorials/vessel-metadata","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"ship","description":"Attach vessel particulars, name, IMO, ship type, flag, and tonnage, to decoded tracks from a local metadata database or an official API.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"xe0nmdfqP9jLHW3QAgeI","title":"AIS Data to CSV","pathname":"/documentation/tutorials/ais-data-to-csv","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"file-csv","description":"Export decoded AIS tracks from a SQLite or PostgreSQL AISdb database to CSV, using the built-in write_csv() writer or a custom column selection.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"HJHtUUcIlfmB0VTMr8b1","title":"Decimation with AISdb","pathname":"/documentation/tutorials/decimation-with-aisdb","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"compress","description":"Reduce AIS track density with AISdb's Visvalingam-Whyatt line simplification, through TrackGen's decimate argument or direct calls.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"If7utjGeCVJ4MR1HUWbf","title":"Bathymetric Data","pathname":"/documentation/tutorials/bathymetric-data","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"water-arrow-down","description":"Merge GEBCO global bathymetric grids onto AIS tracks with AISdb, then color and visualize vessel movement by the depth of water it traveled through.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"B269am8eX54CKDSP5iSq","title":"Weather Data","pathname":"/documentation/tutorials/weather-data","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"cloud-sun-rain","description":"Merge ERA5 reanalysis weather variables onto AIS vessel tracks with AISdb's WeatherDataStore, reading GRIB files from disk or fetching them from the Copernicus Climate Data Store.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"bo8y9eT28mqM29XJYZHv","title":"Automatic Identification System","pathname":"/documentation/tutorials/automatic-identification-system","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"tower-broadcast","description":"An overview of the Automatic Identification System (AIS), the ITU-R M.1371 message set, transponder classes, MMSI structure, and the limitations of AIS as a maritime surveillance data source.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"9FQoTiUahvPgwlOlKRk9","title":"Hexagon Discretization","pathname":"/documentation/tutorials/hexagon-discretization","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"hexagon","description":"In this page, we will see how we can use AISdb to discretize AIS tracks to hexagons.","breadcrumbs":[{"label":"Tutorials"}]},{"id":"0HV2fj434fZyler1rH8B","title":"Clustering with Scikit Learn","pathname":"/documentation/machine-learning/clustering-with-scikit-learn","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"puzzle","description":"Find shipping lanes, anchorages, and vessel behavior groups in one day of NOAA AIS data by running DBSCAN and KMeans over AISdb tracks.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"lEXP6s8hpxFp3yMU1hJr","title":"Kalman Filters with FilterPy","pathname":"/documentation/machine-learning/kalman-filters-with-filterpy","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"filter","description":"Turn a jittery AIS track into a smooth path and a running velocity estimate with a constant-velocity Kalman filter in FilterPy, then flag GPS outliers with the filter's innovation.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"h4T76JKfiOkV5qwV1g6H","title":"seq2seq in PyTorch","pathname":"/documentation/machine-learning/seq2seq-in-pytorch","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"arrow-right-arrow-left","description":"Build an attention-based encoder-decoder LSTM in PyTorch that forecasts a vessel's next positions from its recent AIS track, using AISdb to query, clean, and reshape the trajectories for training.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"4ozJuVoGbEyW3xoLJyBd","title":"AutoEncoders in Keras","pathname":"/documentation/machine-learning/autoencoders-in-keras","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"k","description":"A GRU autoencoder in Keras that compresses four hours of vessel track and decodes an eight-hour forecast, trained with probabilistic teacher forcing.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"2F82XzPPIUnuOtwnQtr6","title":"Embedding with traj2vec","pathname":"/documentation/machine-learning/embedding-with-traj2vec","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"chart-scatter-3d","description":"Discretize AIS trajectories onto an H3 grid and train a t2vec-style encoder-decoder in PyTorch that embeds vessel tracks as fixed-length vectors.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"gseFPFMIYJsMSDfk8le0","title":"Using Newtonian PINNs","pathname":"/documentation/machine-learning/using-newtonian-pinns","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"code-pull-request","description":"A physics-informed Seq2Seq model that penalizes unrealistic velocity and acceleration in predicted vessel tracks, so forecasts stay kinematically plausible even when AIS data is sparse or noisy.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"5DKWRJxQQ1NyD0aK1Wdc","title":"TGNs with TorchGeometric","pathname":"/documentation/machine-learning/tgns-with-torchgeometric","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"diagram-project","description":"Turn one day of NOAA AIS data into a temporal transit graph with AISdb and train a Temporal Graph Network on it with PyTorch Geometric.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"yDi1kI5oVXvrfTQk6T7J","title":"Building a RAG Chatbot","pathname":"/documentation/machine-learning/building-a-rag-chatbot","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"message-bot","description":"Build a documentation chatbot with Retrieval-Augmented Generation. Scrape the AISViz docs, index them in ChromaDB, and ground Gemini answers in real pages that every response cites.","breadcrumbs":[{"label":"Machine Learning"}]},{"id":"pxatv5UqPG9TBGBo2YOt","title":"A No-Code Interface","pathname":"/documentation/machine-learning/a-no-code-interface","siteSpaceId":"sitesp_lAA9E","lang":"en","icon":"brain-circuit","description":"Preprocess, discretize, and enrich AIS tracks through a point-and-click Gradio app, with built-in plotting and a Gemini assistant, no Python script required.","breadcrumbs":[{"label":"Machine Learning"}]}]}