问题标签 [s2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
240 浏览

python - TypeError: ljust() 参数 2 必须是 char,而不是 unicode

在此位置使用 python2.7 中的 s2sphere 库时出现以下错误。

ljust() argument 2 must be char, not unicode

该方法链接到 GH 上的文件

该文件似乎是 ASCII 编码的,所以我正在为为什么我看到这个而摸不着头脑

0 投票
1 回答
2099 浏览

python-3.x - Cloud Run - 请求延迟

我正在尝试使用 Cloud Run 运行连接到 Firestore 的微服务。微服务基于s2geometry创建对象以创建具有特定属性的多个地理区域,从而帮助本地化用户根据我所在的区域向他们发送信息。

我使用 Python 3.7 和FastAPI来创建微服务以及与之通信的路由。

微服务在我的本地机器和 Compute Engines 上运行顺利,因为当我测试它们时,我的大多数路由都需要不到 150 毫秒的时间来回答。但是,当我使用 Cloud Run 部署它时,我遇到了延迟问题。有时,微服务需要很长时间才能回答(最多 15 分钟),我无法确定究竟是什么原因造成的。

这是一个屏幕截图,我们可以在其中看到请求计数和请求延迟:

请求计数和请求延迟

请求延迟和请求数量之间没有真正的关联,或者至少没有微不足道的关联。我还查看了服务的内存使用情况,内存使用情况最多为 30%。然而,CPU 使用率有时会达到 100%,但在请求缓慢时不一定如此。

最后,当我探索跟踪列表并比较具有高延迟的请求时,我注意到以下差异

慢请求
跟踪 快速请求跟踪

快速请求似乎会调用自己,而慢速请求则不会,我不知道为什么。

目前我们的用户并不多,所以我认为这可能是一个冷启动问题,但缓慢的请求不一定是第一个问题。

现在,老实说,我不知道这里发生了什么以及 Cloud Run 做了什么(或者我做错了什么),而且我还发现很难找到关于 Cloud Run 实际工作原理的详尽解释,所以如果你有一个(除了谷歌之外)我很乐意深入研究它。

非常感谢您的帮助

0 投票
0 回答
84 浏览

geometry - 使用 S2 几何库在数据库上执行位置邻近搜索

我正在开展一个项目,该项目需要在具有位置数据的数据库上快速执行邻近查询。

在我的数据库中,我想存储带有附加信息的位置。想法是用户在某个位置打开地图,我的程序只获取用户可见的标记。如果我计划拥有数百万个值,当我放大伦敦时从纽约市获取标记会使地图活动的工作非常缓慢,并且我从数据库发回的数据将是巨大的。

这就是为什么当用户打开地图时,我想获取例如距离地图中心 10 公里的所有标记。(我可以在可见区域之外获取标记。我只是不想获取 100 公里外的标记)

经过彻底的研究,我选择了带有希尔伯特空间填充曲线的 S2 几何库方法。

将二维值映射到一个整数值的想法是一个很大的卖点,其中两个索引之间的共享前缀越长,它们在空间上就越接近。

我需要我的数据库能够快速执行此 SELECT 查询,并且我希望将来有大量数据,因此仅对一列进行操作是一大优势。

此外,最让我感兴趣的是执行快速邻近搜索的能力,因为地图上彼此接近的两个数字将具有彼此接近的一维索引。

希尔伯特曲线

这个想法看起来很简单(如果我没有错过任何东西)。

我遇到的问题是如何(如果可能的话)选择一维平面上的最小值和最大值,以确保我正在扫描整个可见区域。

我在互联网上找到的大多数答案和教程都提出了一个解决方案,在该解决方案中,您获取一个充满较小 S2 索引“框”的边界区域,然后扫描数据库中的每个索引以查看它是否包含在其中一个“框”中大批。这很容易做到,但是当您拥有 5000 万条记录时,不可能查看每一条记录以查看它是否在“盒子”中。

我想到的是一个解决方案,您可以取该区域的最小值和您正在搜索的区域的最大值,然后执行以下操作SELECT (...) WHERE s2cellid BETWEEN min AND max

例如,我在位置47194c并且想要获取 10 公里距离内的所有标记,所以我在索引左侧取一个x值,在索引右侧取一个x值并执行BETWEEN 47194c-x AND 47194c+x query

使用 S2 库可以实现类似的功能吗?如果不是,那么我应该采取什么方法来尽可能快地进行查询?

提前致谢 :)

