找到构成一个区域的每个点的纬度和经度?

2024-04-30 02:38:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一个特定邻域边界上每个点的经纬度。例如,我尝试使用geopy-当我输入一个特定的邻域时,它返回一对坐标。我想收到一个坐标列表,将概述一个特定的社区。你知道吗

具体来说,我正在努力获取纽约曼哈顿的社区。你知道吗

谢谢。你知道吗

from geopy.geocoders import Nominatim
geolocator = Nominatim()

location = geolocator.geocode('Gramercy NYC')
print(location)

输出: 地点(Gramercy,曼哈顿,曼哈顿社区委员会6,纽约州纽约县,纽约,美国,(40.7355189,-73.9840794,0.0))

我得到一组坐标,我想有多个。你知道吗


Tags: fromimport列表location社区邻域边界经纬度
2条回答

我不知道geopy能提供这个。你知道吗

你真正需要的是你感兴趣的地理位置的形状文件。美国人口普查局为不同的地理区域提供了其中的几种:Cartographic Boundary Shapefiles。由于您的问题与纽约市有关,我们可以使用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,因此您可以访问一些有用的属性,例如,您可以将所有内容估计为矩形,而不是使用多重多边形:

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()

enter image description here

Nominatim类支持返回完整的几何数据,而不是单个点:

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))'

几何图形支持的格式有wktsvgkmlgeojson。详见the Nominatim.geocode docs。你知道吗

您还可以考虑首先在https://nominatim.openstreetmap.org/页面上尝试查询,该页面提供了一个方便的web界面,可以显示这些几何图形。你知道吗

相关问题 更多 >