reducem

Уменьшите плотность точек в векторных данных

Синтаксис

[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(...) in сложения возвращает меру ошибки, введенную упрощением. Область выхода 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')

Совет

Векторные данные сокращаются с использованием алгоритма упрощения линии Дугласа-Пеукера. Этот метод рекурсивно подразделяет многоугольник до тех пор, пока запуск точек не может быть заменено сегментом прямой линии, при этом нет смысла в том, что запуск отклоняется от прямой линии больше, чем допуск. Расстояния, используемые для принятия решения о том, какие запуски точек необходимо исключить, вычисляются в проекции Плейта Карре.

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

См. также

|

Представлено до R2006a