簡體   English   中英

刪除多邊形外部的幾何數據

[英]Remove Geometry data that is outside of a polygon

我正在創建一個SQL Server表,如果該表位於SITES_TEST層內,則該表將從OS MasterMap層獲取數據。

首先,我正在使用STIntersects將OS MM數據放入ASSETS層。

INSERT INTO ASSETS(GEOMETRY, THEMES) 
    (select b.GEOMETRY, b.THEMES from 
          SITES_TEST a,
          MM_TOPO b
          where a.geometry.STBuffer(1).STIntersects(b.geometry) = 1 AND  (b.THEMES ='Land' or b.THEMES ='Roads Tracks And Paths')) 

藍色邊界是我的站點層,位於后台OS MasterMap中。 藍色邊界是我的網站層

在SQL Server中運行上述查詢后,它會返回重疊數據以及所包含的數據。 我知道我可以使用STContains,但是這樣就忽略了邊界內外的數據。

在此處輸入圖片說明

我希望我可以使用STDifference在ASSETS表上運行UPDATE。

UPDATE ASSETS(GEOMETRY) 
        (select b.GEOMETRY from 
              SITES_TEST a,
              MM_TOPO b
              where a.geometry.STDifference(b.geometry)=1) 

但是我認為我正在以錯誤的方式進行處理,因為這將返回布爾錯誤。

數據類型的運算符無效。 運算符等於,類型等於幾何。

摘要:我正在嘗試刪除另一個幾何之外的幾何。 第一張圖片顯示一個藍色多邊形,然后運行SQL腳本,導致第二張圖片顯示紅色數據,該數據位於第一張圖片的藍色邊界多邊形之外。 我想刪除藍色多邊形外的數據。

而不是僅僅要求該幾何intersect感興趣的多邊形,它返回所有的相交的幾何形狀(如你發現了),你只想要相交的幾何形狀的零件您感興趣的多邊形。 所以像這樣:

INSERT INTO ASSETS(GEOMETRY, THEMES) 
    (select b.GEOMETRY.STIntersection(a.geometry, b.THEMES from 
          SITES_TEST a,
          MM_TOPO b
          where a.geometry.STBuffer(1).STIntersects(b.geometry) = 1 AND  (b.THEMES ='Land' or b.THEMES ='Roads Tracks And Paths')) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM