Страница 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?
элементарно, Ватсон :D

для меня самы простой вариант - просто загрузить в 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() - наше все, смотрим внутрь и пишем циклы :mrgreen:

Код: Выделить всё

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:
Донецков, пож-та, создайте новую тему для этого вопроса.