我已将澳大利亚新南威尔士州的地方政府区域边界上载到我的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%'
结果:
但是,我不知道为什么当我尝试使用过滤器功能时,它确实返回了我任何东西。
以下是我的脚本
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。谁能分享解决我问题的方法?
提前感谢!
一个常见问题可能是未设置本机SRID
,需要在数据库实用程序要素类属性中指定或未设置。
运行此命令以找出:
select distinct SP_GEOMETRY.STSrid from dbo.MYTABLE
现在,如果SRID在下拉列表中不可用,但是您只需输入SRID
,例如3395
进入本机SRID字段。
正确指定了本机SRID之后,SQL Server空间筛选器将按设计工作。
此外,您也可以使用这些SpatialTools重新投影数据>
参考:link