========================================
QGIS → S-57 Converter — Installation
========================================

REQUIRED: Python 3.9+
REQUIRED: GDAL with S-57 support

─────────────────────────────────────────
OPTION A: Windows — Easiest (OSGeo4W)
─────────────────────────────────────────
1. Download OSGeo4W: https://trac.osgeo.org/osgeo4w/
2. Run installer → Advanced Install → Select:
   - gdal
   - python3-gdal
   - python3-geopandas (or install via pip)
3. Use the "OSGeo4W Shell" to run the converter:
   cd "D:\Proyectos Software\QGISS57Converter"
   python converter.py myproject.qgs

─────────────────────────────────────────
OPTION B: Conda / Mamba (Recommended)
─────────────────────────────────────────
conda create -n s57 python=3.11
conda activate s57
conda install -c conda-forge gdal geopandas
pip install lxml
cd "D:\Proyectos Software\QGISS57Converter"
python converter.py myproject.qgs

─────────────────────────────────────────
OPTION C: QGIS Python environment
─────────────────────────────────────────
QGIS already includes GDAL. Run from QGIS Python console:
  import sys
  sys.path.append(r"D:\Proyectos Software\QGISS57Converter")
  from converter import convert
  convert("myproject.qgs", None, None, False, True, True)

─────────────────────────────────────────
INSTALL other dependencies
─────────────────────────────────────────
pip install geopandas lxml pyproj

─────────────────────────────────────────
VERIFY installation
─────────────────────────────────────────
python -c "from osgeo import gdal; drv = gdal.GetDriverByName('S57'); print('S-57 driver:', drv.GetDescription() if drv else 'NOT AVAILABLE')"

========================================
USAGE
========================================

# List layers and their S-57 mapping:
python converter.py project.qgs --list

# Convert:
python converter.py project.qgs

# Custom output name:
python converter.py project.qgs --output CO1CO01M.000

# Custom config:
python converter.py project.qgs --config my_config.json

# No prompts (convert all mapped layers):
python converter.py project.qgs --force

========================================
LAYER NAMING — IMPORTANT
========================================

You have THREE options for mapping your QGIS layers to S-57:

OPTION 1 (easiest): Name your layers directly with S-57 acronyms
  - Layer named "COALNE" → coastline
  - Layer named "DEPARE" → depth area
  - Layer named "SOUNDG" → soundings
  See s57_objects.json for all available object classes.

OPTION 2: Name layers in Spanish or English (auto-detected)
  - Layer named "costa" or "coastline" → auto → COALNE
  - Layer named "fondos" or "batimetria" → auto → DEPARE
  - Layer named "sondas" → auto → SOUNDG
  See cell_config.json → "layer_mappings" for full list.

OPTION 3: Add custom mappings to cell_config.json
  "layer_mappings": {
    "mi_capa_costa": "COALNE",
    "datos_profundidad": "DEPARE"
  }

========================================
CELL NAMING CONVENTION (IHO S-57)
========================================
Format: CC1AA##X.000
  CC  = 2-letter country code (CO=Colombia, US=USA, etc.)
  1   = Navigational Purpose (1=overview...6=berthing)
  AA  = 2-letter area code
  ##  = serial number (01, 02...)
  X   = compilation scale indicator (M=medium)

Example: CO3CA01M.000 = Colombia, scale 1:50000, Caribbean area

Edit "cell_name" in cell_config.json accordingly.

========================================
COMMON S-57 OBJECT CLASSES
========================================
COALNE  Coastline (lines)
LNDARE  Land Area (polygons)
DEPARE  Depth Area (polygons) — needs DRVAL1, DRVAL2 attributes
DEPCNT  Depth Contour (lines) — needs VALDCO attribute
SOUNDG  Soundings (points) — needs VALSOU (depth value) attribute
LIGHTS  Lights (points)
BUOYLAT Lateral Buoy (points)
BCNLAT  Lateral Beacon (points)
ACHARE  Anchorage Area (polygons)
HRBARE  Harbour Area (polygons)
BERTHS  Berth (polygons/lines)
OBSTRN  Obstruction (any)
WRECKS  Wreck (polygons/points)
FAIRWY  Fairway (polygons)
RESARE  Restricted Area (polygons)
RIVERS  River (polygons/lines)
M_COVR  Coverage (polygons) — required in valid ENCs

See s57_objects.json for complete list.
