Upload up to 10 CSV files. GeoForge auto-detects lat/lon/elevation columns and sniffs your delimiter. Comment lines starting with # are skipped automatically.
Drop CSV files here or click to browse
Up to 10 files · .csv / .tsv / .txt · comment lines (#) auto-skipped
Uses the Open-Meteo Elevation API — free, no key, no rate limit. Sends batch requests (up to 100 coords at once). Results are added as a new elev_m column and can also fill existing empty elevation cells.
GeoForge auto-detects common column names. Override any mapping here. These apply globally across all loaded files. Only lat and lon are required.
These columns will be appended to each placemark's description balloon as a table.
GeoForge — Quick Start Guide
GeoForge turns CSV data into KML or KMZ files for Google Maps and Google Earth. Follow the tabs left-to-right: Import → Elevation → Column Map → Style → Export.
💡 Elevation lookup is automatic and free — just hit "Fetch Elevation" after uploading. No API key needed.
1 · CSV Format Requirements
The only hard requirements are a latitude column and a longitude column. Everything else is optional. GeoForge auto-detects column names and skips comment lines starting with #.
Minimum viable CSV (points)
lat,lon 40.2645,-76.8835 39.714,-78.611 40.083,-78.516
Typical weather station CSV
station_id,lat,lon,elev_m,dist_mi,bearing Backyard PWS,40.2645,-76.8835,122,0,— MID_MD141,39.714,-78.611,,10.76,WSW KHMZ,40.083,-78.516,,20.1,NNW
Note: empty elev_m cells will be filled by the Elevation tab.
Accepted latitude/longitude column names (auto-detected)
lat, latitude, Lat, LAT, y, Ylon, lng, longitude, Lon, LON, LNG, x, X
Accepted elevation column names (auto-detected)
elev, elev_m, elevation, alt, altitude, height, elev_ft
Accepted name/label column names
name, Name, station_id, id, ID, label, title, site
Delimiter
Comma (,) is assumed. Tab-delimited (.tsv) files also work. GeoForge auto-sniffs the delimiter.
⚠️ If your CSV uses #-prefixed header/comment lines (like Xweather exports), they are automatically skipped — the first non-# line is treated as the header.
2 · Elevation Auto-Fill
GeoForge calls the Open-Meteo Elevation API (api.open-meteo.com/v1/elevation). This is a free, open API with no key required. It returns elevation in meters above mean sea level using the SRTM90 dataset.
- Requests are batched — up to 100 coordinates per API call
- A 100-row file = 1 API call. A 1,000-row file = 10 calls
- By default, only fills empty elevation cells (toggle to overwrite all)
- Output columns:
elev_m(meters) and optionallyelev_ft(feet)
💡 After fetching elevation, export as CSV (enriched) to get your original data back with the new elevation column — great for building a permanent enriched station inventory.
3 · Geometry Types
POINTS Default — one placemark per row
Each CSV row becomes a pinpoint on the map. Works with any CSV that has lat/lon. Supports icons, heatmap coloring, and balloon popups.
LINE / PATH Connect rows in order to make a route
Rows are connected as a polyline in CSV row order (or sorted by a column you specify in Column Map → Line/Path order). Use for transects, routes, fronts, or trajectories.
lat,lon,timestamp 40.1,-77.0,2026-05-21T06:00 40.3,-77.2,2026-05-21T07:00 40.5,-77.5,2026-05-21T08:00
POLYGON Closed shape
Like a line but the last point connects back to the first. Rows should define the boundary vertices in order (clockwise = outer ring). Optionally filled.
# Triangle polygon example lat,lon,vertex_order 40.0,-77.0,1 40.5,-76.5,2 39.8,-76.5,3
⚠️ For polygons, coordinates must form a proper closed ring. GeoForge auto-closes the ring by repeating the first point. Do not manually repeat the first row.
MULTI-FILE Separate layers per file
Each uploaded CSV becomes its own KML Folder (layer). Useful for comparing networks side by side in Google Earth.
4 · Style Options
Icons
GeoForge generates KML Style elements pointing to Google's built-in icon palette. Available shapes: circle, square, diamond, star, flag, or custom URL. The icon color uses KML's AABBGGRR hex format (converted automatically from the color picker).
💡 Google Maps on mobile may not render custom icon URLs — use built-in shapes for broadest compatibility.
Heatmap Coloring
Enable heatmap in the Style tab and map a numeric column (e.g. elevation, distance, temperature) in Column Map → Value. Each point is colored on a gradient from Low→High. Works best with 10+ points.
Labels
Label text comes from the Name column mapping. Label scale 0.8 = slightly smaller than default; 0 = hidden. Note: Google Maps hides labels until you click a placemark — they're always visible in Google Earth.
Altitude Modes
clampToGround— ignores elevation, sticks to terrain (default, works everywhere)relativeToGround— elevation value = meters above ground levelabsolute— elevation value = meters above mean sea level (requires Google Earth)
5 · KML vs KMZ
| KML | KMZ |
|---|---|
| Plain text XML, human-readable | ZIP archive containing KML + assets |
| Works in Google Maps (import) | Works in Google Earth (best) |
| Larger file size | Compressed, smaller |
| Easy to inspect / edit | Opaque until unzipped |
For most weather station work, KML is fine. Use KMZ when sharing with people who use Google Earth Desktop.
Importing into Google Maps
- Go to
maps.google.com → My Maps → Create - Click Import on a layer
- Upload your
.kmlfile (Maps supports KML, not KMZ directly)
Importing into Google Earth (Web)
- Go to
earth.google.com - Click the ☰ menu → Projects → New Project → Import KML from computer
- Upload
.kmlor.kmz
Importing into Google Earth Pro (Desktop)
- File → Open → select your
.kmlor.kmz - Or drag-and-drop directly onto the globe
6 · Enriched CSV Export
Choose CSV (enriched) as the export format to download your original data with the fetched elevation columns appended. This is useful for building a permanent enriched station inventory without ever leaving the browser.
# Example enriched output station_id,lat,lon,dist_mi,bearing,elev_m,elev_ft MID_MD141,39.714,-78.611,10.76,WSW,573,1880 KHMZ,40.083,-78.516,20.1,NNW,604,1982