如何从地理中获取点的索引?
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 中的 IP 地址列表获取地理位置