如果我正确理解您的问题,块和餐馆的尺寸可能会有很大差异.出于这个原因,尝试通过重建索引强制转换为表格格式可能是一种糟糕的方法.
我会绕过街区并获得到餐馆的最小距离(就像@shongololo建议的那样).
我会稍微更通用一些(因为我已经记下了这段代码)并且在点与线之间做了一段距离,但是相同的代码应该从点到点或从多边形到多边形.我将从点开始使用GeoDataFrame,然后我将创建一个与行距离最小的新列.
%matplotlib inline
import matplotlib.pyplot as plt
import shapely.geometry as geom
import numpy as np
import pandas as pd
import geopandas as gpd
lines = gpd.GeoSeries(
[geom.LineString(((1.4,3),(0,0))),geom.LineString(((1.1,2.),(0.1,0.4))),geom.LineString(((-0.1,3.),(1,2.)))])
# 10 points
n = 10
points = gpd.GeoSeries([geom.Point(x,y) for x,y in np.random.uniform(0,3,(n,2))])
# Put the points in a dataframe,with some other random column
df_points = gpd.GeoDataFrame(np.array([points,np.random.randn(n)]).T)
df_points.columns = ['Geometry','Property1']
points.plot