处理~12百万个坐标并检查它们是否落在geojson多边形中

时间:2017-05-02 02:54:03

标签: python pandas amazon-web-services numpy amazon-ec2

我有一个包含大约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'))

0 个答案:

没有答案