我正在尝试在地图上显示地震数据(图像)。我有数据和图像,但要将数据放在地图上,我需要在纬度和经度上绘制椭圆。
import math
import requests
zoom = 1
ww = 900
hh = 900
clat = 0
clon = 0
data = requests.get(
"http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.csv")
# Web Mercator Math
def MercX(lon):
lon = math.radians(lon)
return (128 / 3.14) * math.pow(2, zoom) * (lon + 3.14)
def MercY(lat):
lat = math.radians(lat)
return (128 / 3.14) * math.pow(2, zoom) * (3.14 - math.log(math.tan(3.14 / 4 + lat / 2)))
def webMercX(lon, zoom):
lon = math.radians(lon)
w = 128
a = (w / 3.14) * math.pow(2, zoom)
b = (lon + 3.14)
return a * b
def webMercY(lat, zoom):
lat = math.radians(lat)
w = 128
a = (w / 3.14) * math.pow(2, zoom)
c = math.tan(3.14 / 4 + lat / 2)
b = 3.14 - math.log(c)
return a * b
# curl
# "https://api.mapbox.com/styles/v1/mapbox/dark-v9/static/0,0,2/600x600?access_token=pk.eyJ1Ijoic2hpZmZtYW4xMjMiLCJhIjoiY2l6Z3RkbWt6MDE2MjMybm4ycno2dzV2dyJ9.MjZYuPDlJ11_l1rW_OzgHg
cx = webMercX(clon, zoom)
cy = webMercY(clat, zoom)
lat = " "
lon = " "
x = webMercX(lon, zoom) - cx
y = webMercY(lat, zoom) - cy
i = 1
while i < len(data):
stuff = data[i].split(',')
print stuff[1], stuff[2]
lat = float(stuff[1])
lon = float(stuff[2])
x = webMercX(lon, zoom) - cx
y = webMercY(lat, zoom) - cy
i += 1
#function to draw ellipse
图像将在本地服务器上输出,并且是静态的。 注意:我不希望每次运行脚本时都生成该图像。我希望它在硬盘上保存一次。