алгоритм сглаживания строк в python?

Я занимаюсь исследованиями в области обобщения, которые будут применяться для получения обобщенной карты Road Network от крупномасштабной карты до карты малого масштаба. Я использую два режима работы и два алгоритма. Это делается на языке программирования python с использованием библиотеки шейп-файлов, это для векторных данных в 2d. Операция: выбор и устранение. Для выбора я использую условие вроде, все дороги, ширина более 7 метров выбрана, это связано с атрибутивными характеристиками дорог. То же самое с устранением, как и все дороги, ширина менее 5 метров, устранена. До сих пор это не было проблемой.

После того, как будут применены операции выбора и исключения, мы получим файл формы, дороги, которые прошли условие. Я использую два алгоритма: упрощение строк и выравнивание строк. Для упрощения линии я использую алгоритм упрощения линии Дугласа-Пьюкера. он принимает векторные данные (координаты) и основывается на допуске, удаляя некоторые моменты. Я делаю это с использованием языка программирования Python. После получения упрощенных строк требуется некоторое редактирование, например, сглаживание линии. Здесь я использую алгоритм Гаусса, однако он возвращает некоторую ошибку, которую я не понимаю, поскольку я новичок в среде программирования

import numpy ### This is the Gaussian data smoothing function I wrote ### def smoothListGaussian(list1,degree): window=degree*2-1 weight=numpy.array([1.0]*window) print weight weightGauss=[] for i in range(window): i=i-degree+1 frac=i/float(window) gauss=1/(numpy.exp((4*(frac))**2)) weightGauss.append(gauss) print weightGauss weight=numpy.array(weightGauss)*weight print weight print len(list1)-window smoothed=[0.0]*(len(list1)-window) print smoothed for i in range(len(smoothed)): smoothed[i]=sum(numpy.array(list1[i:i+window])*weight)/sum(weight) return smoothed a=[[78.03881018900006, 30.315651467000066], [78.044901609000078, 30.31512798600005], [78.04927981700007, 30.312510579000048], [78.050041244000056, 30.301755415000059], [78.072646124000073, 30.281720353000082], [78.07902308000007, 30.273344651000059]] smoothListGaussian(a,3) 

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

Любые ответы оценили!

    2 Solutions collect form web for “алгоритм сглаживания строк в python?”

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

    Я не очень хорошо разбираюсь в алгоритме сглаживания Гаусса, но после краткого прохождения кода я считаю, что следующее – это то, что вы пытаетесь сделать (я не уверен, дает ли он вам желаемый результат). Замените последнюю часть кода следующим кодом:

     smoothed=[0.0,0.0]*(len(list1)-window) print smoothed for i in range(len(smoothed)): smoothing=[0.0,0.0] for e,w in zip(list1[i:i+window],weight): smoothing=smoothing+numpy.multiply(e,w) smoothed[i]=smoothing/sum(weight) 

    Вы можете сгладить путь следующим кодом:

     from scipy.ndimage import gaussian_filter1d import numpy as np a=np.array([[78.03881018900006, 30.315651467000066], [78.044901609000078, 30.31512798600005], [78.04927981700007, 30.312510579000048], [78.050041244000056, 30.301755415000059], [78.072646124000073, 30.281720353000082], [78.07902308000007, 30.273344651000059]]) x, y = aT t = np.linspace(0, 1, len(x)) t2 = np.linspace(0, 1, 100) x2 = np.interp(t2, t, x) y2 = np.interp(t2, t, y) sigma = 10 x3 = gaussian_filter1d(x2, sigma) y3 = gaussian_filter1d(y2, sigma) x4 = np.interp(t, t2, x3) y4 = np.interp(t, t2, y3) plot(x, y, "o-", lw=2) plot(x3, y3, "r", lw=2) plot(x4, y4, "o", lw=2) 

    Вот результат: синие точки – это исходные данные, красная кривая – сглаженная кривая, которая содержит много точек, если вы хотите, чтобы одна и та же точка подсчитывалась как исходные данные, вы можете пробовать красную кривую и получать зеленые точки.

    Вы можете установить sigma для изменения плавного уровня gaussian_filter1d() .

    введите описание изображения здесь

     
    Interesting Posts for Van-Lav

    не setup.py разработать использовать колесо для install_requires?

    размещение, ввод значения в текстовое поле с использованием селена и питона

    сохранить Исключения для файла в python

    Почему поток python потребляет столько памяти?

    Взаимодействие с всплывающими окнами с использованием селена в питоне

    Фильтровать и суммировать разные столбцы в массиве numpy

    Сортировка списка списков по частоте элементов в Python 2.3

    psycopg2 + pgbouncer. Асинхронный режим с ошибкой gevent

    Невозможно очистить конкретную таблицу с помощью BeautifulSoup4 (Python 3)

    Мой QFileSystemModel не работает должным образом в PyQt

    Сортировка списка с пользовательским заказом в Python

    Представление даты RFC 1123 в Python?

    Как удалить ложный тег в BeautifulSoup

    Приостановить URL-запрос Загрузки

    Как отсортировать похожие значения в отсортированном списке (на основе второго значения) кортежей на основе другого значения (третьего значения) в кортеже в порядке убывания

    Python - лучший язык программирования в мире.