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