Уменьшайте плотность точек в векторных данных
[latout,lonout] = reducem(latin,lonin)
[latout,lonout] = reducem(latin,lonin,tol)
[latout,lonout,cerr] = reducem(...)
[latout,lonout,cerr,tol] = reducem(...)
[latout,lonout] = reducem(latin,lonin) уменьшает число точек в векторных данных о карте. В этом случае допуск вычисляется автоматически.
[latout,lonout] = reducem(latin,lonin,tol) использует обеспеченный допуск. Модули допуска являются степенями дуги на поверхности сферы.
[latout,lonout,cerr] = reducem(...) кроме того, возвращает меру ошибки, введенной упрощением. Выход cerr различие в длине дуги исходных и уменьшаемых данных, нормированных на исходную длину.
[latout,lonout,cerr,tol] = reducem(...) также возвращает допуск, используемый в сокращении, которое полезно, когда допуск вычисляется автоматически.
Сравните исходные и уменьшаемые основы округа Колумбия от usastatehi данные о схеме состояния:
dc = shaperead('usastatehi',...
'UseGeoCoords', true,...
'Selector',{@(name) ...
strcmpi(name,'district of columbia'), 'Name'});
lat = extractfield(dc, 'Lat')';
lon = extractfield(dc, 'Lon')';
[latreduced, lonreduced] = reducem(lat, lon);
lonlim = dc.BoundingBox(:,1)' + [-0.02 0.02];
latlim = dc.BoundingBox(:,2)' + [-0.02 0.02];
subplot(1,2,1)
usamap(latlim, lonlim); axis off
geoshow(lat, lon,...
'DisplayType', 'polygon', 'FaceColor', 'blue')
subplot(1,2,2)
usamap(latlim, lonlim); axis off
geoshow(latreduced, lonreduced,...
'DisplayType', 'polygon', 'FaceColor', 'yellow')
Векторные данные уменьшаются с помощью алгоритма упрощения линии Дугласа-Пеукера. Этот метод рекурсивно подразделяет многоугольник, пока запуск точек не может быть заменен сегментом прямой линии без точки в том запуске, отклоняющемся от прямой линии больше, чем допуск. Расстояния раньше выбирали, какие запуски точек устранить вычисляются в Пластине проекция Carrée.
Уменьшаемые географические данные не могут всегда подходить для отображения. Если все промежуточные точки в наборе данных уменьшаются, то линии, кажущиеся прямыми в одной проекции, неправильно отображены как прямые линии в других.