Как судить, находится ли данная координата в определенном городе? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть некоторые исходные данные, которые содержат координаты широты и долготы, и когда я использую метод get_nearest_edges от osmnx, я хочу отфильтровать те координаты, которые не находятся в данном городе (в данном примере это Сан-Франциско). Есть ли удобный способ реализовать эту функцию?

Вот часть моего кода:

roadId = ox.utils.get_nearest_edges(G, df['longitude'], df['latitude'], method='balltree')
df['startId'] = roadId[:,0]
df['endId'] = roadId[:,1]
startId = roadId[:,0]
endId = roadId[:,1]
gdf_nodes, gdf_edges = ox.graph_to_gdfs(G)
startInfo = gdf_nodes.loc[startId]
endInfo = gdf_nodes.loc[endId]
df['startLat'] = startInfo.loc[:, ['y']].values
df['startLon'] = startInfo.loc[:, ['x']].values
df['endLat'] = endInfo.loc[:, ['y']].values
df['endLon'] = endInfo.loc[:, ['x']].values

G первой строки от этого:

G = ox.graph_from_place('San Francisco, California, USA', network_type='drive')

И выходной файл выглядит так:

latitude 37.61549

longitude -122.38821  

startId 65365765

endId 65365766

startLat 37.708957

startLon -122.392803 

endLat 37.708785 

endLon -122.393012

Этот пример я хочу выразить, потому что путь в результате находится не в Сан-Франциско, как я могу идентифицировать его в коде и удалить его?

1 Ответ

0 голосов
/ 23 мая 2019

Вы задали два вопроса. Во-первых, как определить, находится ли пара координат широты в границах города? Во-вторых, как получить ограничительную рамку города? Вот как это сделать с OSMnx (и аккуратно, на котором OSMnx построена):

import osmnx as ox
from shapely.geometry import Point
gdf = ox.gdf_from_place('Piedmont, CA, USA')
geom = gdf.loc[0, 'geometry']

# get the bounding box of the city
geom.bounds

# determine if a point is within the city boundary
coords = (-122.24, 37.82)
geom.intersects(Point(coords))
...