【问题标题】:Show raster from postgis via mapserver通过地图服务器显示来自 postgis 的栅格
【发布时间】:2015-01-28 10:22:35
【问题描述】:

我想显示来自数据库的栅格。我阅读了文章How can I add a PostGIS raster layer to my MapServer map? 并据此创建了mapfile。我收到 500 - 内部服务器错误。

当我通过 PostGIS 在 QGIS 中显示此栅格时,来自 mapserver 的错误消息为空。我可以使用 mapserver 读取来自同一数据库的矢量数据。

你知道如何解决这个问题吗?

带有图层的地图文件的一部分:

LAYER
  NAME eroze_cp

  TYPE raster

  STATUS ON

  DATA "PG:host='localhost' port='5432' dbname='mydb' user='me' password='****' schema='myschema' table='myrast' mode='2'" 

  PROJECTION

    "init=epsg:102067"

  END 

  PROCESSING "NODATA=-9999"

  PROCESSING "SCALE=AUTO"

END

【问题讨论】:

  • 您是否将 Mapserver 与 Apache 一起使用?您应该检查服务器日志。这很容易成为最好的起点。在您的地图文件中,您可以指定地图服务器日志文件的位置。配置“MS_ERRORFILE”“/tmp/ms_error.txt”。一旦你这样做了,用类似 "tail -f -n 500 /tmp/ms_error.txt" 之类的东西来尾随文件。刷新您的页面,您应该会在日志中看到一个很好的错误。将其粘贴回此处,您可能会得到更好的答案。
  • 有错误的文件为空白。我将超时时间延长了 90 秒以解决内部服务器错误 (500)。然后我限制了几个骑乘的光栅,并显示了光栅。我是否有机会展示所有 (20 000) 个游乐设施? DATA "PG:host='localhost' port='5432' dbname='mydb' user='me' password='****' schema='myschema' table='myrast' where='rid IN (9814, 9815,9816,9817)'模式='2'"
  • 我的连接看起来更像这样... CONNECTIONTYPE POSTGIS CONNECTION "host=*** dbname=** user=** password=**" TYPE LINE LABELCACHE ON LABELITEM "owner" PROCESSING "CLOSE_CONNECTION =DEFER" DATA "来自 ne_dw_cables 的 wkt_geometry"

标签: database postgis mapserver


【解决方案1】:

您可以尝试的一件事是在命令行中使用 shp2img,以获取有关错误的更多信息。

看看: http://postgis.net/docs/RT_FAQ.html#idp35570592

您似乎在连接字符串中有多余的引号,但我不确定这是否重要。

【讨论】:

  • 感谢您的回复。报价现在消失了,但问题仍然存在。如何使用 shp2img?我可以在 Windows 上使用它,但这个 mapfile 在 Linux 上。我找不到它。
  • 你将不得不在 Linux 上调试它。在 Linux 上尝试“locate shp2img”来查找命令。如果它不存在,请尝试:“/path/to/mapserv QUERY_STRING='” 其中 是 url 中 /?/ 之后的所有文本。
【解决方案2】:

请参阅 Mapserver 文档中的 Example of WMS-T with PostGIS Tile Index for Raster ImageryMapServer TILEINDEXes with Database RASTERS 中还有另一个示例)。使用 Postgis 支持的数据库,您可以创建一个 TILEINDEX 视图。然后在mapfile 中添加两层,如下所示:

平铺索引层:

LAYER
  name raster_tindex
  TYPE polygon
  PROJECTION
    "init=epsg:xxxx"
  END
  CONNECTIONTYPE ORACLESPATIAL
  CONNECTION "user/pass@tns"
  DATA "geom FROM (
    SELECT gid, geom, location 
    FROM my_raster_tindex_table
  ) AS subquery using unique gid USING SRID=4326"
END

第二层是实际的 RASTER 层

LAYER
  name db_raster_layer
  TYPE RASTER
  PROJECTION
    "init=epsg:xxxx"
  END
  TILEINDEX "raster_tindex"   #THIS NAME MUST MATCH THE TILEINDEX LAYER NAME
  TILEITEM "location"   #not actually needed if column is named location
  STATUS OFF
  OFFSITE 0 0 0
END

您可以通过将 FILTER 添加到 db_raster_layer 来过滤 TIME,就像 the WMS-T example in the MapServer docs 一样。但是,数据属性/属性的过滤器应该存在于 Tile Index 上(即在raster_tindex 层中),如by Frank Warmerdam in ogr tileindex with postgis? 所述

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-03
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多