首页 > 解决方案 > geopandas 从给定点找到所有可能的相邻/最近的几何点

问题描述

所以,我有一个这样的数据框,

import numpy as np
import pandas as pd
import descartes
from shapely.geometry import Point, Polygon
import geopandas as gpd
import matplotlib.pyplot as plt


df = pd.DataFrame({'Address':['280 Broadway','1 Liberty Island','141 John Street'],
                   'Latitude':[ 40.71,40.69,40.71],
                   'Longitude':[-74.01,-74.05,-74.00]
                    }) 


%matplotlib inline

geometry = [Point(xy) for xy in zip( df["Longitude"],df["Latitude"])]
crs = {'init':'epsg:4326'}
df = gpd.GeoDataFrame(df,
                     crs=crs,
                    geometry=geometry)
df.head()

我将 lat 和 lon 转换为几何点,并尝试使用几何点为每个地址找到所有可能的最近点。例如,与百老汇 280 号相邻的所有可能最近点,这些点在一个街区内彼此相邻。如果这些点彼此相邻且包含多边形形状,则可能存在多个点。

这是我的方法,但并没有真正得到我想要的,

df.insert(4, 'nearest_geometry', None)
from shapely.geometry import Point, MultiPoint
from shapely.ops import nearest_points

for index, row in df.iterrows():
    point = row.geometry
    multipoint = df.drop(index, axis=0).geometry.unary_union
    queried_geom, nearest_geom = nearest_points(point, multipoint)
    df.loc[index, 'nearest_geometry'] = nearest_geom 

任何帮助表示赞赏,谢谢。

标签: pythonpandaspointgeopandasshapely

解决方案


推荐阅读