Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
podcast
Filter by Categories
ArcGIS Pro
GDAL
GeoJson
Map
postgis
Python
QGIS
Uncategorized

CSV to GeoJSON

Converting Between CSV and GeoJSON: A Comprehensive Guide

Quickmaptools.com is by far the easiest way to convert between CSV and Geojson. But if you are looking for desktop options continue reading!

Introduction

Geospatial data can be represented in various formats, each with unique features and uses. CSV (Comma-Separated Values) is a common format for tabular data, while GeoJSON is a popular format for encoding geographic data structures in JSON. This guide will provide step-by-step instructions on converting between CSV and GeoJSON using various tools and programming languages.

Overview of CSV and GeoJSON

Before diving into the conversion process, let’s understand the characteristics of both formats:

  • CSV (Comma-Separated Values):
  • Structure: A plain text format that organizes data into rows and columns.
  • Geometry Types: Not natively supported; geographic information is often stored as latitude and longitude columns.
  • Attributes Handling: Simple attribute storage with no inherent structure for spatial data.
  • Styling and Symbology: Not supported.
  • Coordinate System: Typically stores geographic coordinates in separate columns (e.g., latitude, longitude).
  • File Size Considerations: Generally compact, but size can increase with large datasets.
  • GeoJSON (Geographic JSON):
  • Structure: JSON-based format that stores geographic features with properties and geometries.
  • Geometry Types: Supports Point, LineString, Polygon, MultiPoint, MultiLineString, and MultiPolygon.
  • Attributes Handling: Uses a properties object to store additional data.
  • Styling and Symbology: Not natively supported; styling information must be handled separately.
  • Coordinate System: Uses a standard order of longitude, latitude, and optionally, altitude.
  • File Size Considerations: Compact due to JSON structure, making it ideal for web applications.

Conversion Methods

Several tools and methods are available for converting CSV to GeoJSON. Below, we outline step-by-step guides for different approaches:

1. Converting Using QGIS

Single File Conversion:

  1. Open QGIS.
  2. Go to Layer > Add Layer > Add Delimited Text Layer.
  3. Select the CSV file and ensure that the latitude and longitude columns are correctly identified.
  4. Right-click the loaded layer in the Layers panel.
  5. Choose Export > Save Features As.
  6. In the format dropdown, select GeoJSON.
  7. Specify the file name and location, then click OK.

Batch Conversion:

  1. Open QGIS.
  2. Go to Processing > Toolbox.
  3. Search for Vector layers to GeoJSON.
  4. Select multiple CSV files as input.
  5. Choose the output format (GeoJSON) and specify the output directory.
  6. Click Run.

2. Converting Using GDAL

Single File Conversion:

  • Open the command line or terminal.
  • Use the ogr2ogr command to convert CSV to GeoJSON:
  ogr2ogr -f "GeoJSON" output.geojson input.csv -oo X_POSSIBLE_NAMES=longitude -oo Y_POSSIBLE_NAMES=latitude

Here, replace longitude and latitude with the appropriate column names in your CSV file.

Batch Conversion:

  • Navigate to the directory containing your CSV files.
  • Use a loop to convert all files:
  for i in *.csv; do ogr2ogr -f "GeoJSON" "${i%.csv}.geojson" "$i" -oo X_POSSIBLE_NAMES=longitude -oo Y_POSSIBLE_NAMES=latitude; done

3. Converting Using Python

Python, with its powerful libraries, provides a flexible way to convert CSV to GeoJSON. Below is an example using the pandas and geojson libraries.

import pandas as pd
import geojson

# Load the CSV file
df = pd.read_csv('input.csv')

# Convert to GeoJSON format
features = []
for _, row in df.iterrows():
    feature = geojson.Feature(
        geometry=geojson.Point((row['longitude'], row['latitude'])),
        properties=row.to_dict()
    )
    features.append(feature)

# Save to a GeoJSON file
with open('output.geojson', 'w') as f:
    geojson.dump(geojson.FeatureCollection(features), f)

Batch Conversion:

import os
import pandas as pd
import geojson

directory = 'path_to_directory'
for filename in os.listdir(directory):
    if filename.endswith('.csv'):
        df = pd.read_csv(os.path.join(directory, filename))

        features = []
        for _, row in df.iterrows():
            feature = geojson.Feature(
                geometry=geojson.Point((row['longitude'], row['latitude'])),
                properties=row.to_dict()
            )
            features.append(feature)

        # Save each file to GeoJSON
        with open(os.path.join(directory, filename.replace('.csv', '.geojson')), 'w') as f:
            geojson.dump(geojson.FeatureCollection(features), f)

Potential Challenges in Conversion

When converting between CSV and GeoJSON, consider the following challenges:

  • Geometry Support: CSV does not natively support geometry, so you must ensure that latitude and longitude columns are correctly formatted.
  • Attribute Handling: Both formats can store attributes, but ensure column names and data types are consistent.
  • Coordinate Systems: Ensure the coordinate system is consistent. GeoJSON uses EPSG:4326 (WGS84), so coordinates must be in the longitude, latitude order.
  • Lossy Conversion: Conversion errors can occur if the CSV contains incorrect or incomplete geographic information.

Practical Advice for Successful Conversion

  • Pre-Conversion Review: Review the CSV file to ensure the geographic data is correctly formatted and columns are appropriately named.
  • Use Reliable Tools: QGIS and GDAL are reliable tools for converting CSV to GeoJSON.
  • Post-Conversion Validation: After conversion, validate the GeoJSON file using online validators or GIS software.
  • Backup Original Data: Always keep a backup of the original CSV files before conversion.

Frequently Asked Questions

  • Why are my features misplaced after conversion?
  • This is likely due to incorrect coordinate ordering. GeoJSON uses longitude, latitude (X, Y) order.
  • Is batch conversion possible with this method?
  • Yes, tools like GDAL, QGIS, and Python scripts support batch conversion.
  • Will I lose data during conversion?
  • Generally, no. However, ensure all geographic data in the CSV is correctly formatted to prevent loss.

About the Author
I'm Daniel O'Donohue, the voice and creator behind The MapScaping Podcast ( A podcast for the geospatial community ). With a professional background as a geospatial specialist, I've spent years harnessing the power of spatial to unravel the complexities of our world, one layer at a time.