Проекции QGIS
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 ноя 2012, 14:18
- Репутация: 0
Проекции QGIS
Здравствуйте, форумчане!
Недавно начал использовать QGIS и столкнулся с небольшими проблемами. Есть растровые данные в проекции Гаусса-Крюгера 14 зоны, единицы измерения - метры. И есть векторные данные (shapefile), которые создавались для той же проекции, но единицы измерения - километры. В QGIS есть только проекция ГК в метрах. Попытался разобраться с синтаксисом proj4 и создать свою проекцию, но безуспешно:
+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=km +no_defs
не дало нужных результатов.
Так же хотел отредактировать векторные данные и пересчитать координаты в метры, но не понял как этого сделать. Таблица атрибутов SHP файла содержит только название объектов, периметр и какой-то идентификатор.
Подскажите пожалуйста, в чем ошибся и как данную проблему решить.
Недавно начал использовать QGIS и столкнулся с небольшими проблемами. Есть растровые данные в проекции Гаусса-Крюгера 14 зоны, единицы измерения - метры. И есть векторные данные (shapefile), которые создавались для той же проекции, но единицы измерения - километры. В QGIS есть только проекция ГК в метрах. Попытался разобраться с синтаксисом proj4 и создать свою проекцию, но безуспешно:
+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=km +no_defs
не дало нужных результатов.
Так же хотел отредактировать векторные данные и пересчитать координаты в метры, но не понял как этого сделать. Таблица атрибутов SHP файла содержит только название объектов, периметр и какой-то идентификатор.
Подскажите пожалуйста, в чем ошибся и как данную проблему решить.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Проекции QGIS
а как вы определили, что у shape-файла единицы измерения - километры?
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 ноя 2012, 14:18
- Репутация: 0
Re: Проекции QGIS
Раньше в ENVI работал. Там при выборе проекции можно выбрать и единицы измерения. Если выбрать километры, то векторные данные ложились именно туда, где должны были находиться.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Проекции QGIS
выложите фрагмент данных если можете и если он представителен
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 ноя 2012, 14:18
- Репутация: 0
Re: Проекции QGIS
Если речь идет о картинке, то можно скачать тут:
http://narod.ru/disk/63938001001.ab5084 ... 0.png.html
Это ваниант с правильным указанием единиц измерения.
http://narod.ru/disk/63938001001.ab5084 ... 0.png.html
Это ваниант с правильным указанием единиц измерения.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Проекции QGIS
это вы случаем не километры прибавили? ну и самый просто выход - просто помножить координаты, переведя их в метры.Tamplier писал(а):+x_0=14500000
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 ноя 2012, 14:18
- Репутация: 0
Re: Проекции QGIS
Ну да, я так понял, что x_0, у_0 - начало координат в единицах измерения, указанных в unitgamm писал(а):это вы случаем не километры прибавили?Tamplier писал(а):+x_0=14500000
Думал об этом, но как добраться до этих координат в SHP?gamm писал(а): ну и самый просто выход - просто помножить координаты, переведя их в метры.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Проекции QGIS
я тоже. А зачем тогда прибавлять 14500000 километров вместо 14500?Tamplier писал(а):Ну да, я так понял, что x_0, у_0 - начало координат в единицах измерения, указанных в unit
элементарно, ВатсонДумал об этом, но как добраться до этих координат в SHP?

для меня самы простой вариант - просто загрузить в R используя rgdal, умножить, и выгрузить обратно. Примерно так (пишу по памяти, могут быть нюансы для не-точек, нужно сделать str(foo) и посмотреть, что внутри):
Код: Выделить всё
library(rgdal)
foo<-readOGR("foo_km.shp","foo_km")
foo@coords<-foo@coords*1000
writeOGR(foo,"foo_m.shp", "foo_m", driver="ESRI Shapefile")
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 ноя 2012, 14:18
- Репутация: 0
Re: Проекции QGIS
"-Идиот!gamm писал(а): я тоже. А зачем тогда прибавлять 14500000 километров вместо 14500?
-Согласен..."
О, а вот это интересно, завтра попробую. Спасибо!gamm писал(а): для меня самы простой вариант - просто загрузить в R используя rgdal, умножить, и выгрузить обратно.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 23 ноя 2012, 14:18
- Репутация: 0
Re: Проекции QGIS
Я извиняюсь, за ламерство, но как в R работать с массивами? В моем случае векторные данные это как раз линии и полигоны.
Структура выглядит примерно так:
При попытке домножить coords на 1000 получаю:
Структура выглядит примерно так:
Код: Выделить всё
..@ polygons :List of 1936
.. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots
.. .. .. ..@ Polygons :List of 1
.. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
.. .. .. .. .. .. ..@ labpt : num [1:2] 14603 5764
.. .. .. .. .. .. ..@ area : num 0.93
.. .. .. .. .. .. ..@ hole : logi FALSE
.. .. .. .. .. .. ..@ ringDir: int 1
.. .. .. .. .. .. ..@ coords : num [1:6, 1:2] 14603 14602 14602 14603 14603
Код: Выделить всё
vcg@polygons@coords<-vcg@polygons@coords*1000
Ошибка: попытка получить слот "coords" из объекта базового класса ("list") без слотов
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Проекции QGIS
так же как в С++, здесь @ - указание на члена класса (слот), и есть списки, по которым можно делать цикл (полигоны как раз список).Tamplier писал(а):Я извиняюсь, за ламерство, но как в R работать с массивами
естественно, есть всякие итераторы, и прочие чудеса ООП, но я им не доверяю. В общем, str() - наше все, смотрим внутрь и пишем циклы

Код: Выделить всё
p.mask<-readOGR("Lake.mif","Lake")
n.poly<-length(p.mask@polygons) # number of polygons
for(i in 1:n.poly) { # loop over all (complex) polygons in vector mask ...
n.comp<-length(p.mask@polygons[[i]]@Polygons) # number of simple polygons
for(j in 1:n.comp) { # loop over all simple polygons in complex polygon ...
p.mask@polygons[[i]]@Polygons[[j]]@coords<-p.mask@polygons[[i]]@Polygons[[j]]@coords*0.001
}
}
-
- Гуру
- Сообщения: 3058
- Зарегистрирован: 19 май 2010, 19:44
- Репутация: 189
Re: Проекции QGIS
... Создал новую тему...
- Вложения
-
- 2.png (15.92 КБ) 11051 просмотр
-
- 1.png (19.16 КБ) 11051 просмотр
Последний раз редактировалось Донецков 30 янв 2013, 19:48, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Проекции QGIS
Донецков, пож-та, создайте новую тему для этого вопроса.Донецков писал(а):Есть ли возможность в QGIS установить "Локальную СК" по типу ArcGIS:
Редактор материалов, модератор форума
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость