问题标签 [wms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5028 浏览

paste - WMS/WFS 服务器:我自己写的疯了吗?

我是一个“自己动手”的人,但我想确保我不会因为试图咬掉的东西超过我能咀嚼的东西而自取其辱。

我正在编写一个基于浏览器的地图应用程序,该应用程序需要选择在最终用户的机器上独立运行(无互联网连接)。也就是说,应用程序是某种服务器,在许多情况下,它会安装在最终用户的机器上,并且浏览器将指向某个 localhost URL 来访问它。

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

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

我一直认为客户端将与两个服务器进行通信:这个粘贴/webob 业务逻辑服务器,以及一个仅用于服务 WMS 和 WFS 地图元素的服务器。所以我在看 MapServer 和 GeoServer 来处理地图部分......我不高兴。

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

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

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

我已经查看了 WMS 的规范和示例消息(在 WFS 中略少)。自己实现这个协议似乎并不难,特别是因为在这种情况下我可以完全控制客户端——我不需要能够充当通用 WMS 或 WFS 服务器;我只需要让我自己的 OpenLayers 客户满意。

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

  • 从我提前创建的预渲染图块存储中提供图块(我将使用 OpenStreetMap 数据和 mapnik 作为重渲染引擎预渲染图块;我将使用正常的 Google 地图样式图块命名方案来存储和访问它们OpenLayers 所期望的)

  • 能够为这些图块的修改版本提供服务器,其中我在本地存储的某些数据绘制在图块的顶部。例如,我可能在一个“层”上有 10000 个点,在另一层上有 10000 个多边形,当用户激活这些层时,我将提供相同的基础图块,但是当我提供这些图块时,我将渲染这些附加功能在它们之上,并且可能我会实现一个简单的缓存方案来将这些过度渲染的图块保留一段时间。

所以我的问题是:尽管我知道有现有的工具可以做这些事情(MapServer、GeoServer、TileCache 等),但我实际上觉得仅仅响应一些简单的 WMS 消息对我来说工作量较小,并且在 python 中自己在我的瓷砖上进行额外的过度绘制,确保一切都正确投影,等等。我不需要为这些覆盖层绘制花哨的宽阔街道或任何东西,只需简单的线条、图标,也许还有标签。拥有一个仅限 python 的解决方案听起来确实不错且简单。

我想如果我需要扩展以支持更多的 WMS/WFS 协议,或者进行更高级的过度绘制,我可以在那个时候插入 MapServer/GeoServer。

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

0 投票
1 回答
685 浏览

google-maps - 如何使用 OpenLayers 将 WMS 图层(点或多边形图层)与 Google 地图基础图层匹配?

使用 OpenLayers,我正在尝试使用 Google 地图图层作为地图的基础图层,该地图将显示自定义数据的叠加层。我的自定义图层似乎有一个与谷歌图层相关的偏移量,并且两者都有不同的投影值(你可能知道谷歌的投影是 EPSG:900913,但我的是 EPSG:32721)

关于如何实现这种匹配的任何想法?

提前致谢!

0 投票
2 回答
4744 浏览

google-maps-api-3 - WMS 作为 Google Maps v3 中的单个平铺图像

我正在按照http://www.gisdoctor.com/v3/mapserver.html上的代码使用 API v3 将 WMS 作为图像覆盖在 Google 地图上。上面链接的js代码如下

一切正常,但是,当然,WMS 返回为 256 x 256 瓦片。毫不奇怪,因为这是我要求的。但是,在http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/c22837333f9a1812/d410a2a453025b38上的讨论之后,似乎我最好请求一个未处理的(单个)图像从地图服务器。这会减少我的服务器的负担。无论如何,我想尝试使用单个图像,但我无法正确构建一个请求。

具体来说,我将图块的大小更改为较大;例如,我尝试了 1024 x 1024 的瓷砖。我确实得到了更少的图块,但返回的图像与谷歌地图的基础层边界不匹配。

我想要的是根本不指定瓷砖大小。相反,我应该动态计算出图块大小比当前地图大小大 256 像素。这样,无论地图大小如何,都将返回单个图像。此外,将借助沿地图边缘的额外 256px 实现无缝平移。

建议?

0 投票
1 回答
1437 浏览

wpf - 支持 WMS 的 WPF 地图控件

是否有人知道具有 WMS 支持的 WPF 地图控件被认为是稳定的?我一直在环顾四周,并发现最近为 WPF 构建地图控件的任何努力都失败了。

我找到了Virtual Earth WPF Control。它工作正常,但它依赖于 Bing 地图(据我所知),我正在处理的项目将有一个自托管的 WMS 服务器。SharpMap很有趣,但缺乏 WPF 支持。WPF SharpMap Controls将 WPF 支持添加到 SharpMap,但由于 SharpMap 即将发生的变化,其作者认为它非常不稳定。如果可能的话,我今天需要一些更稳定的东西。

有人知道带有 WMS 支持的稳定 WPF 地图控件吗?

0 投票
1 回答
357 浏览

geoserver - 带有 Mapstraction 的地理服务器

有人知道如何使用自定义托管的 Geoserver 的 Tile 图层或 WMS 图层作为基础图层放置在 Mapstraction 上吗?

MapStraction 有用于 google、yahoo、microsoft、openlayers 等的基础层插件,但不幸的是它缺少用于在 geoserver 上自定义开放层的插件。有谁知道如何巧妙地实现这样一个插件?

0 投票
1 回答
958 浏览

android - 在 android 平板电脑的地图上绘制叠加层时正确处理主线程连接上的网络

在玩了很多蜂窝之后,事实证明,如果你做任何关于 NetworkOnMainThread 问题的 HTTP 事情。我通过将我对 http 的调用放在一个单独的 AsynTask 中来处理这个问题,这似乎运作良好......

现在我正在尝试加载一个正在获取的 WMS 图层(通过 https)并将其放在地图上。这工作正常,但我使用 AsyncTask 的方式并没有削减它,因为每次在叠加层上调用绘图(我认为每次移动地图时)它正在做另一个

这意味着一段时间后有最大线程数。

我不确定对此的正确解决方法是什么。或者在按照我知道的失败方式进行操作之后,如何以正确的方式进行设计。我错过了什么?是否可以在不同的线程上获取 https 请求(我认为每次移动地图时都必须这样做)。

原来的电话:

WMSOverlay extends Overlay课堂上:

但是我wsmClient.loadMap有 http 调用,所以它与上面的 NetworkOnMainThread 一起死掉了。我的解决方法是:

如果我以这种方式使用.execute()i 最终会出现此错误:

0 投票
1 回答
940 浏览

openlayers - Openlayers:this.addOptions 不是函数

我目前正在尝试让 OpenLayers 显示 WMS-Layer。这样做我遇到了一个我无法解决的问题。这甚至可能是 OpenLayers 中的一个错误,但在他们的跟踪系统填写适当的错误报告之前,我想确保错误不是我的。

这是产生错误的最小示例:

这给出了错误

使用 Firefox 5.0 和 Ubuntu Natty。

我也可以提供相应的映射文件,但对我来说,这个错误看起来像是 JavaScript 问题,因此只要没有人请求,我就可以省去你的详细信息。

感谢您的支持和想法。

0 投票
0 回答
2996 浏览

windows - 开始基于 Mapnik 构建 WMS 服务器

我想设置我自己的基于 Mapnik 的 WMS 服务器来请求 OSM 图层,但我发现关于该问题的文档并不那么清楚......例如,我到达了几个网页,说明了一些关于要遵循的步骤Mapnik 和 WMS:

http://wiki.openstreetmap.org/wiki/Mod_mapnik_wms

http://code.google.com/p/mapnik-utils/wiki/WmsInstallGuide

考虑到我在 Windows 上运行...我应该遵循哪条路径?或者有人可以解释我如何以更清晰的步骤实现我的目标?那么通过 Mapnik 请求 OpenStreetMap 图层呢?

提前致谢!

0 投票
1 回答
216 浏览

authentication - VB6 中的 WMS 身份验证

我正在尝试修改以前构建的使用 WMS 请求并使用 xmlHTTP 请求返回层信息的函数。

但是,我们现在有一个具有用户名和密码的 WMS 服务器。

关于如何使用这些凭据的任何想法。是请求字符串中的内容,还是必须授权 xmlHTTP 请求。

谢谢?!?!

0 投票
1 回答
1122 浏览

map - Openlayers WMS 图层无法使用底图正确缩放

我在 OSM 底图上使用来自 Geoserver 的 WMS 图层。当我处于特定缩放级别 (1:70) 时,WMS 图层位于底图上方的正确位置,但在放大查看各个点时,图层开始滑落并在 2 个缩放级别后消失。通过滑落我的意思是它没有正确放大底图。

我尝试禁用底图并仅使用此图层,它单独工作正常,但是当附加底图时,它就会滑落。

如果有人可以向我指出一些可以解决此问题的资源或提供解决方案,那将是一个很大的帮助。