给定 U.S 中的地理坐标,如何确定它是在城市还是农村地区?
Given a geographical coordinate in U.S., how to find out if it is in Urban or Rural areas?
给定一个地理坐标在U.S,如何判断它是在城市还是农村?
我在 U.S. 中有大约 10000 个地理坐标,我想使用 Python + basemap 来找出某个点是城市还是农村。
我不确定要使用哪个库或形状文件。
我需要这样的函数:
def is_urban(coordinate):
# use the shapefile
urban = False
return urban
import shapefile
from shapely.geometry import Point # Point class
from shapely.geometry import shape # shape() is a function to convert geo objects through the interface
pt = (-97.759615,30.258773) # an x,y tuple
shp = shapefile.Reader('/home/af/Downloads/cb_2016_us_ua10_500k/cb_2016_us_ua10_500k.shp') #open the shapefile
all_shapes = shp.shapes() # get all the polygons
all_records = shp.records()
def is_urban(pt):
result = False
for i in range(len(all_shapes)):
boundary = all_shapes[i] # get a boundary polygon
#name = all_records[i][3] + ', ' + all_records[i][4] # get the second field of the corresponding record
if Point(pt).within(shape(boundary)): # make a point and see if it's in the polygon
result = True
return result
result = is_urban(pt)
我最终使用了从下载的 shapely 和 shapefile
https://www.census.gov/geo/maps-data/data/cbf/cbf_ua.html,它有 U.S 的城市地区,所以如果一个点不在任何这些地区内,它就是农村。
我测试了它,它符合我的预期。
给定一个地理坐标在U.S,如何判断它是在城市还是农村?
我在 U.S. 中有大约 10000 个地理坐标,我想使用 Python + basemap 来找出某个点是城市还是农村。
我不确定要使用哪个库或形状文件。
我需要这样的函数:
def is_urban(coordinate):
# use the shapefile
urban = False
return urban
import shapefile
from shapely.geometry import Point # Point class
from shapely.geometry import shape # shape() is a function to convert geo objects through the interface
pt = (-97.759615,30.258773) # an x,y tuple
shp = shapefile.Reader('/home/af/Downloads/cb_2016_us_ua10_500k/cb_2016_us_ua10_500k.shp') #open the shapefile
all_shapes = shp.shapes() # get all the polygons
all_records = shp.records()
def is_urban(pt):
result = False
for i in range(len(all_shapes)):
boundary = all_shapes[i] # get a boundary polygon
#name = all_records[i][3] + ', ' + all_records[i][4] # get the second field of the corresponding record
if Point(pt).within(shape(boundary)): # make a point and see if it's in the polygon
result = True
return result
result = is_urban(pt)
我最终使用了从下载的 shapely 和 shapefile https://www.census.gov/geo/maps-data/data/cbf/cbf_ua.html,它有 U.S 的城市地区,所以如果一个点不在任何这些地区内,它就是农村。
我测试了它,它符合我的预期。