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

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

Solutions Collecting From Web of "Мне нужно знать, что предопределенная точка находится в море или на земле"

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

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

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

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

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

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

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

EDIT из замечательного комментария

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

//КОНЕЦ

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

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

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

Тебе нужны океаны и озера?

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

Джон.

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

  • Получите 1×1-пиксельную статическую карту изображения Google, ориентированную на ваши координаты
  • Карта стиля в черный (земля) и белый (вода) с помощью API Карт Google Maps
  • Найдите, является ли пиксель черным или белым

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