Это чрезвычайно интересный вопрос, как с теоретической, так и с практической точки зрения.Наиболее подходящее решение будет во многом зависеть от ваших точных требований.Нужно ли учитывать каждый водоем или только основные моря и океаны?Насколько критичны точность и правильность;Будет ли идентификация моря как суши или наоборот катастрофической неудачей?
Я думаю, что методы машинного обучения были бы отличным решением этой проблемы, при условии, что вы не возражаете (вероятно, мала) вероятность того, что точкаводы неправильно классифицируется как земля.Если это не проблема, тогда этот подход должен иметь ряд преимуществ по сравнению с другими методами.
Использование растрового изображения - хорошее решение, простое и элегантное.Он может быть получен с заданной точностью, и классификация гарантированно будет правильной (или, по крайней мере, такой же правильной, как вы сделали растровое изображение).Но его практичность зависит от того, насколько точным должно быть решение.Вы упоминаете, что хотите, чтобы точность координат составляла 5 десятичных знаков (что было бы эквивалентно отображению всей поверхности планеты с точностью до ближайшего метра).При использовании 1 бита на элемент растровое изображение будет весить ~ 73,6 терабайта!
Хотя нам не нужно хранить все эти данные;Нам нужно только знать, где находятся береговые линии.Просто зная, где находится точка по отношению к побережью, мы можем определить, находится ли она на суше или на море.В качестве приблизительной оценки, Всемирный справочник ЦРУ сообщает, что на Земле имеется 22498 км береговой линии.Если бы мы сохраняли координаты для каждого метра береговой линии, используя 32-битное слово для каждой широты и долготы, для хранения потребовалось бы менее 1,35 ГБ.Это все еще много, если это для тривиального приложения, но на несколько порядков меньше, чем при использовании растрового изображения.Однако, если такая высокая степень точности не является необходимой, эти цифры могут значительно снизиться.Сокращение отображения только до ближайшего километра сделает растровое изображение всего ~ 75 ГБ, а координаты береговой линии мира могут поместиться на дискете.
Я предлагаю использовать алгоритм кластеризации, чтобы определить, является ли точкана земле или нет.Сначала нам потребуется достаточно большое количество координат, которые, как мы уже знаем, находятся либо на суше, либо на море.Существующие базы данных ГИС подойдут для этого.Затем мы можем проанализировать точки, чтобы определить скопления суши и моря.Граница принятия решения между кластерами должна проходить по береговой линии, и все точки, не определяющие границы решения, могут быть удалены.Этот процесс можно повторять, чтобы получить постепенно более точную границу.
Необходимо сохранять только точки, определяющие границу решения / береговую линию, и, используя простую метрику расстояния, мы можем быстро и легко решить, является ли наборкоординат на суше или на море.Для обучения системы потребуется большое количество ресурсов, но после завершения работы классификатора потребуется очень мало места или времени.