簡體   English   中英

geopandas 指向最近邊的多邊形距離

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM