나는 많은 궤적 데이터를 가지고 있습니다. 500000. 나는 이 좌표의 주소를 얻으려고 노력합니다. Linux에서 bash 명령을 사용하고 있습니다.
#!/bin/bash
filename="$1"
while read -r line
do
uid=$(echo $line | cut -f1 -d,)
lat=$(echo $line | cut -f2 -d,)
long=$(echo $line | cut -f3 -d,)
timestamp=$(echo $line | cut -f4 -d,)
printf "$uid,$lat,$long,$timestamp|"
wget -O- -q "http://maps.google.com/maps/api/geocode/xml?latlng=$lat,$long&sensor=false"|\
grep formatted_address|\
head -n1|\
cut -d\> -f2|\
cut -d\< -f1
done < "$filename"
2500개의 주소만 얻을 수 있습니다. 2500 좌표 이후에는 "wget" 명령이 작동하지 않습니다. 모뎀을 재설정하면 2500개가 넘는 주소를 얻게 됩니다. 좌표에서 주소를 알아낼 수 있는 방법이 있나요? 아니면 2500 주소를 얻은 후 bash 명령으로 IP를 재설정할 수 있습니까? 감사해요.
내 입력 파일에는
11395,39.9050283,32.6977617,2008-11-03T16:58:05Z
내 좌표 와 같은 500,000개의 데이터가 포함되어 있습니다.39.9050283,32.6977617
내 출력 파일은 다음과 같습니다11395,39.9050283,32.6977617,2008-11-03T16:58:05Z|11395,39.9051033,32.6984550,2008-11-03T16:58:06Z|Erler, Eskişehir Yolu No:120, 06790 Etimesgut/Ankara, Turkey
답변1
현재 일어나고 있는 일은 Google이 귀하의 API 요청을 제한하고 있다는 것입니다. 무료 서비스로 얻을 수 있는 데이터의 양은 제한되어 있습니다. 분명히 2500번의 요청 후에 그들은 당신의 연락을 끊었습니다. "모뎀을 재설정"하면 분명히 ISP로부터 다른 IP 주소를 받게 되므로 차단되기 전에 추가로 2500번의 요청을 할 수 있습니다.
전략을 다시 생각해 볼 필요가 있습니다. 500,000개 요청의 경우 서비스 비용을 지불하거나 다른 소스(예: OpenStreetMap)에서 데이터를 가져와야 할 수 있습니다. OpenStreetMap에서 데이터를 얻는 경우, 비록 무료이긴 하지만 짧은 시간에 너무 많은 요청을 하면 그들은 여전히 감사하지 않을 것이라는 점을 고려하십시오. 이 정도의 데이터가 필요한 경우 일부 데이터베이스를 다운로드하여 로컬로 쿼리해야 할 수도 있습니다.