我有2張桌子(面積&位置),我想檢查lat &在一個表格中的長座標是在另一個表格的區域中出現的。如何在SQL Server 2012 Spatial表中將列從「幾何」轉換爲「地理」?
表名:AREA 列: OBJECTID(INT),
AREA_NAME(VARCHAR(50)), GEOM(幾何)
表名:LOCATION 列: ID(INT) , 緯度(VARCHAR(50)), 經度(VARCHAR(50))從區域表
樣本數據:
SELECT OBJECTID
,AREA
,GEOM
,GEOM.STAsText()
FROM AREA
SELECT
ID
,LATITUDE
,LONGITUDE
FROM LOCATION
我要檢查是否位置(即,緯度和經度座標)是在該地區與否。區域表有一列GEOMETRY列。 所以我想將這個幾何列轉換爲地理列。一旦我轉換爲地理位置,我可以使用STIntersects()檢查位置是否在區域內。
但是,當我嘗試轉換,我得到一個錯誤,因爲緯度值必須介於-90和90度之間。
SELECT GEOGRAPHY::STGeomFromText(CAST(GEOM AS VARCHAR(MAX)), 4326) FROM AREA
完整的錯誤信息: 系統:
消息6522,級別16,狀態1,用戶定義的例程或聚合 「地理」 執行過程中出現線70 .NET框架的錯誤 .FormatException:24201:緯度值必須介於-90和 之間90度。 System.FormatException:在 Microsoft.SqlServer.Types.GeographyValidator.ValidatePoint(雙的x, 雙Y,可空
1 z, Nullable
1米)在 Microsoft.SqlServer.Types.Validator.BeginFigure(雙X,雙Y, 可空1 z, Nullable
1米)在 Microsoft.SqlServer.Types.ForwardingGeoDataSink.BeginFigure(雙的x, 雙Y,可空1 z, Nullable
1米)在 Microsoft.SqlServer.Types.CoordinateReversingGeoDataSink.BeginFigure(雙 的x,雙Y,可空1 z, Nullable
1米)at Microsoft.SqlServer.Types.WellKnownTextReader.ParseLineStringText()
at Microsoft.SqlServ er.Types.WellKnownTextReader.ParsePolygonText()
處 微軟 Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText(OpenGisType 型)在 Microsoft.SqlServer.Types.WellKnownTextReader.Read(OpenGisType型, 的Int32 SRID)。 SqlServer.Types.SqlGeography.ParseText(OpenGisType類型, SqlChars taggedText,Int32 srid)at Microsoft.SqlServer.Types.SqlGeography.GeographyFromText(OpenGisType type,SqlChars taggedText,Int32 srid)。
我是新來的這個sql服務器的空間數據。有人能指導我完成這項任務嗎?謝謝! :)上20170414
更新:Here是從AREA &位置表的採樣數據我已轉換的LAT &長座標到幾何後。
我已經轉換的緯度和長指向幾何體,然後嘗試檢查該區域是否包含經緯度點。但我沒有結果。 [這裏](https://ibb.co/hjBMi5)是來自Area和Location的示例數據。當我查看POINT&POLYGON數據時,多邊形區域不包含這些點。如何將經緯度點轉換爲幾何圖形有什麼問題嗎? – Rajanand
你是否嘗試解決方案#2?在轉換爲georgaphy之前,與多邊形相交的區域列。 –
我不知道如何去做#2。 – Rajanand