如何从地理中获取点的索引?

Posted

技术标签:

【中文标题】如何从地理中获取点的索引?【英文标题】:how to get the index of a point from geography? 【发布时间】:2011-06-21 02:00:03 【问题描述】:

如何获取 LineString 中某个点的索引? 我正在使用 SQL Server 2008 R2。

我确实有一个保存 LineString 的地理类型。 我现在想在这个 LineString 上获得 两个点index。以便我知道哪个首先发生。 这有可能吗? 因为现在我正在用一个while循环为我自己做这件事......但是当我的数据库中有更多数据时它真的很慢:/

编辑:好的,现在我正在尝试按照 SQL 的解决方案来使用 CHARINDEX。更多背景信息: 我确实有一个地理点,我确实有一个线串。我确实从线串中得到了以我的点为中心的半径的交点。好的,现在我想尝试从 LineString 上的这一点获取 第一个交点 索引。 所以我的线串中确实有一些数字,比如这些模式“1.123456 或 12.123456 或 123.123456”,我的搜索点也类似于“1.123456 或 12.123456 或 123.123456”

问题是,STIntersection 给了我一些不同的数字,它们在 变量 >小数位数。我考虑了一些字符串格式,但我不知道我应该如何解决这个问题。如果有一些不错的正则表达式功能,我认为它会让我的生活更轻松:) 我浏览了所有这些functions,但找不到任何满足我需求的东西。

也许一些更有经验的人可以帮助我。

谢谢!

【问题讨论】:

【参考方案1】:

如果数据类型是 varchar 使用。请看下文。

您可以使用CharIndex

DECLARE @document varchar(64)

SELECT @document = 'abcdef12345wuerzelchen'
SELECT CHARINDEX('abc', @document)

一旦你得到了第一个出现点,现在你可以检查另一个。

Declare @position int
Set @position = CHARINDEX('abc', @document)    
SELECT CHARINDEX('wuerzelchen', @document, @position)

更多信息可以查看here

【讨论】:

OP 询问的是LineString,而不是String 感谢您的好提示。它解决了我的第一个问题,但又把我带到了另一个问题。

以上是关于如何从地理中获取点的索引?的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch:地理点聚类

如何根据 Elasticsearch 中的 IP 地址列表获取地理位置

在 Cloudant 中使用 MapReduce 获取地理空间索引的结果

用于从 IP 地址获取地理编码的 Java 库

如何从地理数据中获取城市

JavaScript如何从IP地址获取地理位置? [复制]