首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何优化点是否位于多边形中的重复检查

如何优化点是否位于多边形中的重复检查
EN

Stack Overflow用户
提问于 2018-11-27 09:28:08
回答 1查看 1.3K关注 0票数 0

我有一个代表一条路的MultiPolygon ,它想知道一些GPS点是否在离道路x的距离之内。下面的geo_buf road.buffer(x)**.使用重复的** geo_buf.contains(Point) 非常慢,如下面的分析所示(大部分时间用于运行第297行)。

我怎样才能优化速度?

代码语言:javascript
运行
复制
from line_profiler import LineProfiler
from shapely.geometry import Point as shapely_Point

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   151                                           def filter_gps(gps_row, geo_buf):
   152    606446   62042960.0    102.3     83.3      pot = shapely_Point(gps_row['longitude'], gps_row['latitude'])
   153    606446   12433530.0     20.5     16.7      return geo_buf.contains(pot)



Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================

  294      1232      11850.0      9.6       0.0   if len(df_gps.index) > 1:
  295                                               geo_buf = shape(json.loads(srg_row['srg_buf']))
  296                                               # filter the GPS points
  297      1232   98465688.0  79923.4     68.4      df_filter = df_gps[df_gps.apply(lambda row: filter_gps(row, geo_buf), axis=1)]
EN

回答 1

Stack Overflow用户

发布于 2018-11-27 10:12:06

这些可能会有帮助:

point) call?

https://gis.stackexchange.com/questions/102933/more-efficient-spatial-join-in-python-without-qgis-arcgis-postgis-etc/165413#165413

(没有测试)我认为最快的方法是将Polygon拆分成许多较小的Polygon,然后使用geopandas.tools.sjoin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53496450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档