# UTM ED50 to WGS84 Coordinate Converter

This script converts UTM (Universal Transverse Mercator) coordinates from ED50 (European Datum 1950) reference system to WGS84 format. It supports 6-degree UTM zones and handles both northern and southern hemispheres.

## Features

- Convert single coordinates interactively
- Batch convert coordinates from CSV files
- Support for all UTM zones (1-60)
- Automatic handling of northern/southern hemispheres
- Error handling and validation
- Detailed conversion statistics

## Installation

1. Install the required dependencies:
```bash
pip install -r utm_converter_requirements.txt
```

Or install manually:
```bash
pip install pyproj pandas
```

## Usage

### Interactive Mode

Run the script in interactive mode to convert single coordinates:

```bash
python utm_ed50_to_wgs84_converter.py --interactive
```

Example session:
```
UTM ED50 to WGS84 Coordinate Converter
========================================
Enter coordinates (type 'quit' to exit)

Enter easting (meters): 500000
Enter northing (meters): 4500000
Enter UTM zone (1-60): 35
Enter hemisphere (N/S) [default: N]: N

WGS84 Coordinates:
Latitude:  40.12345678°
Longitude: 32.87654321°
----------------------------------------
```

### Batch Conversion from CSV

Convert multiple coordinates from a CSV file:

```bash
python utm_ed50_to_wgs84_converter.py input.csv output.csv
```

#### Input CSV Format

The input CSV should contain the following columns:

| Column | Description | Required | Default |
|--------|-------------|----------|---------|
| `easting` | UTM easting coordinate in meters | Yes | - |
| `northing` | UTM northing coordinate in meters | Yes | - |
| `zone` | UTM zone number (1-60) | Yes | - |
| `northern` | Hemisphere flag (True/False) | No | True |

Example input CSV:
```csv
easting,northing,zone,northern,description
500000,4500000,35,True,Sample point 1
600000,4600000,36,True,Sample point 2
400000,4400000,34,True,Sample point 3
```

#### Output CSV Format

The output CSV will contain all original columns plus:
- `wgs84_lat`: WGS84 latitude in decimal degrees
- `wgs84_lon`: WGS84 longitude in decimal degrees

### Custom Column Names

If your CSV uses different column names, specify them with command line arguments:

```bash
python utm_ed50_to_wgs84_converter.py input.csv output.csv \
    --easting-col X \
    --northing-col Y \
    --zone-col ZONE \
    --northern-col HEMISPHERE
```

## Technical Details

### Coordinate Systems

- **ED50 (European Datum 1950)**: Historical European geodetic datum
- **WGS84**: World Geodetic System 1984, current global standard
- **UTM**: Universal Transverse Mercator projection system

### Conversion Process

1. **ED50 UTM → WGS84 UTM**: Transform between datums using pyproj
2. **WGS84 UTM → WGS84 Lat/Lon**: Convert from projected to geographic coordinates

### UTM Zones

The script supports all 60 UTM zones:
- Zones 1-60 cover the globe in 6-degree longitude bands
- Zone 1: 180°W to 174°W
- Zone 60: 174°E to 180°E

### Accuracy

The conversion accuracy depends on:
- Quality of the original ED50 coordinates
- Geographic location (accuracy varies by region)
- Typically within 1-10 meters for most European locations

## Examples

### Example 1: Interactive Conversion

```bash
python utm_ed50_to_wgs84_converter.py --interactive
```

### Example 2: Batch Conversion

```bash
python utm_ed50_to_wgs84_converter.py sample_utm_ed50_data.csv converted_coordinates.csv
```

### Example 3: Custom Column Names

```bash
python utm_ed50_to_wgs84_converter.py data.csv output.csv \
    --easting-col X_COORD \
    --northing-col Y_COORD \
    --zone-col UTM_ZONE
```

## Error Handling

The script handles various error conditions:

- **Invalid UTM zones**: Must be between 1-60
- **Missing columns**: Reports which required columns are missing
- **Invalid coordinates**: Skips invalid rows and reports warnings
- **File not found**: Clear error messages for missing input files

## Dependencies

- **pyproj**: Coordinate transformation library
- **pandas**: Data manipulation and CSV handling
- **argparse**: Command line argument parsing

## License

This script is provided as-is for educational and practical use.

## Troubleshooting

### Common Issues

1. **"Invalid UTM zone" error**: Ensure zone numbers are between 1-60
2. **"Missing required columns" error**: Check your CSV column names
3. **Conversion failures**: Verify coordinate values are numeric
4. **Import errors**: Install required dependencies with pip

### Getting Help

Run the script with `--help` for command line options:
```bash
python utm_ed50_to_wgs84_converter.py --help
``` 