Itersect двух point векторов с погрешностью координат
-
- Участник
- Сообщения: 82
- Зарегистрирован: 24 мар 2011, 19:15
- Репутация: 1
Itersect двух point векторов с погрешностью координат
Здравствуйте.
Есть исходный точечный слой (векторный). Нужны были значения другого(их) раста(ов) - сделал из исходного растр (GRASS). Считал по растровой маске даные с растра. Полученный растр преобразовал в вектор. Получил вектор похожий на исходный векторный, но координаты немножко "поплыли" (есть некоторое отклонений в координатах точек) + в исходном файле были дубли точек, которые при конвертации в растр исчезли. То-есть было например 2002 точки, а стало 2000.
Пробовал intersect QGIS - не работает, то есть работает, так как если выбирать пересечение полученного векторного слоя с исходным - дубликаты тоже попадут в выборку... Видел скрипты, но для ArcGis.
Видел у Вас это, но "страшновато" я в Гис недавно. Что и куда, по скрипту - непонятно.
Итого. В результате имеем два вектора 1-й длинной 2002, второй 2000 с немного отличающимися координатами точек.
Встал вопрос, как исходный и полученный векторы привести к "общему знаменателю" для их сравнения/корреляции в R?
Поскольку нужны вектра с одинаковой длинной и одинаковыми соответствующими координатами точек.
Есть исходный точечный слой (векторный). Нужны были значения другого(их) раста(ов) - сделал из исходного растр (GRASS). Считал по растровой маске даные с растра. Полученный растр преобразовал в вектор. Получил вектор похожий на исходный векторный, но координаты немножко "поплыли" (есть некоторое отклонений в координатах точек) + в исходном файле были дубли точек, которые при конвертации в растр исчезли. То-есть было например 2002 точки, а стало 2000.
Пробовал intersect QGIS - не работает, то есть работает, так как если выбирать пересечение полученного векторного слоя с исходным - дубликаты тоже попадут в выборку... Видел скрипты, но для ArcGis.
Видел у Вас это, но "страшновато" я в Гис недавно. Что и куда, по скрипту - непонятно.
Итого. В результате имеем два вектора 1-й длинной 2002, второй 2000 с немного отличающимися координатами точек.
Встал вопрос, как исходный и полученный векторы привести к "общему знаменателю" для их сравнения/корреляции в R?
Поскольку нужны вектра с одинаковой длинной и одинаковыми соответствующими координатами точек.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Itersect двух point векторов с погрешностью координат
если честно, то, кроме того что у вас два разных точечных слоя, ничего непонятно 
определите что значит "общий знаменатель"? Что именно вы хотите сделать? Почему просто не выкинуть эти две лишние точки?
У вас порядок точек одинаковый в таблице? Если да, то выкидывайте две лишние и смело грузите в R, ему все равно какие там координаты, главное чтобы N было одинаковое и пары были корректные.

определите что значит "общий знаменатель"? Что именно вы хотите сделать? Почему просто не выкинуть эти две лишние точки?
У вас порядок точек одинаковый в таблице? Если да, то выкидывайте две лишние и смело грузите в R, ему все равно какие там координаты, главное чтобы N было одинаковое и пары были корректные.
пристегивайтесь, турбулентность прямо по курсу
-
- Участник
- Сообщения: 82
- Зарегистрирован: 24 мар 2011, 19:15
- Репутация: 1
Re: Itersect двух point векторов с погрешностью координат
Спасибо.Максим Дубинин писал(а): определите что значит "общий знаменатель"?
Я имел ввиду как сделать чтобы координаты точек совпадали.
Сформировать (вернее один подкоректировать) два вектора пригодных для регрессионного анализа в R.Максим Дубинин писал(а):Что именно вы хотите сделать?
А как их найти?Максим Дубинин писал(а): Почему просто не выкинуть эти две лишние точки?

Максим Дубинин писал(а): У вас порядок точек одинаковый в таблице?
В том то и дело, что неодинаковый. Я когда сравнивал два вектора очень много перестановок (порядок) после плясок вектор-растр-вектор в GRASS.

- Ведь теория и практика две совершенно разые вещи (иногда)

Если есть более элегантный способ -буду признателен.

