为什么我的SQL Server中的几何过滤器不起作用?

问题描述 投票:0回答:1

我已将澳大利亚新南威尔士州的地方政府区域边界上载到我的MS-SQL数据库中,并尝试过滤悉尼区域。

以下是我的脚本:

CREATE TABLE [dbo].[nsw_lga_polygon_shp](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [geom] [geometry] NULL,
    [lg_ply_pid] [nvarchar](15) NULL,
    [dt_create] [date] NULL,
    [dt_retire] [date] NULL,
    [lga_pid] [nvarchar](15) NULL,
    [nsw_lga_sh] [date] NULL,
    [nsw_lga__1] [date] NULL,
    [nsw_lga__2] [nvarchar](100) NULL,
    [nsw_lga__3] [nvarchar](100) NULL,
    [nsw_lga__4] [date] NULL,
    [nsw_lga__5] [nvarchar](15) NULL,
 CONSTRAINT [PK_nsw_lga_polygon_shp] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END

GO

    select 
    Geom.STGeometryType() as ShapeType,
    geom.STBoundary().ToString() as Boundary,
    Geom,
    nsw_lga__2 
from 
    [nsw_lga_polygon_shp]
where
nsw_lga__2 like '%SYDNEY%'

结果:

ShapeType“ MultiPolygon”enter image description here

但是,我不知道为什么当我尝试使用过滤器功能时,它确实返回了我任何东西。

以下是我的脚本

select 
        Geom,
        nsw_lga__2
    from 
        [nsw_lga_polygon_shp]
    where
        Geom.Filter(geometry::Parse('POLYGON((  150 -33, 152 -33 , 152 -34 , 150 -34 , 150 -33 ))')) = 1

我希望从我的第一个查询中看到两个LGA,以及所有周围的LGA。谁能分享解决我问题的方法?

提前感谢!

sql-server gis geospatial spatial geometry-surface
1个回答
0
投票

一个常见问题可能是未设置本机SRID,需要在数据库实用程序要素类属性中指定或未设置。

运行此命令以找出:

 select distinct SP_GEOMETRY.STSrid from dbo.MYTABLE

现在,如果SRID在下拉列表中不可用,但是您只需输入SRID,例如3395进入本机SRID字段。

正确指定了本机SRID之后,SQL Server空间筛选器将按设计工作。


此外,您也可以使用这些SpatialTools重新投影数据>

参考:link

© www.soinside.com 2019 - 2024. All rights reserved.