Geoserver - 连接到SQL Server 2008 Express并获取数据

时间:2010-10-04 09:12:48

标签: sql-server-2008 geoserver

- Bref历史: -

我正在使用MapServer,一切正常,但是当我使用PixMap直接在图层上绘制标记时,它在tile之间切割。所以,我决定改为GeoServer,它看起来能够正确地绘制瓷砖之间有图像/像素图的瓷砖。

- 历史结束 -

好的,我可以连接到我的数据存储,即Ms Sql Server 2008(Express版)。也许,我无法在OpenLayer地图上显示任何内容。

我的数据库中的点示例:

POINT (2.66131 48.8792)
POINT (2.66131 48.8792)
POINT (2.67789 48.8982)
POINT (2.67789 48.8982)
POINT (2.70361 48.9402)
POINT (2.76454 48.9866)

在我的GeoServer 2.0.2中,我实际上使用了点的默认样式(红色方块点)。数据库中这些点的EPSG是“4326”,在GeoServer的配置中,它也是4326,边界如下:

Min X: 2
Min Y: 46
Max X: 8
Max Y: 50

我做错了什么不能显示任何分数?

编辑 这是我的表的定义

id  int (PK)
lon float
lat float
geom    geometry

以下是来自GeoServer的查询示例:

SELECT "id",CAST("geom".STSrid as VARCHAR) + ':' + "geom".STAsText() as "geom" FROM "TestGeom" WHERE "geom".Filter(geometry::STGeomFromText('POLYGON ((-236.25 -120.234375, -236.25 120.234375, 236.25 120.234375, 236.25 -120.234375, -236.25 -120.234375))', 0)) = 1

只有当我将数据库中的EPSG设置为0(它们仍未在openlayer“预览”中显示)时,它才会返回一个点列表。如果我把它留在4326,它什么都不返回。由geoserver绘制的多边形位于EPSG:0。

1 个答案:

答案 0 :(得分:1)

对于遇到同样问题的人:

我找到了它无法正常工作的原因。 “Native-SRC”没有正确设置(实际上我没有任何价值)。这实际上是我无法看到任何东西的主要原因。现在没有任何理由(或奇迹),在删除所有内容并重新创建所有内容后,我现在拥有一个原生SRC值,所有内容都按预期显示。

实际上数据库在我将其添加到GeoServer时,表格设置为EPSG:0(几何的默认值)。但是你需要通过这样的更新将EPSG切换到4326:

update MyTable set MyGeom = geometry::...FromText(MyGeom.STAsText(), 4326)

之后,将GeoServer中的所有引用删除到您的表中。您实际上需要从头开始重新创建所有内容。当您使用表重新添加数据库时,它将起作用。实际上,您将看到自己设置的“Native-SRC”,您还可以单击自动设置表格的BBOX。 (Min X,Y,Max X,Y)