-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Itersect двух point векторов с погрешностью координат
Какая была исходная задача (до "уравнивания" двух наборов точек) — получить значения какого-то растра (растров) в исходных точках? Если так, то в GRASS есть модуль v.what.rast, который заносит в таблицу атрибутов значения растра в точках.SBoris писал(а): Есть исходный точечный слой (векторный). Нужны были значения другого(их) раста(ов) - сделал из исходного растр (GRASS). Считал по растровой маске даные с растра. Полученный растр преобразовал в вектор. Получил вектор похожий на исходный векторный, но координаты немножко "поплыли"
Редактор материалов, модератор форума
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Itersect двух point векторов с погрешностью координат
хотел предложить, после уточнения ровно тоже самое
1. строим буфера вокруг вектор-1, размер зоны порядка разницы в координатах близлежащих точек
2. выбираем все в вектор-2 вектором-1
3. находим две точки которые не выбрались - удаляем
если погрешность в координатах меньше, чем размер ячейки, т.е. обе точки попадают в одну, то мне кажется вам не нужно корректировать координаты, только убедиться что порядок один и тот же.
1. строим буфера вокруг вектор-1, размер зоны порядка разницы в координатах близлежащих точек
2. выбираем все в вектор-2 вектором-1
3. находим две точки которые не выбрались - удаляем
если погрешность в координатах меньше, чем размер ячейки, т.е. обе точки попадают в одну, то мне кажется вам не нужно корректировать координаты, только убедиться что порядок один и тот же.
пристегивайтесь, турбулентность прямо по курсу
-
- Участник
- Сообщения: 82
- Зарегистрирован: 24 мар 2011, 19:15
- Репутация: 1
Re: Itersect двух point векторов с погрешностью координат
Да. Спасибо, это упрощает работу.amuriy писал(а):Какая была исходная задача (до "уравнивания" двух наборов точек) — получить значения какого-то растра (растров) в исходных точках? Если так, то в GRASS есть модуль v.what.rast, который заносит в таблицу атрибутов значения растра в точках.SBoris писал(а): Есть исходный точечный слой (векторный). Нужны были значения другого(их) раста(ов) - сделал из исходного растр (GRASS). Считал по растровой маске даные с растра. Полученный растр преобразовал в вектор. Получил вектор похожий на исходный векторный, но координаты немножко "поплыли"
Но
Код: Выделить всё
v.what.rast vector=shp1@traffic raster=Cu_dep@traffic column=Cu_dep_sampl
ERROR: Column <Cu_dep_sampl> not found

Сначала думал, что v.what.rast апдейтит уже имеющийся столбец в атрибутивной таблице, но создав такой столбец и запустив v.what.rast - результат одинаковый.
-
- Участник
- Сообщения: 82
- Зарегистрирован: 24 мар 2011, 19:15
- Репутация: 1
Re: Itersect двух point векторов с погрешностью координат
Спасибо
Всё равно попробую.
Я упёртый.
Вы имеете в виду v.what.vect?Максим Дубинин писал(а):хотел предложить, после уточнения ровно тоже самое
2. выбираем все в вектор-2 вектором-1
Как по мне, чисто теоретически, "эти 2 точки" будут выбраны тоже, так как попадут в выбираемую ячейку (у них координаты такие же -это 2 точки дубли). Или я не прав?Максим Дубинин писал(а): 3. находим две точки которые не выбрались - удаляем

Если через буферы, то да, тогда длинны двух векторов будут одинаковы.Максим Дубинин писал(а): если погрешность в координатах меньше, чем размер ячейки, т.е. обе точки попадают в одну, то мне кажется вам не нужно корректировать координаты, только убедиться что порядок один и тот же.
Всё равно попробую.

-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Itersect двух point векторов с погрешностью координат
Перед использованием <v.what.rast> задайте вычислительный регион по вашему растру:SBoris писал(а): Сначала думал, что v.what.rast апдейтит уже имеющийся столбец в атрибутивной таблице, но создав такой столбец и запустив v.what.rast - результат одинаковый.
Код: Выделить всё
g.region rast=Cu_dep@traffic
То, что вы называете "длинами" векторов — это количество объектов (и записей в таблице), так? А то точки — нулевые вектора и не имеют длиныSBoris писал(а): Если через буферы, то да, тогда длинны двух векторов будут одинаковы.

Последний раз редактировалось Александр Мурый 23 сен 2012, 21:42, всего редактировалось 1 раз.
Редактор материалов, модератор форума
-
- Участник
- Сообщения: 82
- Зарегистрирован: 24 мар 2011, 19:15
- Репутация: 1
Re: Itersect двух point векторов с погрешностью координат
Как раз этого не хватало. - Помогло -работает.amuriy писал(а): Перед использованием <v.what.rast> задайте вычислительный регион по вашему растру:Код: Выделить всё
g.region rast=Cu_dep@traffic
Да - есть, я его ручками создал раньше. Поле необходимо создать перед заполнением или апдейт уже существующего. У меня v.what.rast не хотел сам создавать новое поле.amuriy писал(а): Так поле "Cu_dep_sampl" есть или нет в таблице атрибутов? Приведите вывод команды v.info -c shp1@traffic.
[/code]
Именно!amuriy писал(а): Если через буферы, то да, тогда длинны двух векторов будут одинаковы.
То, что вы называете "длинами" векторов — это количество объектов (и записей в таблице), так? А то точки — нулевые вектора и имеют длины

На сегодня всем спасибо. Воскресенье, как ни как

-
- Участник
- Сообщения: 82
- Зарегистрирован: 24 мар 2011, 19:15
- Репутация: 1
Re: Itersect двух point векторов с погрешностью координат
Как говорится , Уторо вечера - мудреннее".
Нашел элегантное решение в один шаг (GRASS):
Фишка в параметре dmax=50 который задает поиск значения в окресностях с радиусом 50 (в единицах размерности карты). То-есть, для заполнения поля elev одного (точечного) вектора shp1 другим alev@traffic значениями поля value в условиях несовпадения координат точек (незначительного разброса, ошибки...).
Спасибо всем ещё раз.

Код: Выделить всё
v.what.vect vector=shp1@traffic column=elev qvector=alev@traffic qcolumn=value dmax=50
Спасибо всем ещё раз.
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing [Bot] и 3 гостя