我有一個使用 GPS 并將其報告給后端的 Android 應用程序。出于某種原因(我猜是模擬位置或 gps 精度低),很多測量值都保存在陸地以外的坐標中。我正在編寫一個 python pandas/geopandas 短代碼來過濾掉那些,但它似乎不是那么微不足道。我最初的想法是將已注冊的 GPS 點與高分辨率(10m)地形連接起來。## df initial dataframe with pointsgeometry=[Point(xy) for xy in zip(df.longitude, df.latitude)]crs = {'init': 'epsg:4326'}geodf = gp.GeoDataFrame(df[['longitude','latitude']],geometry = geometry, crs=crs)world = gp.read_file("../GeoPandas/natural-earth-vector/10m_physical/ne_10m_land.shp")gpd_joined = gp.sjoin(geodf,world, how='inner', op='intersects', lsuffix='left', rsuffix='right')然而,海岸線上可能存在誤報(形狀文件不準確?)。我想保留這些樣品。(藍色 - 土地多邊形,標記 - 標記為刪除的點)一般來說,我的想法是通過刪除最明顯的集合來清理集合,例如在海洋中間保持海岸線周圍的“邊界緩沖區”。不幸的是,我不知道如何創建這樣的邊框/緩沖區。具有函數的簡單擴展多邊形scale從其最中心點開始按比例放大多邊形。我想要實現的是將其均勻地擴展為所需的大小。然后我嘗試使用“海洋”形狀并縮小它gdfOceansSS.geometry.scale(xfact=0.9, yfact=0.9, zfact=1.0, origin=(0,0,0))但沒有成功。任何提示表示贊賞!
1 回答

開心每一天1111
TA貢獻1836條經驗 獲得超13個贊
天哪,我剛剛發現簡單的 gp.buffer 可以完成這項工作:
gdfWorldSS.geometry = world.geometry.buffer(1)
添加回答
舉報
0/150
提交
取消