2012-11-29 20 views

回答

0

能否請您對檢查出的下列參考this article

  • SQLFIDDLE

    SET @ls = 'LineString(1 0,3 0)';

    SET @xs = geomfromtext(@ls);

    SET @p = geomfromtext('POINT(2 0)');

    SELECT MBRWithin(@xs,@p);

對不起,我已經給出了錯誤的鏈接。

結果

MBRWITHIN(@XS,@P) 
0 

尋找在線條1 0,3 0 - > 2 0點上它的存在。

enter image description here

+0

我嘗試了所有來自文檔的功能,而不是他們做我需要的。 – Billion

+0

嗨,我相信你確實有;)似乎'MBRWITHIN'就是你要找的。我給了錯誤的鏈接。當我測試時,「相交」似乎並不滿足。但是'MBRWITHIN'確實。我也對這個領域感興趣。所以,如果你發現這不是答案,但別的,請分享:) – bonCodigo

+0

MBRWITHIN給出了相同的結果。看到我上面的第二個答案 – Billion

0

我嘗試了所有功能,從文檔和他們非做什麼,我需要。 f1。

SELECT ASTEXT(path) FROM paths WHERE INTERSECTS(path, GEOMFROMTEXT('POINT(604 0)')) 

給 「錯誤」 的結果

LINESTRING(572 0,600 0,601 0,602 0,603 0,604 0,605 0,606 0,607 0,608 0,402 0) 
LINESTRING(402 0,609 0,610 0,611 0,612 0,613 0,614 0,615 0,616 0,617 0,618 0,619 0,620 0,621 0,622 0,623 0) 
LINESTRING(359 0,449 0,801 0,422 0,802 0,803 0,498 0) 
LINESTRING(572 0,795 0,796 0,797 0,798 0,799 0,800 0,345 0,359 0) 
LINESTRING(792 0,768 0,793 0,794 0,572 0) 
LINESTRING(342 0,904 0,905 0,906 0) 
LINESTRING(912 0,914 0,915 0,916 0,341 0) 
LINESTRING(344 0,917 0,918 0,919 0,920 0,800 0) 
LINESTRING(918 0,922 0,923 0,924 0,925 0,926 0,927 0,343 0) 
LINESTRING(940 0,947 0,948 0,949 0,604 0) 

MBRWITHIN給出了相同的結果

我寫了一個函數,但它是非常,非常緩慢:

FUNCTION `IDIL`(`id` INT, `line` LINESTRING) RETURNS INT(1) 
    NO SQL 
    DETERMINISTIC 
BEGIN 
DECLARE n INT DEFAULT 0; 
DECLARE p1X INT(20); 
DECLARE p1Y INT(20); 
DECLARE p1 POINT; 
DECLARE i INT DEFAULT 0; 
DECLARE result INT(1) DEFAULT 0; 
SET n = NUMPOINTS(line); 
WHILE i<n DO 
    SET p1 = POINTN(line, (i+1)); 
    SET p1X = X(p1); 
    SET p1Y = Y(p1); 
    IF p1X=id OR p1Y=id THEN RETURN 1; END IF; 
    SET i = i + 1; 
END WHILE; 
RETURN result; 
    END$$ 
+0

我覺得它很慢,因爲我不使用空間索引。我如何在我的功能內使用它? – Billion

+0

1000行需要17秒 – Billion

+0

我主要依賴於SQLFiddle在不同的機器上,其中什麼都不能安裝。我會嘗試你的功能。與此同時,你可以請看看這個[在mysql中使用空間索引時性能差](http://gis.stackexchange.com/questions/5357/poor-performance-when-using-spatial-indexes- in-mysql)我在想,這可能是你想要發佈你的問題的地方。我還會看看我是否可以將它移動到那裏。因爲然後真正的專家可以幫助你:) – bonCodigo

相關問題