0

我有一个有趣的问题,我已经研究了几天了,在 Windows 中,我得到一个空白的 png 响应,但是在具有几乎相同地图文件的 linux 中,我得到了预期的输出。我在 Linux 中使用 Apache 作为 WMS 服务器设置了 MapServer,它运行良好,但是我很遗憾需要切换到 Windows 和 IIS。

我有一个小型 sqlite 数据库,其中包含我试图让 MapServer 显示的一堆点。我在 linux 和 windows 中使用相同的 sqlite 数据库。

这是Linux设置:(有效)

sqlite db上的ogrinfo:

root@sweatshop:/usr/lib/cgi-bin# ogrinfo CountiesAR.sqlite ArkPointGeo -summary
INFO: Open of `CountiesAR.sqlite' using driver `SQLite' successful.

Layer name: ArkPointGeo
Geometry: Unknown (any)
Feature Count: 1004
Extent: (-94.515743, 33.069850) - (-89.870035, 36.495504)
Layer SRS WKT:
(unknown)
FID Column = _rowid_
Geometry Column = GeoPoint
PK_UID: Integer (0.0)
PK_UID:1: Integer (0.0)
DocumentID: String (0.0)
Latitude: Real (0.0)
Longitude: String (0.0)

当我使用以下命令运行 shp2img 时,我得到了预期的 png:

shp2img -m Test.map -o test.png -all_debug 5

地图文件:http ://hastebin.com/iyerudipes.vhdl

我用来访问的 URL:

http://www.zachatrocity.com/cgi-bin/mapserv?mode=map&map=Test.map&layer=Points

如果您点击该链接,您可以看到它显示出来。有了这个设置,一切都按预期工作。

Windows 设置:(不工作)

sqlite db上的ogrinfo:

C:\path\to\gdal-ogr>ogrinfo C:\pathto\data\CountiesAR.sqlite ArkPointGeo -summary
INFO: Open of `C:\pathto\data\CountiesAR.sqlite'
  using driver `SQLite' successful.

Layer name: ArkPointGeo
Geometry: Unknown (any)
Feature Count: 1004
Extent: (-94.515743, 33.069850) - (-89.870035, 36.495504)
Layer SRS WKT:
(unknown)
FID Column = _rowid_
Geometry Column = GeoPoint
PK_UID: Integer (0.0)
PK_UID:1: Integer (0.0)
DocumentID: String (0.0)
Latitude: Real (0.0)
Longitude: String (0.0)

当我在 Windows 机器上运行 shp2img 时,我的数据库中的每个点都得到以下信息:

msOGRFileNextShape: Rejecting feature (shapeid = 999, tileid=0) of incompatible type for this layer (feature wkbType 0, layer type 0)

请注意,我在 Linux 中使用等效命令没有收到任何错误。

地图文件:http ://hastebin.com/subabefuxo.vhdl

和我使用的网址:

http://localhost:1020/cgi-bin/mapserv.exe?mode=map&map=C:\path\to\Test.map&layer=Points

最后,调试文本:

[Thu Aug 28 09:19:31 2014].373000 CGI Request 1 on process 6584
[Thu Aug 28 09:19:31 2014].380000 msDrawMap(): rendering using outputformat named png (AGG/PNG).
[Thu Aug 28 09:19:31 2014].380000 msDrawMap(): WMS/WFS set-up and query, 0.000s
[Thu Aug 28 09:19:31 2014].404000 msDrawMap(): Layer 0 (Points), 0.024s
[Thu Aug 28 09:19:31 2014].404000 msDrawMap(): Drawing Label Cache, 0.000s
[Thu Aug 28 09:19:31 2014].404000 msDrawMap() total time: 0.031s
[Thu Aug 28 09:19:33 2014].103000 msSaveImage(stdout) total time: 1.699s
[Thu Aug 28 09:19:33 2014].104000 mapserv request processing time (loadmap not incl.): 1.732s
[Thu Aug 28 09:19:33 2014].105000 msFreeMap(): freeing map at 02A40048.

关于为什么这会在我的 Linux 服务器上运行而不是在我的 Windows 服务器上运行的任何想法?我不知所措。

4

1 回答 1

0

使用Spatialite文档的第 4.1 节解决了这个问题。我的数据中有一个无效的 SRID,因为它是从 shapefile 导入的。我也认为它与 GDAL/OGR 的这个错误有关,因为它仍然在 linux 中工作。无论如何,它可以用 SetSrid() 函数修复。

于 2014-09-04T17:00:22.677 回答