Страница 1 из 1
Проекции QGIS
Добавлено: 23 ноя 2012, 14:42
Tamplier
Здравствуйте, форумчане!
Недавно начал использовать 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 файла содержит только название объектов, периметр и какой-то идентификатор.
Подскажите пожалуйста, в чем ошибся и как данную проблему решить.
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 14:50
Максим Дубинин
а как вы определили, что у shape-файла единицы измерения - километры?
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 15:02
Tamplier
Раньше в ENVI работал. Там при выборе проекции можно выбрать и единицы измерения. Если выбрать километры, то векторные данные ложились именно туда, где должны были находиться.
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 15:13
Максим Дубинин
выложите фрагмент данных если можете и если он представителен
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 15:38
Tamplier
Если речь идет о картинке, то можно скачать тут:
http://narod.ru/disk/63938001001.ab5084 ... 0.png.html
Это ваниант с правильным указанием единиц измерения.
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 16:34
gamm
Tamplier писал(а):+x_0=14500000
это вы случаем не километры прибавили? ну и самый просто выход - просто помножить координаты, переведя их в метры.
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 17:49
Tamplier
gamm писал(а):Tamplier писал(а):+x_0=14500000
это вы случаем не километры прибавили?
Ну да, я так понял, что x_0, у_0 - начало координат в единицах измерения, указанных в unit
gamm писал(а):
ну и самый просто выход - просто помножить координаты, переведя их в метры.
Думал об этом, но как добраться до этих координат в SHP?
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 18:40
gamm
Tamplier писал(а):Ну да, я так понял, что x_0, у_0 - начало координат в единицах измерения, указанных в unit
я тоже. А зачем тогда прибавлять 14500000 километров вместо 14500?
Думал об этом, но как добраться до этих координат в 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")
Re: Проекции QGIS
Добавлено: 23 ноя 2012, 18:53
Tamplier
gamm писал(а):
я тоже. А зачем тогда прибавлять 14500000 километров вместо 14500?
"-Идиот!
-Согласен..."
gamm писал(а):
для меня самы простой вариант - просто загрузить в R используя rgdal, умножить, и выгрузить обратно.
О, а вот это интересно, завтра попробую. Спасибо!
Re: Проекции QGIS
Добавлено: 24 ноя 2012, 13:12
Tamplier
Я извиняюсь, за ламерство, но как в R работать с массивами? В моем случае векторные данные это как раз линии и полигоны.
Структура выглядит примерно так:
Код: Выделить всё
..@ 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
При попытке домножить coords на 1000 получаю:
Код: Выделить всё
vcg@polygons@coords<-vcg@polygons@coords*1000
Ошибка: попытка получить слот "coords" из объекта базового класса ("list") без слотов
Re: Проекции QGIS
Добавлено: 24 ноя 2012, 13:46
gamm
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
}
}
Re: Проекции QGIS
Добавлено: 30 янв 2013, 11:48
Донецков
... Создал новую тему...
Re: Проекции QGIS
Добавлено: 30 янв 2013, 11:56
Александр Мурый
Донецков писал(а):Есть ли возможность в QGIS установить "Локальную СК" по типу ArcGIS:
Донецков, пож-та, создайте новую тему для этого вопроса.