python - 删除不在土地内但有偏移的点
问题描述
我有一个使用 GPS 并将其报告给后端的 Android 应用程序。出于某种原因(我猜是模拟位置或 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')
然而,海岸线上可能存在误报(形状文件不准确?)。我想保留这些样品。(蓝色 - 土地多边形,标记 - 标记为删除的点)
一般来说,我的想法是通过删除最明显的集合来清理集合,例如在海洋中间保持海岸线周围的“边界缓冲区”。
不幸的是,我不知道如何创建这样的边框/缓冲区。具有函数的简单扩展多边形scale
从其最中心点开始按比例放大多边形。我想要实现的是将其均匀地扩展为所需的大小。
然后我尝试使用“海洋”形状并缩小它
gdfOceansSS.geometry.scale(xfact=0.9, yfact=0.9, zfact=1.0, origin=(0,0,0))
但没有成功。
任何提示表示赞赏!
解决方案
天哪,我刚刚发现简单的 gp.buffer 可以完成这项工作:
gdfWorldSS.geometry = world.geometry.buffer(1)
推荐阅读
- powershell - 在 While 循环中使用 PsObject 自动填充表格行
- php - 在 Codeignitor 中获取 sql 查询结果并显示在网页上
- wordpress - 如何在wordpress中翻译动态内容
- ruby-on-rails - Rails dockerized:使用 Gitlab 和 Digitalocean 持续交付
- java - 使用弹簧靴的空肥皂邮递员响应
- kotlin - Kotlin:如果阻止则为空签入
- r - 如何查找和替换“.” 价格数据为 NA
- reactjs - React 将状态更新到所有映射的项目
- python - 如何修复来自数据库的 Python 请求/BeautifulSoup 响应
- kotlin - Kotlin,将一个类映射到另一个类