在谷歌地图中验证一个点是陆地还是水域

新手上路,请多包涵

..然后谷歌地图“将水域与水域分开”

好吧,不是在圣经的意义上,而是..

我想知道我有哪些选项可以验证 [Lat, Lon] 的某个点是陆地还是水域。

谷歌地图显然有这些数据(水体是蓝色的)——但是 API 中有什么东西可以用来做这些吗?如果没有——他们不提供服务是因为他们从未想过吗?还是因为太复杂了?

我没有找到关于此事的任何信息 - 除了这里的一些类似问题(比如查找地形类型或海拔 - 但这并不是我所需要的)。

有单独的层吗?一个选项?命令?还是我应该手动去做?

我能想到如何解决这个问题(我是否需要手动执行此操作)的唯一方法是检查每个提供的图块的确切点 - 然后检查该 Google 地图色调的 RGB 值。这只是理论上的——因为在实践中——我不知道如何实现,第一个障碍是我不知道如何将图块上的像素位置转换为 [LatLon] 点

现成的解决方案会容易得多。

请注意,我不需要世界上所有的水(例如 - 我不关心溪流、小池塘、大多数河流或你邻居的游泳池。我需要一个人可以在没有浮动车辆帮助的情况下冒险的地方)

编辑我

阅读评论后:高程方法不可靠,海平面以下的地方太多(您可以在此处查看“最深” 10 的列表 http://geology.com/below-sea-level/ )还有海平面以上的内陆水体(湖泊)太多。反向地理定位方法不可靠,因为它会多次返回地缘政治实体,如城市或州 - 或零。在问这个问题之前,我已经研究过那些伪解决方案——但他们都没有真正回答这个问题——这些方法充其量只是糟糕的“猜测”。

原文由 Obmerk Kronen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 375
1 个回答

这是两种不同的方式,您可以尝试:

您还需要检查要素的名称,如果它们包含 Sea, Lake, Ocean 以及与水域相关的其他一些词,以提高准确性。例如沙漠也是 natural_feature s。

优点- 所有检测过程都将在客户端的机器上完成。无需创建自己的服务器端服务。

缺点- 非常不准确,您在水域获得“无”的机会非常高。

  • 您可以使用 Google Static Maps 按像素检测水域/陆地。但为此您需要创建 http 服务。

这些是您的服务必须执行的步骤:

  1. 从客户端接收 latitudelongitudecurrent zoom
  2. 发送 http://maps.googleapis.com/maps/api/staticmap?center={ 纬度 , 经度 }&zoom={ 当前缩放`}&size=1x1&maptype请求谷歌Stafalse地图服务。
  3. 检测 1x1 静态图像的像素颜色。
  4. 响应检测信息。

您无法在客户端检测像素的颜色。是的,您可以在客户端机器上加载静态图像并在 canvas 元素上绘制图像。但是您不能使用 getImageData 画布的上下文来获取像素的颜色。这是受跨域策略限制的。

Prons - 高精度检测

缺点- 使用自己的服务器资源进行检测

原文由 Engineer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题