【发布时间】:2017-07-18 23:41:28
【问题描述】:
我想检查特定的纬度/经度是否在美国大陆内。我不想使用在线 API,我正在使用 Python。
我下载了this shapefile
from shapely.geometry import MultiPoint, Point, Polygon
import shapefile
sf = shapefile.Reader("cb_2015_us_nation_20m")
shapes = sf.shapes()
fields = sf.fields
records = sf.records()
points = shapes[0].points
poly = Polygon(points)
lon = -112
lat = 48
point = Point(-112, 48)
poly.contains(point)
#should return True because it is in continental US but returns False
样本 lon、lat 在美国边界内,但 poly.contains 返回 False。 我不确定问题是什么以及如何解决问题,以便我可以测试一个点是否在美国大陆内。
【问题讨论】:
-
gis.stackexchange.com/questions/84114/… 你确定你的形状是
lon, lat而不是lat, lon? -
是的,它是 lon,lat。我检查了反向,也不起作用。我最终使用了状态形状文件,现在我正在使用相同的方法检查所有状态,如果其中一个返回 true,那么它就是 true,虽然它现在似乎可以工作。
标签: python shapefile esri matplotlib-basemap pyshp