【问题标题】: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,但找不到任何满足我需求的东西。

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

谢谢!

【问题讨论】:

    标签: sql-server sql-server-2008 sql-server-2008-r2 spatial geography


    【解决方案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
    • 感谢您的好提示。它解决了我的第一个问题,但又把我带到了另一个问题。
    猜你喜欢
    • 2012-07-06
    • 2020-04-05
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多