我有一个包含大约1200万个坐标的文件。对于每个坐标,我必须检查它所属的多边形。 GeoJSON文件中有大约15000个多边形。
在内存优化的r4.8xlarge EC2实例上处理1000行需要约7分钟,该实例具有大约244 Gb的内存。我该如何优化呢?
# load GeoJSON
with open('geodata.json') as f:
js = json.load(f)
df = pd.read_csv('coordinates.csv', usecols=['long', 'lat'])
data = {}
for row in df.itertuples():
if row[1].item() == 0.0:
continue
point = Point(row[1].item(), row[2].item())
for feature in js['features']:
polygon = shape(feature['geometry'])
if polygon.contains(point):
x = feature['properties']
fid = x['FID']
if not fid in data:
data[fid] = 1
else:
data[fid] += 1
break
# print data
print data
json.dump(data, file('data.txt', 'w'))