Проекции QGIS

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Tamplier
Новоприбывший
Сообщения: 6
Зарегистрирован: 23 ноя 2012, 14:18
Репутация: 0

Проекции QGIS

Сообщение Tamplier » 23 ноя 2012, 14:42

Здравствуйте, форумчане!
Недавно начал использовать 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

Сообщение Максим Дубинин » 23 ноя 2012, 14:50

а как вы определили, что у shape-файла единицы измерения - километры?
пристегивайтесь, турбулентность прямо по курсу

Tamplier
Новоприбывший
Сообщения: 6
Зарегистрирован: 23 ноя 2012, 14:18
Репутация: 0

Re: Проекции QGIS

Сообщение Tamplier » 23 ноя 2012, 15:02

Раньше в ENVI работал. Там при выборе проекции можно выбрать и единицы измерения. Если выбрать километры, то векторные данные ложились именно туда, где должны были находиться.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Проекции QGIS

Сообщение Максим Дубинин » 23 ноя 2012, 15:13

выложите фрагмент данных если можете и если он представителен
пристегивайтесь, турбулентность прямо по курсу

Tamplier
Новоприбывший
Сообщения: 6
Зарегистрирован: 23 ноя 2012, 14:18
Репутация: 0

Re: Проекции QGIS

Сообщение Tamplier » 23 ноя 2012, 15:38

Если речь идет о картинке, то можно скачать тут:
http://narod.ru/disk/63938001001.ab5084 ... 0.png.html
Это ваниант с правильным указанием единиц измерения.

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Проекции QGIS

Сообщение gamm » 23 ноя 2012, 16:34

Tamplier писал(а):+x_0=14500000
это вы случаем не километры прибавили? ну и самый просто выход - просто помножить координаты, переведя их в метры.

Tamplier
Новоприбывший
Сообщения: 6
Зарегистрирован: 23 ноя 2012, 14:18
Репутация: 0

Re: Проекции QGIS

Сообщение Tamplier » 23 ноя 2012, 17:49

gamm писал(а):
Tamplier писал(а):+x_0=14500000
это вы случаем не километры прибавили?
Ну да, я так понял, что x_0, у_0 - начало координат в единицах измерения, указанных в unit
gamm писал(а): ну и самый просто выход - просто помножить координаты, переведя их в метры.
Думал об этом, но как добраться до этих координат в SHP?

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Проекции QGIS

Сообщение gamm » 23 ноя 2012, 18:40

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")

Tamplier
Новоприбывший
Сообщения: 6
Зарегистрирован: 23 ноя 2012, 14:18
Репутация: 0

Re: Проекции QGIS

Сообщение Tamplier » 23 ноя 2012, 18:53

gamm писал(а): я тоже. А зачем тогда прибавлять 14500000 километров вместо 14500?
"-Идиот!
-Согласен..."
gamm писал(а): для меня самы простой вариант - просто загрузить в R используя rgdal, умножить, и выгрузить обратно.
О, а вот это интересно, завтра попробую. Спасибо!

Tamplier
Новоприбывший
Сообщения: 6
Зарегистрирован: 23 ноя 2012, 14:18
Репутация: 0

Re: Проекции QGIS

Сообщение Tamplier » 24 ноя 2012, 13:12

Я извиняюсь, за ламерство, но как в 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") без слотов

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Проекции QGIS

Сообщение gamm » 24 ноя 2012, 13:46

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
  }
}

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Проекции QGIS

Сообщение Донецков » 30 янв 2013, 11:48

... Создал новую тему...
Вложения
2.png
2.png (15.92 КБ) 11051 просмотр
1.png
1.png (19.16 КБ) 11051 просмотр
Последний раз редактировалось Донецков 30 янв 2013, 19:48, всего редактировалось 1 раз.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Проекции QGIS

Сообщение Александр Мурый » 30 янв 2013, 11:56

Донецков писал(а):Есть ли возможность в QGIS установить "Локальную СК" по типу ArcGIS:
Донецков, пож-та, создайте новую тему для этого вопроса.
Редактор материалов, модератор форума

Ответить

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

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

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