Подтвердить что ты не робот

Мне нужно знать, что предопределенная точка находится в море или на земле

У меня есть система, в которой пользователи помещают некоторые координаты (широта/долгота), мне нужно проверить, находятся ли заданные координаты в море или нет. Есть ли какая-нибудь услуга, которая могла бы дать мне ответ. Или это можно сделать с помощью карт Google.

4b9b3361

Ответ 1

Вы можете использовать Google GeoCode API.

Если ваш адрес находится на суше, result_type ответа будет что-то вроде "Administrative_area". если вы находитесь в море, ответ будет "natural_feature" .

Вот два примера:

Изменить: еще несколько примеров в ответ на комментарии:

Ответ 2

Я подумал об этом раньше.

Я бы не использовал веб-службу. но я бы использовал довольно простой образ. alt text

Это изображение взято из http://www.vectorworldmap.com/vectormaps/vector-world-map-v2.2-blank.jpg

ИЗОБРАЖЕНИЕ из замечательного комментария

Мне нравится решение, но я не уверен, что карта полностью точна или (что было бы проще всего работать). Как насчет вот этот? naturalearth.springercarto.com/ne3_data/8192/masks/water_8k.png

//END

  • Я бы наметил карту/длину по этой карте для ноу-хау, чтобы вы знали, что ваша карта верна.
  • Для любой точки выделения я бы нашел местоположение пикселя на этой карте и вычислил цвет (php может это сделать).
  • Если цвет белый, я бы сказал, что это море, черный = земля.
  • Если вы не хотите озер, откройте карту и покрасьте все черные озера.

Если вам нужны карты с высоким разрешением, я бы получил очень большую карту и разделил ее на сетку меньших изображений, которую вы можете загрузить.

Если вам нужно быстро сделать эту систему супер-пупером. Я бы мог этот пиксель изображения для пикселя и создать базу данных этого материала, чтобы вы могли быстро найти его. Но уже этот снимок фактически действует как отличная база данных, которую можно легко проверить или изменить.

Вам нужны океаны и озера?

Любопытно узнать, где вы собираетесь с этим, так как мне нравится эта проблема.

Джон.

Ответ 3

Развернувшись на Джона Баллингера, я успешно использовал этот трюк:

  • Получите статическую карту с изображением google image 1x1 пикселя с центрированными координатами.
  • Карта стиля в черный (земля) и белый (вода) с помощью стиля API Карт Google.
  • Найдите, является ли пиксель черным или белым.

В 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";
}