Production-grade airport data and flight geometry library
Project description
AeroNavX
A production-grade Python library for airport data and flight geometry calculations.
Features
- 🛫 Airport Database: Global airport data with efficient IATA/ICAO indexing
- 📏 Distance Calculations: Haversine, Vincenty, and Spherical Law of Cosines
- 🌍 Geodesy: Bearings, midpoints, great circle paths
- 🔍 Search: Fuzzy name search, nearest neighbor queries, radius search
- 🛤️ Routing: Multi-segment routes, flight time estimation, shortest paths
- 📊 Analytics: Statistics by country, continent, type, and elevation
- ⏰ Timezone Support: Automatic timezone detection and local time
- 🌱 Emissions: CO2 emissions estimation per passenger
- 🌤️ Weather: METAR and TAF data fetching
- 💻 CLI: Command-line interface for quick queries
- 🌐 REST API: FastAPI-based web service
Installation
git clone https://github.com/teyfikoz/AeroNavX.git
cd AeroNavX
pip install -e .
Quick Start
import aeronavx
# Get airports
ist = aeronavx.get_airport("IST")
jfk = aeronavx.get_airport("JFK")
# Calculate distance
dist_km = ist.distance_to(jfk)
print(f"Distance: {dist_km:.2f} km")
# Find nearest airports
nearest = aeronavx.nearest_airport(41.0, 29.0, n=5)
# Estimate emissions
co2 = aeronavx.estimate_co2_kg_for_segment("IST", "JFK")
print(f"CO2: {co2:.2f} kg per passenger")
CLI Usage
# Calculate distance
aeronavx distance --from IST --to JFK --unit nmi
# Find nearest airports
aeronavx nearest --lat 41.0 --lon 29.0 --n 5
# Search by name
aeronavx search --name "Heathrow"
# Estimate emissions
aeronavx emissions --from IST --to LHR
# Flight time
aeronavx flight-time --from IST --to JFK
API Server
python -m aeronavx.api.server
Then access:
- http://localhost:8000/health
- http://localhost:8000/airport/IST
- http://localhost:8000/distance?from=IST&to=JFK
- http://localhost:8000/nearest?lat=41.0&lon=29.0&n=5
Data
Place your airports.csv file in the data/ directory. The CSV should contain:
- Basic info: id, ident, type, name
- Coordinates: latitude_deg, longitude_deg, elevation_ft
- Location: continent, iso_country, iso_region, municipality
- Codes: gps_code (ICAO), iata_code, local_code
- Optional: scheduled_service, home_link, wikipedia_link, keywords
Examples
See examples/ directory for:
basic_distance.py: Distance calculationsnearest_airports.py: Finding nearby airportsrouting_example.py: Multi-segment routesemissions_example.py: CO2 estimation
Testing
pytest
Dependencies
Required: Python >= 3.10
Optional:
pandas: DataFrame supportscipy: Faster spatial indexingrapidfuzz: Better fuzzy searchtimezonefinder: Timezone supportfastapi,uvicorn: API serverrequests: Weather data
License
MIT License
Contributing
Contributions welcome! Please open an issue or pull request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aeronavx-0.1.1.tar.gz
(21.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
aeronavx-0.1.1-py3-none-any.whl
(26.0 kB
view details)