[我打算使用 PostgreSQL]

0 投票
1 回答
6355 浏览

r - 连接空间数据时如何解决球面几何故障

我有一个 shapefile(有几个多边形)和一个带坐标的数据框。我想将数据框中的每个坐标分配给 shapefile 中的多边形。因此,要在具有多边形名称或 id 的数据框中添加一列 这是数据的链接

但是当我尝试加入他们时,我总是得到错误

我尝试了over()函数和其他技巧,st_make_valid()但我总是得到这个错误: Error in s2_geography_from_wkb(x, oriented = oriented, check = check) : Evaluation error: Found 30 features with invalid spherical geometry.

这是一个最近的问题(在我的代码工作之前),但现在我无法使用 sf 包来执行此任务,我总是以这个错误告终。我更新了库以查看它是否有帮助,但我无法使其工作。

我非常感谢你在这件事上的帮助

0 投票
1 回答
102 浏览

google-bigquery - 在 BigQuery 中,如何找到对应于每个(纬度、经度)的第 16 级的 S2_ID?

我正在使用 Chicago-taxi-trips 数据集,我想根据行程的接送时间找到给定日期在 16 级的每个接送地点 S2_ID 的平均票价

S2_ID

Chicago-taxi-trips 数据集

0 投票
1 回答
472 浏览

r - 如何修复从 GEOS 转换为 s2 导致的球面几何错误

我遇到了与加入空间数据时如何解决球面几何故障相同的问题

我以前可以使用的代码现在不适用于从 GEOS 到 s2 的转换。

我不确定如何创建此错误的可重现示例。sf 包附带的示例数据集可以很好地使用此代码,因为我确信它们已经更新为可以与 s2 pacakge 一起使用。最好的

我尝试了如何在加入空间数据时解决球面几何故障中的解决方案

你有两个选择:

1. 通过脚本中的 sf::sf_use_s2(FALSE) 关闭 s2 处理;理论上,行为应该恢复到发布 1.0 之前的行为

这行得通,但似乎不是一个好的长期解决方案。我的其他代码会一直出现这个问题吗?如何防止这种情况发生并在其全部功能中使用更新的 sf 包?

2.修复你的多边形对象的球面几何;这将取决于您的错误的实际性质。”

如您所见,此解决方案对我不起作用。如何解决此球面几何错误?

0 投票
2 回答
96 浏览

geometry - 如何在 Yelp 或 Uber 服务中使用 S2?

假设我有一个餐馆列表,并且我有一个正在寻找附近餐馆的客户的位置。我怎么能使用 S2?

根据我在没有 S2 的情况下的理解,我将维护自己的包含所有餐厅的四叉树,然后我将获取客户的纬度和经度并查询我的四叉树以找到节点和相邻四叉树节点。

S2 如何融入这张照片?它会取代我维护自己的四叉树的需要吗?

我对 S2 的理解是,引擎盖下有四叉树和 Hilber 空间填充曲线,给定纬度和经度可以提供 64 位单元 ID,用于标识纬度和经度所属的四叉树中的节点。

0 投票
1 回答
45 浏览

geometry - Google S2 对 Hilbert Curve 的使用如何解决(如果不是,则最小化)像 Geohash 中具有不同前缀值的更接近的单元格的问题?

在 GeoHash 的情况下,靠近的两个点可以具有完全不同的哈希值,从而无法进行前缀比较之类的事情。这是因为在祖先线的某个地方,有一个分裂(在地理分组中)。

S2 如何尝试解决该问题以进行查询?我在 S2 上阅读了一堆帖子,但无法理解。