Как увеличить все координаты (в шейпфайле) в 2 раза?

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Neo
Интересующийся
Сообщения: 46
Зарегистрирован: 13 фев 2010, 21:41
Репутация: 0

Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Neo » 28 мар 2010, 06:59

Было дело ясное - у всех вроде-бы масштаб 1:500,
я векторизовал свой план,
а оказалось дело темное - у меня масштаб 1:1000.
Потому и необходимо увеличить координаты в 2 раза.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Дмитрий Барышников » 28 мар 2010, 18:23

Может стоит применить Spatial Adjustment? Аналог Пространственной привязки для геометрии.

Neo
Интересующийся
Сообщения: 46
Зарегистрирован: 13 фев 2010, 21:41
Репутация: 0

Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Neo » 28 мар 2010, 19:42

Алгоритм прост:
1. Считываем координаты (Х, У) из исходного файла.
2. Умножаем их на 2.
3. Записываем результат (Х', У') в выходной файл.
Не знаю только как это "сказать" QGISу или GDALу (кто-то же из них обрабатывает шейпфайлы).

Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Olga_@@@ » 28 мар 2010, 21:24

Neo писал(а):2. Умножаем их на 2.
Возможно... если начало отсчета СК совпадает с нижним левым углом вашего планшета.
Если нет, то скорее всего результат Вас не обрадует.
У меня из Apple дома только компот.

Neo
Интересующийся
Сообщения: 46
Зарегистрирован: 13 фев 2010, 21:41
Репутация: 0

Главное - масштабы

Сообщение Neo » 28 мар 2010, 22:16

Уважаемая Olga_@@@, вы хоть читали почему такое нужно сделать?
Например, вроде был масштаб 1:500,
в нем векторизованное здание длиной 12 м ,
а на самом деле "бумажный" план оказался в масштабе 1:1000,
а это как раз в 2 раза крупнее (от 1:500),
следовательно, и реальная длина здания - не 12 м, а 12*2=24 м,
аналогичное и со всеми координатами в шейпфайлах.
(Масштаб мельче, а длины больше.)

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Дмитрий Барышников » 28 мар 2010, 22:23

По моему как раз вы не поняли о чем Вас предупредили. Если начало СК не совпадает с Вашим планом не будет у вас здание даже с прямоугольными углами. Это школьная геометрия!

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Voltron » 29 мар 2010, 08:49

Neo писал(а):Не знаю только как это "сказать" QGISу или GDALу (кто-то же из них обрабатывает шейпфайлы).
"Сказать" это можно на С++ или Python, последний для вашей задачи предпочтительнее. Смотрите в сторону консоли Python и QGIS API

Olga_@@@, Bishop
Да разве вы не видите, что это МАГИСТР? Куда уж нам необразованным... :-)

Аватара пользователя
nadiopt
Гуру
Сообщения: 4744
Зарегистрирован: 29 янв 2009, 13:27
Репутация: 495
Ваше звание: хрюкало
Откуда: Санкт-Петербург
Контактная информация:

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение nadiopt » 29 мар 2010, 09:25

а что магистр, это всего-навсего человек, учившийся 6 лет и защитивший диплом
в порядке бреда: в АркГис при задании системы координат можно задать единицу измерения, при этом необязательно 1, можно и 2, и 0.5. при этом соответственно длины линий изменятся. в кугис так не получится?
см. картинку
Вложения
метры.jpg
метры.jpg (79.51 КБ) 14086 просмотров
ин гроссен фамилен нихт клювен клац клац

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Voltron » 29 мар 2010, 11:15

nadiopt писал(а):в порядке бреда: в АркГис при задании системы координат можно задать единицу измерения, при этом необязательно 1, можно и 2, и 0.5. при этом соответственно длины линий изменятся. в кугис так не получится?
Насколько знаю, в кугис так не получится

Neo
Интересующийся
Сообщения: 46
Зарегистрирован: 13 фев 2010, 21:41
Репутация: 0

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Neo » 30 мар 2010, 19:33

Пример
Пусть в масштабе 1:500, использованном для привязки растра и последующей векторизации, координаты линии в шейпфайле были:
(1,1); (4,4).
Тогда ее длина - D1=sqrt((4-1)^2+(4-1)^2)=sqrt(9+9)=4,242640687119285 м, при масштабе 1:500.
Но реальный масштаб оказался 1:1000, следовательно соответствующие длины на местности в 2 раза больше, чем при масштабе 1:500.
Тогда припустим, что координаты нужно увеличить в 2 раза также:
(2,2); (8,8).
Вычислим длину: D2=sqrt((8-2)^2+(8-2)^2)=sqrt(36+36)=8,48528137423857 м, при масштабе 1:500.
Проверим соотношение длин D2/D1=8,48528137423857/4,242640687119285 =2,00000000000000 (безразмерная величина).
Поскольку отношение равно двум (т. е. увеличению в 2 раза), то гипотеза доказана.
И где тут "планшет"? Где "начало координат"? Ай, как же без них?? :)
Последний раз редактировалось Максим Дубинин 30 мар 2010, 19:37, всего редактировалось 1 раз.
Причина: удален троллинг

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Дмитрий Барышников » 30 мар 2010, 20:38

