Python Script to Convert CSV to GeoJSON
11,574
Solution 1
one could use directly the geojson
package:
import csv, json
from geojson import Feature, FeatureCollection, Point
features = []
with open('CurrentObs.csv', newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for latitude, longitude, weather, temp in reader:
latitude, longitude = map(float, (latitude, longitude))
features.append(
Feature(
geometry = Point((longitude, latitude)),
properties = {
'weather': weather,
'temp': temp
}
)
)
collection = FeatureCollection(features)
with open("GeoObs.json", "w") as f:
f.write('%s' % collection)
Solution 2
Check if this script resolves
import csv
import json
from collections import OrderedDict
li = []
with open('CurrentObs.csv', 'r') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for latitude, longitude, weather, temp in reader:
d = OrderedDict()
d['type'] = 'Feature'
d['geometry'] = {
'type': 'Point',
'coordinates': [float(latitude), float(longitude)]
}
d['properties'] = {
'weather': weather,
'temp': temp
}
li.append(d)
d = OrderedDict()
d['type'] = 'FeatureCollection'
d['features'] = li
with open('GeoObs.json', 'w') as f:
f.write(json.dumps(d, sort_keys=False, indent=4))
Author by
user5834454
Updated on July 24, 2022Comments
-
user5834454 almost 2 years
I am needing a Python script to convert CSV data to GeoJSON output. The output should match the format, below:
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -85.362709,40.466442 ] }, "properties": { "weather":"Overcast", "temp":"30.2 F" } } ] }
I am using this script to run the process, but it does not produce the desired output:
import csv, json li = [] with open('CurrentObs.csv', newline='') as csvfile: reader = csv.reader(csvfile, delimiter=',') for latitude, longitude, weather, temp in reader: li.append({ "latitude": latitude, "longitude": longitude, "weather": weather, "temp": temp, "geo": { "__type": "GeoPoint", "latitude": latitude, "longitude": longitude, } }) with open("GeoObs.json", "w") as f: json.dump(li, f)
Any help is greatly appreciated!