Ich habe auf diese Seite für die Berechnung verwiesen. http://mononofu.hatenablog.com/entry/20090324/1237894846
Verwenden Sie Pythons Fälscher.
Es gibt japanisches Gebietsschema in faker, verwenden Sie es also.
Generieren Sie beispielsweise 10 Punkte in einem Kreis mit einem Radius von 100 m, der auf der Tokyo Station zentriert ist.
#!/usr/bin/env python
from faker import Factory
fake = Factory.create('ja_JP')
import math
import csv
##
#
samples = 10
limit_samples = 10000
csvfile = "data.csv"
# Tokyo Station(35.681382, 139.766084)
centerlat = 35.681382
centerlong = 139.766084
radius_m = 100
#########
earthradius = 6378137
lat1radm = ((2*math.pi*earthradius)/360)
latradius = radius_m/lat1radm
long1radm = ((earthradius*math.cos(centerlat/180*math.pi)*2*math.pi)/360)
longradius = radius_m/long1radm
with open(csvfile, "w+") as f:
csv_writer = csv.writer(f)
counter = 0
for _ in range(0,limit_samples):
geolat = fake.geo_coordinate(center=centerlat , radius=latradius)
geolong = fake.geo_coordinate(center=centerlong, radius=longradius)
r = math.sqrt(math.pow((float(geolat)-centerlat)*lat1radm,2)+math.pow((float(geolong)-centerlong)*long1radm,2))
if r < radius_m:
d = [geolat, geolong]
#print d
csv_writer.writerow(d)
counter = counter + 1
if counter >= samples:
break
Da es schwierig ist, es so zu verwenden, lassen Sie es korrespondieren, damit es durch ein Argument angegeben werden kann.
## args
import argparse
parser = argparse.ArgumentParser(description='Generater of coordinate points.')
parser.add_argument('--samples', type=int, nargs='?', default=10, help='number of points')
parser.add_argument('--csv', type=str, nargs='?', default="dummydata.csv", help='csv file name')
parser.add_argument('--radius', type=int, nargs='?', default=100, help='radius(m)')
# Tokyo Station(35.681382, 139.766084)
parser.add_argument('--latitude', type=float, nargs='?', default=35.681382, help='center latitude of the circle')
parser.add_argument('--longitude', type=float, nargs='?', default=139.766084, help='center longitude of the circle')
args = parser.parse_args()
##
#
samples = args.samples
limit_samples = samples * samples
csvfile = args.csv
centerlat = args.latitude
centerlong = args.longitude
radius_m = args.radius
$ python genpointsbygeo.py -h
usage: genpointsbygeo.py [-h] [--samples SAMPLES] [--csv CSV]
[--radius RADIUS] [--latitude LATITUDE]
[--longitude LONGITUDE]
Generater of coordinate points.
optional arguments:
-h, --help show this help message and exit
--samples SAMPLES number of points
--csv CSV csv file name
--radius RADIUS radius(m)
--latitude LATITUDE center latitude of the circle
--longitude LONGITUDE
center longitude of the circle
$ python genpointsbygeo.py --samples 100 --csv data1.csv --radius 1000
$ wc -l data1.csv
100 data1.csv
Dies ist sehr praktisch, da Sie mehrere Punkte zeichnen und überprüfen können! Vielen Dank! http://www.tree-maps.com/prot/
Recommended Posts