我需要知道预定点在海里或陆地上

时间:2010-09-05 09:50:58

标签: php javascript web-services google-maps coordinates

我有一个用户放置一些坐标(纬度/经度)的系统,我需要检查指定的坐标是否在海中。有什么服务可以给我答案。或者可以使用谷歌地图来做到这一点。

3 个答案:

答案 0 :(得分:19)

您可以使用Google Maps Geocode API

如果您的地址在陆地,则响应的result_type将类似于“administrative_area”。如果你在海里,反应将是“natural_feature”。

以下是两个例子:

编辑:回复评论的更多示例:

答案 1 :(得分:15)

我曾经想过这个。

我不会使用网络服务。但我会用一个非常简单的图像。 alt text

此图片取自 http://www.vectorworldmap.com/vectormaps/vector-world-map-v2.2-blank.jpg

通过精彩评论编辑

  

我喜欢这个解决方案,但我不确定地图是完全准确的还是   equirectangular(这将是最容易使用的)。怎么样   这个?   naturalearth.springercarto.com/ne3_data/8192/masks/water_8k.png

<强> // END

  • 我会将lat / long映射到此地图上以获取知识点,以便了解您的地图是否正确。
  • 对于任何给定点,我会在此地图上找到像素位置并找出颜色(php可以这样做)。
  • 如果颜色是白色,我会说是海,黑=土地。
  • 如果您不想要湖泊,请打开地图并将所有湖泊染上黑色。

如果您需要超高分辨率地图,我会得到一张非常大的地图,并将其划分为可以加载的较小图像网格。

如果你需要让这个系统超级快速。 我想这个像素像素可以创建这个东西的数据库,这样你就可以很快地查找它。但是下面这张图片实际上是一个很容易检查或更改的优秀数据库。

你想要海洋和湖泊吗?

很想知道你要去哪里,因为我喜欢这个问题。

约翰。

答案 2 :(得分:5)

扩展John Ballinger,我成功地使用了这个技巧:

  • 获取以坐标为中心的1x1像素Google图片静态地图
  • 通过Google Maps API样式设置地图为黑色(陆地)和白色(水)
  • 查找像素是黑色还是白色

在php中:

$lat = your latitude
$lon = your longitude
$im = imagecreatefrompng('http://maps.googleapis.com/maps/api/staticmap?center='.$lat.','.$lon.'&zoom=21&format=png&sensor=false&size=1x1&maptype=roadmap&style=feature:administrative|visibility:off&style=feature:landscape|color:0x000000&style=feature:water|color:0xffffff&style=feature:road|visibility:off&style=feature:transit|visibility:off&style=feature:poi|visibility:off');
//get pixel color, put it in an array
$color_index = imagecolorat($im, 0, 0);
$color_tran = imagecolorsforindex($im, $color_index);

//if, for example, red value of the pixel is 0 we are on land
if($color_tran['red']==0){
    //do your thing
    echo "we are on land";
}