Mercurial > hg > GlobalNeighbors
view globalneighbors/grid.py @ 0:5dba84370182
initial commit; half-working prototype
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sat, 24 Jun 2017 12:03:39 -0700 |
parents | |
children | 1b94f3bf97e5 |
line wrap: on
line source
import math class LatLonGrid(object): lat_range = (-90., 90) lon_range = (-180., 180) # however, this wraps around def __init__(self, nlat, nlon): self.n = (nlat, nlon) self.range = (self.lat_range, self.lon_range) self.d = ((self.lat_range[-1] - self.lat_range[0])/self.n[0], (self.lon_range[-1] - self.lon_range[0])/self.n[1]) self.create_grid() def create_grid(self): self.grid = [[] for _ in xrange(self.n[-1]) for _ in xrange(self.n[0])] def add(self, geoid, lat, lon): latlon = (lat, lon) self[self.index(lat, lon)].append(geoid) def __getitem__(self, index): """ index -- 2-tuple or list of i and j indices """ import pdb; pdb.set_trace() return self.grid[index[0]][index[1]] def index(self, lat, lon): return [int(math.floor((val-self.range[i][0])/self.d[i])) for i, val in enumerate((lat, lon))] def neighbors(self, i, j): """ return neighbors of points i, j """