Страница 2 из 5

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 15:59
dab
Для данных в формате Mapinfo (TAB) с системой координат

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

"МСК-31 зона 2", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 38.48333333333, 0, 1, 2250000, -5212900.56
утилита gdalsrsinfo предлагает

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

PROJCS["unnamed",
    GEOGCS["unnamed",
        DATUM["MIF 9999,3,23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22,0",
            SPHEROID["Krassovsky",6378245,298.3]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",38.48333333333],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",2250000],
    PARAMETER["false_northing",-5212900.56],
    UNIT["Meter",1.0]]
А как на самом деле должны выглядеть эти параметры в формате OGC WKT?

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 16:30
SergeyRyzhkov
В смысле?
Датум по идее должен быть нормально описан

DATUM["МСК-31 зона 2",
SPHEROID["Krassowsky 1940",6378245,298.3,
AUTHORITY["EPSG","7024"]],
TOWGS84[23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22]
],

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 16:51
dab
SergeyRyzhkov писал(а):В смысле?
Датум по идее должен быть нормально описан ...
В том смысле, что после прочтения статьи непонятно как в формате OGC WKT представить систему с пользовательским датумом из Mapinfo (с 9999).
А утилита gdalsrsinfo выдаёт некорректный результат.
Вот я и хочу просто увидеть корректное описание в формате OGC WKT для

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

"МСК-31 зона 2", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 38.48333333333, 0, 1, 2250000, -5212900.56

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 16:56
SergeyRyzhkov
В статье же написано вроде, цитирую:
" ... Вам может встретиться описание СК, где в качестве номера датума будет стоять "9999" или подобный номер, которого нет в таблице ..."
Вопрос к статье? Или как представить датум в WKT? Или к gdalsrsinfo ?
Выше я привел как должно быть в WKT корректно описан датум, на основании записи СК в формате MapInfo

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 17:13
dab
SergeyRyzhkov писал(а):... Вопрос к статье? Или как представить датум в WKT? Или к gdalsrsinfo ?
Вопрос: как представить в формате OGC WKT систему координат, имеющуюся в указанном ниже формате Mapinfo

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

"МСК-31 зона 2", 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 38.48333333333, 0, 1, 2250000, -5212900.56

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 17:18
SergeyRyzhkov

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

PROJCS["МСК-31 зона 2",
    GEOGCS["MI Custum",
        DATUM["MI Custum",
                      SPHEROID["Krassowsky 1940",6378245,298.3,AUTHORITY["EPSG","7024"]],
                      TOWGS84[23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22]
        ],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",38.48333333333],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",2250000],
    PARAMETER["false_northing",-5212900.56],
    UNIT["Meter",1.0]]

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 18:03
dab
Сергей, спасибо за ответы.
После некоторых манипуляций в QGIS, я остановился всё-таки на другом описании

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

PROJCS["unnamed",
    GEOGCS["Krassovsky, 1942",
        DATUM["unknown",
                SPHEROID["krass",6378245,298.3],
                TOWGS84[23.57,-140.95,-79.8,0,0.35,0.79,-0.22]
            ],
            PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",38.48333333333],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",2250000],
    PARAMETER["false_northing",-5212900.56],
    UNIT["Meter",1]]
Такое описание обеспечивает одинаковый результат по сравнению с пересчётом и в Mapinfo и в QGIS с использованием PROJ

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 30 мар 2015, 19:28
SergeyRyzhkov
Вы правы, для QGIS надо так описать
TOWGS84[23.57,-140.95,-79.8,0,0.35,0.79,-0.22]

А для MapInfo, если бы она понимала WKT
TOWGS84[23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22]

И дело не в правильности параметров или записи, а в том какой метод использует ПО для трансформации датумов (при 7-и параметрах ессно):

Position Vector или Coordinate Frame Rotation (пишу по памяти могу ошибиться)

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 31 мар 2015, 04:36
ericsson
См. http://proj.maptools.org/gen_parms.html секцию "Datum transformation to WGS84".
Собственно, на сколько я понимаю, в QGIS используется http://epsg.io/9606-method а в Mapinfo http://epsg.io/9607-method

Re: Трансформация MapInfo.prj в WKT и proj - [ОПУБЛИКОВАНО]

Добавлено: 31 мар 2015, 19:04
Boris
А давайте посмотрим, что думает Mapinfo по этому поводу:

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

Print CoordSysStringToWKT$("CoordSys Earth Projection 8, 9999, 3, 23.57, -140.95, -79.8, 0, -0.35, -0.79, -0.22, 0, 7, 38.48333333333, 0, 1, 2250000, -5212900.56")
выдает:

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

PPROJCS["_MI_0",
    GEOGCS["unnamed",
        DATUM["unnamed",
            SPHEROID["World Geodetic System of 1984, GEM 10C",6378137,298.257223563]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]
    ],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",38.48333333333],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",2250000],
    PARAMETER["false_northing",-5212900.56],
    UNIT["METER",1]
]
а для стандартной проекции 1001 эллипсоид указан верно, но +TOWGS=, все равно не осилил:

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

