2

I'm trying to visualize earthquake data on a map (image). I have the data and the image, but to put that data on the map I need to draw ellipses on a latitude and longitude.

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

The image would be outputted on a local server, and would be static. Note: I don't want to produce that image every time the script is ran. I want it to saved once on the hard disk.

Oxide
  • 45
  • 1
  • 10

0 Answers0