将大型 csv 快速转换为 geojson
Fast Convert of large csv to geojson
我有一个包含 6 百万行 的 csv,我需要将其转换为 geojson 文件。
互联网上有云解决方案,但转换它需要一整天。
python 有快速的方法吗?
问题更新:
我尝试了解决方案 但我收到此错误:
ValueError Traceback (most recent call last)
<ipython-input-48-0224e45ed66e> in <module>()
5 with open('Documents/neo4j-community-3.3.5/import/train.csv', newline='') as csvfile:
6 reader = csv.reader(csvfile, delimiter=',')
----> 7 for pickup_latitude, pickup_longitude in reader:
8 pickup_latitude,pickup_longitude = map(float, (pickup_latitude, pickup_longitude))
9 features.append(
ValueError: too many values to unpack (expected 2)
这是我的代码:
import csv, json
from geojson import Feature, FeatureCollection, Point
features = []
with open('Documents/neo4j-community-3.3.5/import/train.csv', newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for pickup_latitude, pickup_longitude in reader:
pickup_latitude,pickup_longitude = map(float, (pickup_latitude, pickup_longitude))
features.append(
Feature(
geometry = Point((pickup_longitude, pickup_latitude)),
)
)
collection = FeatureCollection(features)
with open("GeoObs.json", "w") as f:
f.write('%s' % collection)
注意 :pickup_latitude 和 pickup_longitude 是我的 csv
中的两列
该错误意味着您的 csv 文件中的列多于 for
语句预期的两列。要解决此问题,您可以获取所有列,然后仅分析前两列:
for cols in reader:
pickup_latitude, pickup_longitude = map(float, cols[0:2])
我有一个包含 6 百万行 的 csv,我需要将其转换为 geojson 文件。
互联网上有云解决方案,但转换它需要一整天。
python 有快速的方法吗?
问题更新:
我尝试了解决方案
ValueError Traceback (most recent call last)
<ipython-input-48-0224e45ed66e> in <module>()
5 with open('Documents/neo4j-community-3.3.5/import/train.csv', newline='') as csvfile:
6 reader = csv.reader(csvfile, delimiter=',')
----> 7 for pickup_latitude, pickup_longitude in reader:
8 pickup_latitude,pickup_longitude = map(float, (pickup_latitude, pickup_longitude))
9 features.append(
ValueError: too many values to unpack (expected 2)
这是我的代码:
import csv, json
from geojson import Feature, FeatureCollection, Point
features = []
with open('Documents/neo4j-community-3.3.5/import/train.csv', newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for pickup_latitude, pickup_longitude in reader:
pickup_latitude,pickup_longitude = map(float, (pickup_latitude, pickup_longitude))
features.append(
Feature(
geometry = Point((pickup_longitude, pickup_latitude)),
)
)
collection = FeatureCollection(features)
with open("GeoObs.json", "w") as f:
f.write('%s' % collection)
注意 :pickup_latitude 和 pickup_longitude 是我的 csv
中的两列该错误意味着您的 csv 文件中的列多于 for
语句预期的两列。要解决此问题,您可以获取所有列,然后仅分析前两列:
for cols in reader:
pickup_latitude, pickup_longitude = map(float, cols[0:2])