Print CoordSysStringToWKT$("CoordSys Earth Projection 8, 1001, 7, 38.48333333333, 0, 1, 2250000, -5212900.56")
получаем:

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

PROJCS["_MI_1",
    GEOGCS["Pulkovo 1942",
        DATUM["Pulkovo_1942",
            SPHEROID["Krassovsky - 1940/1948",6378245,298.300000000038,
                AUTHORITY["EPSG","7024"]],
            AUTHORITY["EPSG","6284"]
        ],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433],
        AUTHORITY["EPSG","4284"]
    ],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",38.48333333333],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",2250000],
    PARAMETER["false_northing",-5212900.56],
    UNIT["METER",1]
]

Re: Трансформация MapInfo.prj в WKT и proj

Добавлено: 21 апр 2015, 15:35
Донецков
Вы правы, для QGIS надо так описать
TOWGS84[23.57,-140.95,-79.8,0,0.35,0.79,-0.22]
А для MapInfo, если бы она понимала WKT
TOWGS84[23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22]
тогда вопрос, что нужно указывать при работе непосредственно с библиотекой proj.dll? (модуль который работает с этой библиотекой)
по моему должно быть: TOWGS84[23.57,-140.95,-79.8,0,0.35,0.79,-0.22]
проверял на известных данных, если добавить "-", то ошибки увеличиваются...
хотя встречается и такое:

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

+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 +ellps=krass +towgs84=23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22 +units=m +no_defs 
например тут

Re: Трансформация MapInfo.prj в WKT и proj

Добавлено: 21 апр 2015, 15:44
SergeyRyzhkov
PROJ.4 для трансформации датумов использует метод Position Vector (EPSG 9606)

MapInfo для трансформации датумов использует метод Coordinate frame rotation (EPSG 9607)

По ссылке выше явно указан метод http://epsg.io/9607-method , поэтому знаки с минусом

Re: Трансформация MapInfo.prj в WKT и proj

Добавлено: 21 апр 2015, 15:52
Донецков
Точно... указано, что
Method: Coordinate Frame Rotation (geog2D domain)
, и странно, что для всех приведенных параметров для РФ используется только он..., а например для Азербайджана есть и

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

Method: Position Vector transformation (geog2D domain)
:(

Re: Трансформация MapInfo.prj в WKT и proj

Добавлено: 19 сен 2017, 07:38
surh_rus
SergeyRyzhkov писал(а):
30 мар 2015, 19:28
Вы правы, для QGIS надо так описать
TOWGS84[23.57,-140.95,-79.8,0,0.35,0.79,-0.22]

А для MapInfo, если бы она понимала WKT
TOWGS84[23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22]

И дело не в правильности параметров или записи, а в том какой метод использует ПО для трансформации датумов (при 7-и параметрах ессно):
В файле res4 указано
Зона 1, 1.5 градусная
+proj=tmerc +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +lon_0=66.08333333 +lat_0=0 +k_0=1 +x_0=1500000 +y_0=-6000000
Вношу проекцию в QGIS. Все таки, с + или - эти параметры должны быть?

Re: Трансформация MapInfo.prj в WKT и proj

Добавлено: 19 сен 2017, 07:49
trir
исходя из:
PROJ.4 для трансформации датумов использует метод Position Vector (EPSG 9606)

MapInfo для трансформации датумов использует метод Coordinate frame rotation (EPSG 9607)
коэффициенты вращения нужно уможать на -1 при переходе от MapInfo к PROJ.4

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

res = Ellipsoid.toProj & " +towgs84=" & X & "," & Y & "," & Z & "," & (-1 * RotationX) & "," & (-1 * RotationY) & "," & (-1 * RotationZ) & "," & Scale_ppm