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

у знать, учитывая широту и долготу, если координата суши или моря

Согласно сhttps://gis.stackexchange.com/questions/235133/checking-if-a-geocoordinate-point-is-land-or-ocean

from mpl_toolkits.basemap import Basemap
bm = Basemap()   # default: projection='cyl'
print bm.is_land(99.675, 13.104)  #True
print bm.is_land(100.539, 13.104)  #False

Проблема в том, что базовая карта устарела. как это сделать с помощью картопии?

Ответы на вопрос(1)

Решение Вопроса

который касается точечного сдерживания геометрии страны с использованием картопий, можно найти по адресуТест на содержание полигона в matplotlib artist.

У Cartopy есть инструменты для достижения этой цели, но нет встроенного метода, такого как «is_land». Вместо этого вам нужно получить соответствующие геометрические данные и запросить их, используя стандартные фигурные предикаты.

import cartopy.io.shapereader as shpreader
import shapely.geometry as sgeom
from shapely.ops import unary_union
from shapely.prepared import prep

land_shp_fname = shpreader.natural_earth(resolution='50m',
                                       category='physical', name='land')

land_geom = unary_union(list(shpreader.Reader(land_shp_fname).geometries()))
land = prep(land_geom)

def is_land(x, y):
    return land.contains(sgeom.Point(x, y))

Это дает ожидаемые результаты для двух точек выборки:

>>> print(is_land(0, 0))
False
>>> print(is_land(0, 10))
True

Если у вас есть доступ к нему, Фиона сделает это проще (и быстрее):

import fiona
import cartopy.io.shapereader as shpreader
import shapely.geometry as sgeom
from shapely.prepared import prep

geoms = fiona.open(
            shpreader.natural_earth(resolution='50m',
                                    category='physical', name='land'))

land_geom = sgeom.MultiPolygon([sgeom.shape(geom['geometry'])
                                for geom in geoms])

land = prep(land_geom)

Наконец, я создал (еще в 2011 году) функцию shapely.vectorized для ускорения такого рода операций при тестированиимного указывает одновременно. Код доступен как суть вhttps://gist.github.com/pelson/9785576и производит следующее доказательство концепции для проверки сдерживания земли для Великобритании:

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

Ваш ответ на вопрос