Страница 1 из 1

Проблема с преобразованием координат

Добавлено: 05 авг 2013, 12:18
Namolem
Добрый день. Нужно пересчитать координаты между МСК-32 (Брянская область) и WGS84

Известные данные:
Проекция - поперечная Меркатора,
нулевая широта 0°,
нулевая долгота 35°29',
сдвиг по широте -5412900.566м,
сдвиг по долготе 2250000м.

Есть проект в Trimble Geomatics Office, на основе которого мы работаем, там заданы координаты некоторых пунктов в WGS84 и в МСК-32.
На его основе хочу подобрать семь параметров для Position-Vector Transformation.

Подбираю методом тыка, начальное значение ключей от СК42, далее изменяю ключи случайным образом.
Если отклонение от X,Y,Z новых ключей меньше, то запоминаю их.
Для пересчета использую библиотеку DotSpatial.

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

ProjectionInfo wgsProj = KnownCoordinateSystems.Geographic.World.WGS1984;
var keys = new[]
	                                         {
												 23.814,
												 -123.193,
												 -94,
												 0.18749,
												 -0.22884,
												 -0.13,
												 1.1
	                                         };
var projString ="+proj=tmerc +lat_0=0 +lon_0=35.483333333333333333333333333333333333 +k=1 +x_0=2250000 +y_0=-5412900.566 +ellps=krass +towgs84="
				+ keys[0].ToString(CultureInfo.InvariantCulture) + ","
				+ keys[1].ToString(CultureInfo.InvariantCulture) + ","
				+ keys[2].ToString(CultureInfo.InvariantCulture) + ","
				+ keys[3].ToString(CultureInfo.InvariantCulture) + ","
				+ keys[4].ToString(CultureInfo.InvariantCulture) + ","
				+ keys[5].ToString(CultureInfo.InvariantCulture) + ","
				+ keys[6].ToString(CultureInfo.InvariantCulture) + " +units=m +no_defs";
			return ProjectionInfo.FromProj4String(projString);
var localXY = new double[] {2166921.047, 493562.471};
var localZ = new double[] {206.448};
Reproject.ReprojectPoints(localXY, localZ, msk32, wgsProj, 0, 1);
На стадии разработки у меня 4 пункта, чтобы быстрее работало. После получения ключей пробую пересчитать контрольный пункт, получаю погрешность по долготе: 0.3м, по широте: 0.1м, по высоте 4м.
Пока все нормально. Пробую загрузить эти ключи в JAVAD Justin и в Javad Tracy (коммуникатор VICTOR). Получаю погрешность около 6", около 185 метров. В чем может быть проблема?(

Re: Проблема с преобразованием координат

Добавлено: 05 авг 2013, 13:47
bingeomap
Проблема может быть в том, что наверно в ПО JAVAD параметры не Position-Vector a Coordinate Frame. Этого надо уточнит.

Re: Проблема с преобразованием координат

Добавлено: 05 авг 2013, 14:32
Дмитрий Барышников
Как я понимаю по этим параметрам http://www.mapbasic.ru/msk32 переходим из МСК в СК-42
Ну а дальше в соответствии с ГОСТ Р 51794-2008 из СК42 в WGS84
Вот еще темы: viewtopic.php?t=300

185 м наводят на мысль, что параметр +towgs84 игнорируется. Проверьте пересчет с ним и без него.

Re: Проблема с преобразованием координат

Добавлено: 05 авг 2013, 14:48
gamm
Скорее всего Дмитрий прав - некоторые функции пересчета координат в PROJ4 игнорируют датум, о чем написано в документации.

Re: Проблема с преобразованием координат

Добавлено: 06 авг 2013, 12:21
Namolem
Вроде бы получилось сделать одинаковые вычисления в Justin и в Tracy.

В своей программе сделал преобразование в 2 шага - сначала из проекции меркатора в геодезические координаты, потом из геодезических широты и долготы в WGS84 по семи параметрам.

Еще вопрос - при подборе ключей есть ли какие-либо границы, например по Dx 20..30, Dy -140..-120 или они могут быть любыми?

Re: Проблема с преобразованием координат

Добавлено: 06 авг 2013, 12:21
Namolem
Вроде бы получилось сделать одинаковые вычисления в Justin и в Tracy.

В своей программе сделал преобразование в 2 шага - сначала из проекции меркатора в геодезические координаты, потом из геодезических широты и долготы в WGS84 по семи параметрам.

Еще вопрос - при подборе ключей есть ли какие-либо границы, например по Dx 20..30, Dy -140..-120 или они могут быть любыми?