Matt Keller
Matt Keller

Reputation: 347

Find out if lat/lon coordinates fall inside a US State

Using Python, is there a function, library, or other way to check to see if a certain lat/lon coordinate pair fall within a defined geographical boundary such as a US state?

Example:

Does 32.781065, -96.797117 fall within Texas?

Upvotes: 6

Views: 7942

Answers (4)

arranjdavis
arranjdavis

Reputation: 735

Just to build on mathisonian's answer.

import reverse_geocoder

#create a list of US states (and the District of Columbia)
state_names = ["Alaska", "Alabama", "Arkansas", "Arizona", "California", "Colorado", "Connecticut", "District of Columbia","Delaware", "Florida","Georgia", "Hawaii", "Iowa", "Idaho", "Illinois", "Indiana", "Kansas", "Kentucky", "Louisiana", "Massachusetts", "Maryland", "Maine", "Michigan", "Minnesota", "Missouri", "Mississippi", "Montana", "North Carolina", "North Dakota", "Nebraska", "New Hampshire", "New Jersey", "New Mexico", "Nevada", "New York", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina","South Dakota", "Tennessee", "Texas", "Utah", "Virginia", "Vermont", "Washington", "Wisconsin", "West Virginia", "Wyoming"]

#get the metadata for the latitude and longitude coordinates
results = reverse_geocoder.search((32.781065, -96.797117))

#check if the location is a US state (the 'admin1' variable is where US states are listed)
if results[0]['admin1'] in state_names:
  print(results[0]['admin1'])

That should print "Texas".

Upvotes: 0

You can use the geocoder library which you can install using pip install geocoder.

import geocoder

results = geocoder.google('32.781065, -96.797117', reverse = True)

print(results.current_result.state_long)

enter image description here

Upvotes: 2

mathisonian
mathisonian

Reputation: 1420

You could use the reverse geocode library, and then check that the "admin1" area is a specific US state.

It converts lat/lon coordinates into dictionaries like:

{
  'name': 'Mountain View', 
  'cc': 'US', 
  'lat': '37.38605',
  'lon': '-122.08385', 
  'admin1': 'California', 
  'admin2': 'Santa Clara County'
}

Upvotes: 5

Karl Knechtel
Karl Knechtel

Reputation: 61508

I would use the requests library to send a request to the Google geocoding API.

Upvotes: 1

Related Questions