Нахождение широты и долготы для каждой точки, которые составляют область окрестности? - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь найти широту и долготу каждой точки вдоль границы определенного района.Например, я попытался использовать geopy - и когда я ввожу определенную окрестность, она возвращает одну пару координат.Я хотел бы получить список координат, которые очерчивают указанную окрестность.

Чтобы уточнить, я работаю над получением районов в Манхэттене, Нью-Йорк.

Спасибо.

from geopy.geocoders import Nominatim
geolocator = Nominatim()

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

Вывод: Местоположение (Грэмси, Манхэттен, Общественное управление Манхэттена 6, округ Нью-Йорк, Нью-Йорк, США, (40.7355189, -73.9840794, 0.0))

Яполучая один набор координат, я хотел бы иметь несколько.

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

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

Поддерживаемые форматы для геометрии: wkt, svg, kml и geojson. См. документацию Nominatim.geocode для получения более подробной информации.

Возможно, вы также захотите сначала попробовать свои запросы на странице https://nominatim.openstreetmap.org/, которая предоставляет удобный веб-интерфейс, который может отображать эти геометрии.

0 голосов
/ 24 марта 2019

Я не знаю, что geopy может это обеспечить.

Что вам действительно нужно, так это шейп-файлы для интересующих вас географических регионов. Бюро переписей США предоставляет несколько таких файлов для различных типов географических регионов: Картографические шейп-файлы границ .Поскольку ваша проблема конкретно связана с Нью-Йорком, мы можем использовать шейп-файл, предоставленный NYU .

Используйте файл 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()

enter image description here

...