Skip to main content

Working with CSV

Learn how to use CSV files with WKT geometries in GeoETL.

CSV + Geospatial Data

CSV files store geospatial data by including geometry in WKT (Well-Known Text) format.

WKT Geometry Format

WKT represents geometries as text strings. Coordinates in WKT are longitude latitude (x y), not latitude longitude.

Creating CSV with Geometries

Example CSV file with WKT geometries:

name,population,geometry
Tokyo,13960000,"POINT(139.6917 35.6895)"
Delhi,32941000,"POINT(77.2090 28.6139)"
Shanghai,27796000,"POINT(121.4737 31.2304)"

Converting CSV to GeoJSON

Basic Conversion

geoetl-cli convert \
-i cities.csv \
-o cities.geojson \
--input-driver CSV \
--output-driver GeoJSON \
--geometry-column geometry
IMPORTANT

The --geometry-column parameter is REQUIRED for all CSV operations in GeoETL.

Unlike GeoJSON (which has a standard geometry structure), CSV files can have any column name for geometries. You must explicitly tell GeoETL which column contains your WKT geometries.

If you forget this parameter, you'll get a clear error message with an example.

By default, most CSV files use "geometry" as the column name, but you must explicitly specify it.

Custom Geometry Column

If your geometry column has a different name:

name,population,wkt
Tokyo,13960000,"POINT(139.6917 35.6895)"
Delhi,32941000,"POINT(77.2090 28.6139)"

Use --geometry-column:

geoetl-cli convert \
-i cities.csv \
-o cities.geojson \
--input-driver CSV \
--output-driver GeoJSON \
--geometry-column wkt

Specifying Geometry Type

For optimization, you can specify the geometry type:

geoetl-cli convert \
-i points.csv \
-o points.geojson \
--input-driver CSV \
--output-driver GeoJSON \
--geometry-column wkt \
--geometry-type Point

Supported types:

  • Point
  • LineString
  • Polygon
  • MultiPoint
  • MultiLineString
  • MultiPolygon
  • Geometry (mixed types - default)

Converting GeoJSON to CSV

Basic Conversion

geoetl-cli convert \
-i cities.geojson \
-o cities.csv \
--input-driver GeoJSON \
--output-driver CSV

This creates a CSV with:

  • All properties as columns
  • Geometry column with WKT strings

Custom Geometry Column Name

Currently, the geometry column is always named "geometry". In future versions, you'll be able to customize this.

Troubleshooting CSV Issues

Issue: Invalid WKT

Error: Failed to parse WKT

Common causes:

# ❌ Missing coordinates
"POINT()"

# ❌ Wrong format
"POINT: -122, 37"

# ❌ Extra spaces
"POINT ( -122 37 )"

Solutions:

# ✅ Correct format
"POINT(-122.4194 37.7749)"

Issue: Geometry Column Not Found

Error: Geometry column 'geometry' not found

Solution: Specify the correct column name

geoetl-cli convert -i data.csv -o data.geojson \
--input-driver CSV --output-driver GeoJSON \
--geometry-column wkt # or whatever your column is named

Issue: Encoding Problems

Symptoms: Special characters appear as or weird symbols

Solution: Ensure UTF-8 encoding

# Convert to UTF-8 (Linux/macOS)
iconv -f ISO-8859-1 -t UTF-8 input.csv > output.csv

# Then convert with GeoETL
geoetl-cli convert -i output.csv -o data.geojson \
--input-driver CSV --output-driver GeoJSON

Issue: Empty Output

Symptoms: Conversion succeeds but output is empty

Possible causes:

  1. Input CSV is empty
  2. No geometry column found
  3. All WKT strings are invalid

Debug with verbose mode:

geoetl-cli -v convert -i data.csv -o data.geojson \
--input-driver CSV --output-driver GeoJSON \
--geometry-column geometry

Large CSV Files

For large files, use verbose mode to monitor progress:

geoetl-cli -v convert -i large_data.csv -o large_data.geojson \
--input-driver CSV --output-driver GeoJSON \
--geometry-column geometry

Quick Reference

# Basic CSV to GeoJSON (--geometry-column REQUIRED for CSV)
geoetl-cli convert -i data.csv -o data.geojson \
--input-driver CSV --output-driver GeoJSON \
--geometry-column geometry

# Custom geometry column name
geoetl-cli convert -i data.csv -o data.geojson \
--input-driver CSV --output-driver GeoJSON \
--geometry-column wkt

# Specify geometry type for optimization
geoetl-cli convert -i data.csv -o data.geojson \
--input-driver CSV --output-driver GeoJSON \
--geometry-column wkt \
--geometry-type Point

# GeoJSON to CSV (no geometry-column needed for GeoJSON input)
geoetl-cli convert -i data.geojson -o data.csv \
--input-driver GeoJSON --output-driver CSV

# Verbose output
geoetl-cli -v convert -i data.csv -o data.geojson \
--input-driver CSV --output-driver GeoJSON \
--geometry-column geometry

References

See Also