gpt4 book ai didi

django - GeoDjango:加速 GEOS 的几何运算

转载 作者:行者123 更新时间:2023-12-03 16:58:48 26 4
gpt4 key购买 nike

我正在使用 GeoDjango + PostGIS 开发空间排名应用程序。基本上它的作用是检索查询边界框中的所有几何图形,使用我创建的自定义函数计算相似度得分,然后返回得分最高的形状。

目前,每个查询的往返时间非常慢。运行 profiler 显示瓶颈来自 threadsafe.pyGEOSGeometry 调用我的相似函数中的操作(即相交、联合、包含等)。这是示例 profiler result从单个查询。它看起来像 GEOSGeometry 的线程安全特性是造成性能问题的原因。单独来说,耗时 40 毫秒的操作似乎没什么大不了的,但由于要与查询进行比较的形状数量通常很大,即约 1000 个形状,因此 40 毫秒的操作加起来需要 40 秒。

因此,我的问题是如何优化功能以最小化周转时间。我最初的一些想法是:

  • 关闭/避免 GEOSGeometry 的安全检查,因为这些对象是 transient 的,不与任何其他线程共享。如果可能的话,这将是理想的情况,因为现在花费的大部分时间都在 threadsafe.py 上。
  • 使用另一个不安全的几何 API。
  • 在 PostGIS 级别而不是对象级别执行空间操作。不过,这会使代码看起来很难看。 ( 更新: 此选项不起作用。仅 SQL 查询的开销会使操作更加缓慢。)

  • 你有什么想法?

    最佳答案

    我们改用 shapely用于我们的地理业务。它让我们解决了线程安全问题。
    仅供引用,匀称地使用 long,lat 而不是 lat,long 就像 GeoDjango 一样

    关于django - GeoDjango:加速 GEOS 的几何运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585794/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com