Генерация случайных данных с помощью lat-long
Я пытаюсь генерировать случайные данные с диапазоном определенной широты и долготы. Приведенный ниже код выполняется без ошибок и также генерирует выходные данные, но не полностью то, что я ожидаю.
Программа:
import random
import sys
import math
latitude = 19.99
longitude = 73.78
output_file = 'filename'
def generate_random_data():
with open(output_file, 'w') as output:
hex1 = '%012X' % random.randint(0,100)
flt = float(random.randint(0,100))
latitude = math.acos(random.random() * 2 - 1)
longitude = random.random() * math.pi * 2
output.write('%s %.1f %.6f %.6f n' % (hex1.lower(), flt, longitude, latitude))
if __name__ == '__main__':
generate_random_data()
Приведенный выше код выполняется, но дает только одну строку (что может быть проблемой отступа), но это не дает мне случайного lat
& long
в требуемом географическом положении, как указано выше.
Выходные данные генерируются:
000000000020 95.0 3.929691 1.749931
Ожидаемый Результат:
000000000020 95.0 19.999691 73.799931
И это генерирует только one
строку, где, как я пытаюсь иметь million
строки
3 ответа:
Я думаю, что это то, что вы пытаетесь сделать. Я понимаю, что вы пишете в файл; я снял это здесь только ради этого примера.
import random import sys import math latitude = 19.99 longitude = 73.78 def generate_random_data(lat, lon, num_rows): for _ in xrange(num_rows): hex1 = '%012x' % random.randrange(16**12) # 12 char random string flt = float(random.randint(0,100)) dec_lat = random.random()/100 dec_lon = random.random()/100 print '%s %.1f %.6f %.6f \n' % (hex1.lower(), flt, lon+dec_lon, lat+dec_lat) generate_random_data(latitude, longitude, 5)
Отпечатки пальцев:
31d831302b7f 99.0 73.789561 19.997404 c6ef41c70ebb 0.0 73.780732 19.994279 4bc2df5388e3 77.0 73.785531 19.994191 e7648f673475 40.0 73.786610 19.993679 a11502c744a6 32.0 73.784650 19.997702
EDIT : таким образом, ваша функция, включающая запись в файл, будет следующей
import random import sys import math latitude = 19.99 longitude = 73.78 file_n = 'random_lat_lon.txt' def generate_random_data(lat, lon, num_rows, file_name): with open(file_name, 'w') as output: for _ in xrange(num_rows): hex1 = '%012x' % random.randrange(16**12) flt = float(random.randint(0,100)) dec_lat = random.random()/100 dec_lon = random.random()/100 output.write('%s %.1f %.6f %.6f \n' % (hex1.lower(), flt, lon+dec_lon, lat+dec_lat)) generate_random_data(latitude, longitude, 5, file_n)
Который генерирует данные, размещенные над редактированием, в файл с именем 'random_lat_lon.txt'.
Вам нужно позвонить куда-нибудь в свой fonction.
Как правило, в Python вы делаете что-то вроде:
if __name__ == '__main__': generate_random_data()
Я изменил ответ @Scott, чтобы создать CSV вместо txt-файла:
import random import sys import math latitude = 0.794501 longitude = -0.752568 file_n = 'random_lat_lon.csv' def generate_random_data(lat, lon, num_rows, file_name): with open(file_name, 'w') as output: for _ in xrange(num_rows): hex1 = '%012x' % random.randrange(16**12) flt = float(random.randint(0,100)) dec_lat = random.random()/100 dec_lon = random.random()/100 output.write('%s,%.1f,%.6f,%.6f \n' % (hex1.lower(), flt, lon+dec_lon, lat+dec_lat)) generate_random_data(latitude, longitude, 600, file_n)