【发布时间】:2010-07-11 11:54:57
【问题描述】:
我正在学习使用 MapServer 创建 WMS 服务,之后我想开发一个可以访问它的 PyQt 桌面应用程序。我不知道最好的方法是什么,因为我见过很多网络解决方案,但这不是我想要的。我也不知道是否有图书馆可以帮助我。能给我一些建议吗?
提前致谢!
【问题讨论】:
我正在学习使用 MapServer 创建 WMS 服务,之后我想开发一个可以访问它的 PyQt 桌面应用程序。我不知道最好的方法是什么,因为我见过很多网络解决方案,但这不是我想要的。我也不知道是否有图书馆可以帮助我。能给我一些建议吗?
提前致谢!
【问题讨论】:
我假设您在 MapServer 上设置 WMS 服务没有问题。测试这是否与 GIS 桌面客户端或简单的 OpenLayers 网页一起使用。
为了开发 WMS 客户端,我将构建在 GDAL 库之上。这也包含在 MapServer 中。
GDAL 具有读取图像的能力 从远程 WMS 服务器,并处理 它们与任何其他数据源一样: 这意味着它可以采取 图像,并将它们转换为任何其他 格式,从JPEG2000到GeoTIFF。
http://crschmidt.net/blog/archives/285/producing-a-large-image-from-openaerialmap/
作为额外的奖励,GDAL 包括 Python 绑定,这将有助于编写脚本。
http://pypi.python.org/pypi/GDAL/
您还需要 libcurl 来访问 URL。 libcurl 也有 Python 绑定 - http://curl.haxx.se/libcurl/python/
libcurl 也包含在 MapServer 中,它本身既可以是 WMS 服务器,也可以是客户端。您还可以查看 C++ 源代码,了解 MapServer 客户端的工作原理 - https://trac.osgeo.org/mapserver/browser/branches/branch-5-6/mapserver/mapwmslayer.c
WMS 服务返回一个图像(除了一些额外的元服务),因此自定义开发将基于基于用户操作构建正确的 WMS 请求。
如果您想获得更快的性能,请查看 TileCache,它将在服务器上缓存 WMS 结果以便更快地使用(并在本地缓存)。
【讨论】: