删除不在陆地内但有偏移的点

Delete points not within land but with an offset

我有一个 Android 应用程序使用 GPS 并将其报告给后端。由于某种原因(我猜是模拟位置或低 gps 精度),许多测量值都使用陆地以外的坐标保存。

我正在写一个 python pandas/geopandas 短代码来过滤掉那些但它似乎并不那么微不足道。

我最初的想法是将注册的 GPS 点与高分辨率 (10m) 地形结合起来。

#
# df initial dataframe with points

geometry=[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')

然而,海岸线上可能存在误报(形状文件不准确?)。我想保留那些样本。 (蓝色——陆地多边形,标记——标记为删除的点)

一般来说,我的想法是通过删除最明显的场景来清理布景,例如在海洋中保持海岸线周围 "border buffer"。

不幸的是,我不知道如何创建这样的 border/buffer。具有 scale 功能的简单扩展多边形从其最中心点开始放大多边形。我想要实现的是将它均匀地扩展到所需的大小。

然后我尝试使用 "Oceans" 形状并缩小它


gdfOceansSS.geometry.scale(xfact=0.9, yfact=0.9, zfact=1.0, origin=(0,0,0))

但没有成功。

感谢任何提示!

天哪,我刚刚发现简单的 gp.buffer 就可以完成工作:

gdfWorldSS.geometry = world.geometry.buffer(1)