创建WMS服务和桌面客户端的建议?
我正在学习如何使用MapServer创建一个WMS服务,之后我想开发一个PyQt桌面应用程序来访问这个服务。我不知道最好的方法是什么,因为我看到很多网页解决方案,但这不是我想要的。我也不知道有没有库可以帮助我。你能给我一些建议吗?
提前谢谢你!
1 个回答
我假设你在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来访问网址。libcurl同样也有Python绑定 - http://curl.haxx.se/libcurl/python/
libcurl也包含在MapServer里,MapServer本身可以同时作为WMS服务器和客户端。你还可以查看C++源代码,了解MapServer客户端是如何工作的 - https://trac.osgeo.org/mapserver/browser/branches/branch-5-6/mapserver/mapwmslayer.c
WMS服务返回的是一张图像(除了少量额外的元服务),所以自定义开发将围绕根据用户操作构建正确的WMS请求进行。
如果你想要更快的性能,可以看看TileCache,它会在服务器上缓存WMS的结果,以便更快使用(同时也可以在本地缓存)。