我试图找到沿着特定邻域边界的每个点的纬度和经度。例如,我尝试使用geopy-当我输入特定的邻域时,它将返回一对坐标。我希望收到列出指定邻域的坐标列表。
要指定,我正在努力获得纽约市曼哈顿的社区。
谢谢。
from geopy.geocoders import Nominatim
geolocator = Nominatim()
location = geolocator.geocode('Gramercy NYC')
print(location)
输出: 位置(Gramercy,Manhattan,Manhattan Community Board 6,New York County,NYC,New York,美国,((40.7355189,-73.9840794,0.0))
我要得到一组坐标,我想有多个坐标。
答案 0 :(得分:0)
我不知道geopy
可以提供。
您真正需要的是您感兴趣的地理位置的shapefile。美国人口普查局为各种类型的地理位置提供了其中的几种:Cartographic Boundary Shapefiles。由于您的问题与NYC特别相关,因此我们可以使用NYU提供的shapefile。
使用NYU GeoJSON文件:
import geopandas
df = geopandas.read_file('nyu-2451-34561-geojson.json')
df[df.ntaname == 'Gramercy'].geometry
#54 (POLYGON ((-73.97849845639804 40.7367909565254...
#Name: geometry, dtype: object
这些几何形状为Shapely MultiPolygons,因此您可以访问一些有用的属性,例如,您可以将所有内容估计为矩形而不是使用Multipolygon:
df[df.ntaname == 'Gramercy'].geometry.bounds
# minx miny maxx maxy
#54 -73.989967 40.73135 -73.978052 40.743325
# Or get the full boundary:
df[df.ntaname == 'Gramercy'].geometry.boundary
#54 (LINESTRING (-73.97849845639804 40.73679095652...
#dtype: object
如果在jupyter笔记本中工作,您会感觉到形状:
df[df.ntaname == 'Gramercy'].geometry.item()
答案 1 :(得分:0)
Nominatim
类geopy支持返回完整的几何数据而不是单个点:
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="specify_your_app_name_here")
location = geolocator.geocode('Gramercy NYC', geometry='wkt')
geometry = location.raw['geotext']
geometry
将包含以下内容:
'POLYGON((-73.9901251 40.7377992,-73.9869574 40.736466,-73.9887732 40.7339641,-73.9825505 40.7313605,-73.9785138 40.7368725,-73.9847526 40.7395063,-73.9856806 40.7382199,-73.9873061 40.7389028,-73.9877245 40.7383154,-73.9897603 40.7391731,-73.9901251 40.7377992))'
支持的几何格式为wkt
,svg
,kml
和geojson
。有关更多详细信息,请参见the Nominatim.geocode docs。
您可能还需要考虑首先在https://nominatim.openstreetmap.org/页面上尝试查询,该页面提供了一个方便的Web界面,可以显示这些几何形状。