Re: переход плоск-сферич Формула 25 действующего ГОСТа
Добавлено: 06 мар 2019, 15:25
пересечения экватора с осевым мередианном
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
https://gis-lab.info/forum/
http://geodesist.ru/threads/g-sarov-niz ... ost-869621город-то режимный, там у местных фиг чего допросишься, а вы на форуме интересуетесь. Делали не давно объект, рядом с городом, но КПТ на территории оказался в УСК Сарова, так вот там разворот относительно МСК-52 где-то 17 градусов)).
Код: Выделить всё
BigDecimal _x=new BigDecimal("1310495.622518064",mc).subtract(new BigDecimal("1303628.3198883925"),mc);
BigDecimal _y=new BigDecimal("4839745.462222159",mc).subtract(new BigDecimal("4832704.908736386"),mc);
System.out.println(BigDecimalMath.sqrt(_x.pow(2,mc).add(_y.pow(2,mc)),mc).toString());
это не погрешность, и я тебе об этом говорилт.е. погрешность 65 метров
а ты знаешь, что в разных СК она будет разная?
https://mapbasic.ru/msk52А как перейти в МСК-52 из WGS?
да, и тебе ссылку приводил: http://gis-lab.info/qa/local-cs.htmlЕсли есть 4 точки со значениями в двух СК, возможно ли построить ключ для перехода?
Да. Посчитал ещё одну гипотенузу и вместо 15Кметров получил 25К. Зато посчитал )
по имени фабрика создаёт CoordinateReferenceSystem объект, где-то посередине вызывают: createForParameters с аргументами
Ок. Изучаю
нет, читай мою статью - до последней строчки!Для перехода в МСК52 вторая строчка будет иметь вид:
перейти к абракадабре вида:"МСК-52 зона 1", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 41.55, 0, 1, 1250000, -5714743.504
"МСК-52 зона 2", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 44.55, 0, 1, 2250000, -5714743.504
"МСК-52 зона 3", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 47.55, 0, 1, 3250000, -5714743.504
подскажите, пожалуйста?"+proj=tmerc +lat_0=0 +lon_0=44.55 +k=1 +x_0=2250000 +y_0=-5714743.504 +ellps=krass +towgs84=23.57,-140.95,-79.8,0,0.35,0.79,-0.22 +units=m +no_defs
Код: Выделить всё
CRSFactory factory = new CRSFactory();
CoordinateReferenceSystem srcCrs = factory.createFromName("EPSG:4326");
/*
"МСК-52 зона 1", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 41.55, 0, 1, 1250000, -5714743.504
"МСК-52 зона 2", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 44.55, 0, 1, 2250000, -5714743.504
"МСК-52 зона 3", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 47.55, 0, 1, 3250000, -5714743.504
*/
String param =
"+proj=tmerc " +
"+lat_0=0 +lon_0=44.55 " +
"+k=1 " +
"+x_0=2250000 " +
"+y_0=-5714743.504 " +
"+ellps=krass +towgs84=23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22 " +
"+units=m +no_defs";
CoordinateReferenceSystem msk52 =
factory.createFromParameters("MSK52", param);
ProjCoordinate srcCoord = new ProjCoordinate(c[i][0], c[i][1]);
ProjCoordinate dstCoord = new ProjCoordinate();
CoordinateTransform fromWGS84 = new CoordinateTransformFactory().createTransform(srcCrs, msk52);
fromWGS84.transform(srcCoord, dstCoord);
Код: Выделить всё
ProjCoordinate srcCoord = new ProjCoordinate(c[i][1], c[i][0]);
Код: Выделить всё
c[0][0]=54.9850521593413;
c[0][1]=43.2725334459904;
String param =
"+proj=tmerc " +
"+lat_0=0 +lon_0=44.55 " +
"+k=1 " +
"+x_0=2250000 " +
"+y_0=-5714743.504 " +
"+ellps=krass +towgs84=23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22 " +
"+units=m +no_defs";
CoordinateReferenceSystem msk52 =
factory.createFromParameters("MSK52", param);
for (int i = 0 ; i<4;i++) {
ProjCoordinate srcCoord = new ProjCoordinate(c[i][1], c[i][0]);
ProjCoordinate dstCoord = new ProjCoordinate();
CoordinateTransform fromWGS84 = new CoordinateTransformFactory().createTransform(srcCrs, msk52);
fromWGS84.transform(srcCoord, dstCoord);
System.out.println("X:" + dstCoord.x + " :Y:" + dstCoord.y);
}
"МСК-52 зона 1", 8, 1001, 7, 41.55, 0, 1, 1250000, -5714743.504
"МСК-52 зона 2", 8, 1001, 7, 44.55, 0, 1, 2250000, -5714743.504
"МСК-52 зона 3", 8, 1001, 7, 47.55, 0, 1, 3250000, -5714743.504