..然后谷歌地图“将水域与水域分开”
好吧,不是在圣经的意义上,而是..
我想知道我有哪些选项可以验证 [Lat, Lon] 的某个点是陆地还是水域。
谷歌地图显然有这些数据(水体是蓝色的)——但是 API 中有什么东西可以用来做这些吗?如果没有——他们不提供服务是因为他们从未想过吗?还是因为太复杂了?
我没有找到关于此事的任何信息 - 除了这里的一些类似问题(比如查找地形类型或海拔 - 但这并不是我所需要的)。
有单独的层吗?一个选项?命令?还是我应该手动去做?
我能想到如何解决这个问题(我是否需要手动执行此操作)的唯一方法是检查每个提供的图块的确切点 - 然后检查该 Google 地图色调的 RGB 值。这只是理论上的——因为在实践中——我不知道如何实现,第一个障碍是我不知道如何将图块上的像素位置转换为 [LatLon] 点
现成的解决方案会容易得多。
请注意,我不需要世界上所有的水(例如 - 我不关心溪流、小池塘、大多数河流或你邻居的游泳池。我需要一个人可以在没有浮动车辆帮助的情况下冒险的地方)
编辑我
阅读评论后:高程方法不可靠,海平面以下的地方太多(您可以在此处查看“最深” 10 的列表 http://geology.com/below-sea-level/ )还有海平面以上的内陆水体(湖泊)太多。反向地理定位方法不可靠,因为它会多次返回地缘政治实体,如城市或州 - 或零。在问这个问题之前,我已经研究过那些伪解决方案——但他们都没有真正回答这个问题——这些方法充其量只是糟糕的“猜测”。
原文由 Obmerk Kronen 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是两种不同的方式,您可以尝试:
types
来确定它是否是水。在水域案例中,类型为natural_feature
。在此链接 http://code.google.com/apis/maps/documentation/geocoding/#Types 上查看更多信息。您还需要检查要素的名称,如果它们包含
Sea, Lake, Ocean
以及与水域相关的其他一些词,以提高准确性。例如沙漠也是natural_feature
s。优点- 所有检测过程都将在客户端的机器上完成。无需创建自己的服务器端服务。
缺点- 非常不准确,您在水域获得“无”的机会非常高。
这些是您的服务必须执行的步骤:
latitude
,longitude
和current zoom
。http://maps.googleapis.com/maps/api/staticmap?center={
纬度,
经度}&zoom={
当前缩放`}&size=1x1&maptype请求谷歌Stafalse地图服务。您无法在客户端检测像素的颜色。是的,您可以在客户端机器上加载静态图像并在
canvas
元素上绘制图像。但是您不能使用getImageData
画布的上下文来获取像素的颜色。这是受跨域策略限制的。Prons - 高精度检测
缺点- 使用自己的服务器资源进行检测