Ну и куда же линия Ваша уехала. был центр линии 2,5 на 2,5 стал 5 на 5. Линия не только удлинилась но и куда-то уехала (должна только удлиниться). С полигонами вообще алес будет.
Последний раз редактировалось Максим Дубинин 31 мар 2010, 02:35, всего редактировалось 1 раз.
Причина: убрал наезды

Neo
Интересующийся
Сообщения: 46
Зарегистрирован: 13 фев 2010, 21:41
Репутация: 0

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Neo » 30 мар 2010, 23:55

Bishop писал(а):Ну и куда же линия Ваша уехала. был центр линии 2,5 на 2,5 стал 5 на 5. Линия не только удлинилась но и куда-то уехала (должна только удлиниться). С полигонами вообще алес будет.!
Я что должен был из прямой линии "параболу" получить, чтоб начальная и конечная точки на месте остались?
При таком понимании Вы ни в коем случае никогда электронную карту не масштабируйте. :)
Вы хоть масштабы понимаете? Какой крупнее, какой мельче, и что из такой его характеристики выплывает?

Пространственные взаимосвязи НА МЕСТЕ ОСТАЛИСЬ, только численные значения в 2 раза больше.
Притом линия НЕ УЕХАЛА, а "вернулась на круги своя", ведь правильный масштаб 1:1000.
Последний раз редактировалось Максим Дубинин 31 мар 2010, 02:38, всего редактировалось 3 раза.
Причина: убрал наезды

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение Andrey Zhukov » 31 мар 2010, 08:32

Блин, ну топология-то останется. Только местоположение всех точек в файле улетит фиг знает куда. Вы же, получается, растягиваете вашу карту не от центра, а от угла, что в корне неверно. Соответственно, тут лучше перепривязать шейп в ArcGIS.
Ваши рассуждения, Neo, абсолютно верны для карты, которая изначально не привязана. Ну, т.е. в неких относительных координатах, где отсчет шел от угла планшета, все верно, клево и просто. А если вы привязали планшет по неким координатам, то возникает множество вопросов.
Если на планшете были заданы координаты, они должны были быть с масштаба 1:1000, а в таком случае ваш проект УЖЕ на нужных местах. А вот если они каким-то образом были даны для 1:500, то начинаются сложности. Для привязанной к реальной системе координат карты вы непомерным образом все исказите. Например, был у вас левый угол N50 E50, стал N100 E100, что выливается в бессмыслицу. Нет, ну если у вас планшет идет от 0,0 (экватор, гринвич), то все замечательно. Впрочем, есть еще один метод. Взять один из углов за 0,0, перевести карту в относительную систему координат, перемножить все, а потом вернуть в абсолютную.

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

Re: Как увеличить все координаты (в шейпфайле) в 2 раза?

Сообщение JEY » 01 апр 2010, 07:53

Я вижу, что из простейшей задачи, тут развернули целую дискуссию. Позвольте сделать два существенных замечания:

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

2. В каждой уважающей себя программе есть функция масштабирования геометрических примитивов. Выбираете один или несколько объектов, указываете базовую точку и коэффициент масштабирования. Затем перезаписываете результат в источник данных. Или я не прав?

Neo
Интересующийся
Сообщения: 46
Зарегистрирован: 13 фев 2010, 21:41
Репутация: 0

Что было и как проще поступить

Сообщение Neo » 01 апр 2010, 18:08

JEY писал(а):1. Прежде, чем приступать к векторизации, не потрудитесь выполнить пространственную привязку исходного материала. По-моему это уже настолько естественно, что даже новички с этого начинают свою работу...
В общем был чертеж, без никакой СК,
но чтобы после сканирования он был ортогонален осям координат экрана,
я принял одну точку за ноль,
к другим трем точкам промерил расстояние линейкой,
и полученные сантиметры умножил на 5м,
(чтобы получить реальные длины на местности в масштабе 1:500),
по измеренным координатам "привязал" растр.
Далее векторизовал исходные линии,
нанес линии проекта.

При проверке преподаватель сказал, что у меня масштаб 1:1000.
А я все думал почему у меня зданий около десятка, а у других 3-4 всего. :)

Проще всего напечатать план в масштабе 1:500
(т.е. выбрать такой масштаб при печати в программе),
а подписать как 1:1000.
:)

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя