向 发送 100,000 个请求hazards.fema.gov
服务器肯定会导致服务器速度变慢,但这主要会影响您的脚本,因为您需要等待每个 HTTP 请求排队并响应,这可能需要很长时间才能处理。
更好的方法是发送一个 REST 查询来获取您需要的所有内容,然后再处理逻辑。查看REST API,您可以发现geometry
URL 参数能够接受geometryMultiPoint
从文档 https://developers.arcgis.com/documentation/common-data-types/geometry-objects.htm。这是多点的示例:
{
"points" : [[-97.06138,32.837],[-97.06133,32.836],[-97.06124,32.834],[-97.06127,32.832]],
"spatialReference" : {"wkid" : 4326}
}
所以你可以做的是创建一个对象来存储你想要查询的所有点:
multipoint = { points: [], spatialReference: { wkid: 4326}
当您循环时,将纬度/经度点附加到多点列表中:
for i in range(len(df.index)):
address = df["Address"][i]
geocode_result = geocode(address=addrs, as_featureset=True)
latitude = geocode_result.features[0].geometry.x
longitude = geocode_result.features[0].geometry.y
multiPoint.points.append([latitude, longitude])
然后您可以将多点设置为geometry
在您的查询中,这只会产生一个 API 请求,而不是每个点一个。