def get_state_from_coordinates(coordnates):
#coordinates = np.array([(34, -118), (40.7, -74)])
sf = shapefile.Reader('./data/us_states_st99/st99_d00')
#sf = shapefile.Reader("./data/states/cb_2015_us_state_20m")
shapes = sf.shapes()
#shapes[i].points
fields = sf.fields
records = sf.records()
state_polygons = defaultdict(list)
for i, record in enumerate(records):
state = record[5]
points = shapes[i].points
poly = shape(shapes[i])
state_polygons[state].append(poly)
coor_state = {}
for i in range(coordnates.shape[0]):
lat, lon = coordnates[i]
for state, polies in state_polygons.iteritems():
for poly in polies:
point = Point(lon, lat)
if poly.contains(point):
coor_state[(lat, lon)] = state.lower()
return coor_state
评论列表
文章目录