gpt4 book ai didi

paste - WMS/WFS服务器: am I crazy to write my own?

转载 作者:行者123 更新时间:2023-12-02 04:44:46 25 4
gpt4 key购买 nike

我是一个“自己动手”的家伙,但我想确保自己不会试图通过咬下去超过自己的能力来做自己。

我正在编写一个基于浏览器的 map 应用程序,该应用程序需要具有在最终用户的计算机上独立运行(无Internet连接)的选项。也就是说,该应用程序是某种服务器,在许多情况下,它将安装在最终用户的计算机上,并且浏览器将指向某个本地主机URL进行访问。

我将在客户端使用MapLayers,服务器端将具有针对该应用程序的一堆自定义逻辑,例如以某些自定义方式处理 map 上的点击事件,在特定时间在 map 上创建各种自定义对象,等等。

对于服务器的“业务逻辑”部分,我很高兴将粘贴/webob与python一起使用。这是一个简单的基础结构,可让我轻松地将所有这些自定义逻辑放入其中。

我一直在想客户端将与两台服务器通信:此粘贴/webob业务逻辑服务器,以及仅用于服务WMS和WFS映射元素的服务器。因此,我一直在寻找MapServer和GeoServer来处理 map 零件,并且……我不高兴。

我不满意,因为我不想在客户端计算机上安装和担心“野兽”。对于MapServer,我真的不想安装像Apache这样的功能完善的Web服务器,而不必处理CGI,PHP和MapScript。对于GeoServer,(可能)安装Java,并处理GeoServer设置和管理的各种复杂性。

部分原因仅仅是学习曲线问题。如果可以避免,我对学习MapServer或GeoServer的复杂性并不特别感兴趣。我安装了GeoServer,将其指向我的一些数据,并且能够使用内置于GeoServer的网络管理员中的MapLayers预览来查看我的数据。但是,当我尝试使用指向GeoServer的自己的MapLayers网页为真实数据提供服务时,使GeoServer崩溃了。我可能会使服务器崩溃,只是从客户端发送一些可能格式错误的请求,这令我感到非常惊讶。而且我可以深入探究GeoServer日志以尝试找出我做错了什么,但是……我真的不想花很多时间在那上面。

因此,我正在考虑自己使用已经拥有的粘贴/Webob服务器来实现WMS和WFS接口(interface)的一部分。实际上,可能我只需要WMS,因为我可以通过简单的自定义协议(protocol)处理矢量对象,该协议(protocol)将数据传递给客户端,客户端可以使用OpenLayers直接创建和操作对象。

我查看了WMS的规范和示例消息(在WFS中则少了一些)。仅自己实现该协议(protocol)似乎并不那么困难,尤其是因为在这种情况下,我对客户端具有完全控制权-好像我不需要能够充当通用WMS或WFS服务器;我只需要让自己的OpenLayers客户满意即可。

我需要WMS服务器具备的两个主要功能是:

  • 为我预先创建的预渲染图块存储中的图块(我将使用OpenStreetMap数据和mapnik作为重做引擎来对图块进行预渲染;然后,我将使用常规的Google Maps样式图块命名来存储和访问它们OpenLayers期望的方案)
  • 能够处理这些图块的修改版本,在这些图块的顶部绘制了我在本地存储的某些数据。例如,我可能在一个“层”上具有10000个点,在另一层上具有10000个多边形,并且当用户激活这些层时,我将提供相同的基础图块,但是当我提供这些图块时,我将进行渲染这些最重要的功能,也许我将实现一个简单的缓存方案,以将这些过度渲染的图块保留一段时间。

  • 所以我的问题是:即使我知道有现成的工具可以执行这些操作(MapServer,GeoServer,TileCache和其他工具),但实际上我觉得仅响应一些简单的WMS消息对我来说工作量就减少了,自己使用python在我的图块上进行此额外的过度绘制,确保一切都正确投影,等等。我不需要为这些重叠层绘制花哨的宽阔街道或任何东西,只需简单的线条,图标甚至标签即可。拥有仅适用于python的解决方案听起来很简单。

    我认为,如果我需要扩展以支持更多的WMS/WFS协议(protocol),或者进行更详细的 overdraw ,则可以在那时插入MapServer/GeoServer。

    我没有考虑这里的陷阱吗?

    最佳答案

    Mapserver易于设置和学习。自己实现任何类型的渲染都将需要更多的精力,并且您可能会发现很多意想不到的陷阱。

    mapserver cgi应该足以满足您的需求。如果您需要一些非常具体的调整,则mapscript可能会有用。

    我认为,如果您可以制作一个纯JavaScript应用程序,并避免自己安装Web服务器(和 map 服务器),那可能会很有趣。如果您只需要浏览图块马赛克,则可以仅使用JavaScript(为每个图块生成带有单元格的html表)来完成。您可以使用JavaScript,使用 Canvas 并进行一些基本坐标转换以将地理点转换为像素来渲染点或多边形。我认为Openlayer具有此功能。

    编辑:我刚刚检查了一下,并且使用Openlayers您可以浏览本 map 块,并且可以渲染kml和其他一些vect数据。因此,我认为您应该尝试一下Openlayers。

    关于paste - WMS/WFS服务器: am I crazy to write my own?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5334378/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com