[英]geopandas point in polygon distance to nearest edge
所以我有一個大約 10,000 行這樣的 geopandas 數據框。 每個點都在多邊形內(我已經確定了)。
point name field_id geometry
POINT(-0.1618445 51.5103873) polygon1 1 POLYGON ((-0.1642799 51.5113756, -0.1639581 51.5089851, -0.1593661 51.5096729, -0.1606536 51.5115358, -0.1642799 51.5113756))
我想添加一個名為distance_to_nearest_edge
的新列。 這是從point
到多邊形最近邊界的距離。
有一個勻稱的函數可以計算我想要的:
from shapely import wkt
poly = wkt.loads('POLYGON ((-0.1642799 51.5113756, -0.1639581 51.5089851, -0.1593661 51.5096729, -0.1606536 51.5115358, -0.1642799 51.5113756))')
pt = wkt.loads('POINT(-0.1618445 51.5103873)')
dist = poly.boundary.distance(pt)
---
dist = 0.0010736436340879488
但我正在努力將其應用於 10k 行。
我嘗試創建一個函數,但我不斷收到錯誤消息("'Polygon' object has no attribute 'encode'", 'occurred at index 0')
例如:
def fxy(x, y):
poly = wkt.loads(x)
pt = wkt.loads(y)
return poly.exterior.distance(pt)
感謝任何幫助!
我認為您的數據缺少值。
你可以試試這個:
df['distance'] = df.apply(lambda row : row['point'].distance(row['geometry'].boundary) if pd.notnull(row['point']) & pd.notnull(row['geometry']) else np.nan, axis=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.