删除不在陆地内但有偏移的点
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)
我有一个 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)