Сбой чтения SXF(code 65537 not found in EPSG support files)

Ответить
glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Сбой чтения SXF(code 65537 not found in EPSG support files)

Сообщение glax2020 » 11 апр 2016, 09:45

Всех приветствую!

Тестирую на 2 км номенклатурных листах Росреестра 2015 и обнаружил 2 SXF (только 2 из 2826, по контрольному тесту), которые были зачитаны некорректно: M-45-10.sxf, N-37-18.sxf (переименовал тему на конкретное наименование, но этот SXF под это наименование уже не вписывается: сейчас проверил и это какой бракованный SXF, c ошибкой в контрольной сумме, а также в контрольном байте для Record, и Панорама после того как поругается выводит только один слой -- этот SXF по видимому можно проигнорировать - он бракованный).

Панорама же читает и экспортирует корректно M-45-10.sxf.

Пример некорректного чтения (GDAL, 1700-gdal-1-11-3; http://www.gisinternals.com/release.php):

c:ogr2ogr -s_srs EPSG:28415 -t_srs EPSG:4284 -f "MapInfo File" pm15.mid "m-45-10.sxf" LAYER1

Получаю сообщение об ошибках:

ERROR 6: EPSG PCS/GCS code 65537 not found in EPSG support files. Is this a valid EPSG coordinate system?
Warning 6: SXF. Given material may be rotated in the conditional system of coordinates

И SXF экспортируется, но как видится, некорректно:

Контрольный фрагмент:

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

Region 1
  15
-131.335976380239 0.119602414158009
-131.335979376758 0.120677852571469
-131.336200508721 0.122288184583817
-131.336644779113 0.126043871755315
-131.338159096623 0.123867851235697
-131.339672449204 0.121178350618528
-131.339656666996 0.119108173185741
-131.340097969466 0.117379174578505
-131.340747469037 0.116830324488909
-131.340525362021 0.114685007464698
-131.340304222085 0.113074694007884
-131.337915212715 0.113116398792024
-131.336615104679 0.114214086313234
-131.335967517512 0.115838378472849
-131.335976380239 0.119602414158009
    Pen (1,2,0)
    Brush (1,0,16777215)
Если сравнить с экспортом из Панорамы, который выглядит "логично", то связь установить с выводом из Панорамы не удается мне, и поэтому делаю вывод: GDAL экспортирует некорректно.

Контрольный фрагмент из Панорамы (самое начало LAYER1):

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

Region 1
15
87.056020 50.815041
87.056587 50.815043
87.057438 50.815226
87.059420 50.815594
87.058274 50.816847
87.056857 50.818100
87.055764 50.818087
87.054852 50.818453
87.054563 50.818990
87.053431 50.818807
87.052580 50.818624
87.052599 50.816646
87.053177 50.815570
87.054033 50.815034
87.056020 50.815041
Pen (1,2,0)
Brush (1,12303291,0)
-------------------

Реальная проверка осуществлялась на программе, написанной на основе DGAL драйвера, от 2014 (в смысле DGAL от 2014, а базовый драйвер от 2012, но я его капитально переработал в отношении сборки, и частично кода). То в этом случае, ошибка выглядит внешне более критично ибо получаю экспорт типа как (вообще то выглядит очень странно с " -1.#IND"...):

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

Region 1
  15
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
-1.#IND -1.#IND
    Pen (1,2,0)
    Brush (1,0,16777215)  
и в логах сообщение об ошибке:

CPLError: EPSG PCS/GCS code 65537 not found in EPSG support files. Is this a valid
EPSG coordinate system?
ERROR 6: EPSG PCS/GCS code 65537 not found in EPSG support files. Is this a valid
EPSG coordinate system?
Mon Apr 11 09:04:19 2016: CPLError: SXF. Given material may be rotated in the conditional system of coordinates

а также

Mon Apr 11 09:04:20 2016: CPLError: No translation for an empty SRS to PROJ.4 format is known.
ERROR 6: No translation for an empty SRS to PROJ.4 format is known.

Если ли надежда это победить с помощью GDAL?

Ваши советы и рекомендации очень приветствуются. Спасибо.
Последний раз редактировалось glax2020 04 май 2016, 19:03, всего редактировалось 4 раза.

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2227
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1500
Откуда: Казань

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение Игорь Белов » 11 апр 2016, 09:59

Экспортируйте свои файлы в TXF, откройте в текстовом редакторе и сравните заголовки (проекция, единицы, порядок следования координат) и сами данные.
The purpose of computing is insight, not numbers

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение glax2020 » 11 апр 2016, 10:19

Большое спасибо за совет, я это обязательно постараюсь сделать на днях (надо на некоторое время переключиться на другую работу).

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение glax2020 » 11 апр 2016, 11:22

ErnieBoyd писал(а):Экспортируйте свои файлы в TXF, откройте в текстовом редакторе и сравните заголовки (проекция, единицы, порядок следования координат) и сами данные.
В прочем отличие есть: в "хорошем" SXF есть дополнительный параметр:

P113 400.000000


Сбойный SXF

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

.SXF   4.0
   
P000   БАЛЫКЧА
   
P001   0.M-45-10
   
P002   1
   
P101   0.88430015 1.51843645
P102   0.89593568 1.51843645
P103   0.89593568 1.53588974
P104   0.88430015 1.53588974
   
P109   5615102.717933 15500000.000000
P110   5689269.496932 15500000.000000
P111   5689744.392648 15569693.886988
P112   5615579.951194 15570699.932254
   
P116   1
P117   1
P119   1
   
P207   200000
   
P301   20010514
P307   20010514
P302   1
P303   1
   
P620   1.51843645
P621   0.00000000
P622   0.00000000
P623   0.00000000
P624   0.00000000
P625   0.00000000
P626   0.00000000
P627   0.00000000
P628   1.00000000
P629   0.00000000
.DAT   11013
   
.OBJ   71111120   SQR
.KEY   12305
15
5631610.06   15503948.11
5631610.36   15503988.11
5631630.76   15504048.01
5631671.76   15504187.71
5631811.16   15504106.81
5631950.46   15504006.82
5631948.96   15503929.82
5631989.56   15503865.52
5632049.36   15503845.12
5632028.86   15503765.32
5632008.46   15503705.42
5631788.46   15503706.92
5631668.76   15503747.71
5631609.16   15503808.11
5631610.06   15503948.11
.OBJ   71111120   SQR
.KEY   12306
Соседний "хороший" SXF:

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

.SXF   4.0
   
P000   ОНГУДАЙ
   
P001   0.M-45-09
   
P002   1
   
P101   0.88430015 1.50098316
P102   0.89593568 1.50098316
P103   0.89593568 1.51843645
P104   0.88430015 1.51843645
   
P109   5615580.000000 15429300.100000
P110   5689744.400000 15430306.100000
P111   5689269.500000 15500000.000000
P112   5615102.700000 15500000.000000
   
P116   1
P117   1
P119   1
   
P207   200000
   
P113   400.000000
   
P301   20010514
P307   20010514
P302   1
P303   1
   
P620   1.51843645
P621   0.00000000
P622   0.00000000
P623   0.00000000
P624   0.00000000
P625   0.00000000
P626   0.00000000
P627   0.00000000
P628   1.00000000
P629   0.00000000
.DAT   9601
   
.OBJ   71111110   SQR
.KEY   7511
11
5625331.07   15429432.34
5624659.08   15429423.22
5624916.06   15429721.60
5624914.16   15430001.61
5624992.76   15430202.11
5625073.35   15430262.61
5625112.26   15430282.91
5625273.06   15430164.01
5625354.26   15429984.51
5625355.76   15429764.61
5625331.07   15429432.34
.OBJ   711111
Последний раз редактировалось glax2020 11 апр 2016, 16:23, всего редактировалось 5 раз.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение glax2020 » 11 апр 2016, 12:57

glax2020 писал(а):ERROR 6: EPSG PCS/GCS code 65537 not found in EPSG support files. Is this a valid EPSG coordinate system?
Warning 6: SXF. Given material may be rotated in the conditional system of coordinates
Одно расхождение нашел и очень серьезное, и соответствующее основному Warning:

В том SXF в котором корректно идет обработка (M-45-09.sxf) параметр $EPSG=0,

а в том где неправильно (M-45-10.sxf) параметр $EPSG=65537 (!)

и именно про этот параметр сообщается " EPSG PCS/GCS code 65537 not found in EPSG support files. Is this a valid EPSG coordinate system?" !!!

Как этот "EPSG PCS/GCS code 65537" можно внести в "EPSG support files" ???

Или как обнулить параметр $EPSG и можно ли это делать в SXF? Физически? ( поможет ? )


что касается программного кода, то это только справочная информация и параметр выводится только в лог (в файле "ogr_sxfdatasource.cpp"):

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

VSIFSeekL(fpSXF, 100, SEEK_SET);  
       GUInt32 mSM; 
       VSIFReadL(&mSM, 4, 1, fpSXF);	      // 104
        fprintf(glushko_sxf_deb, "$EPSG=%d\n", mSM);   


glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение glax2020 » 11 апр 2016, 13:27

Еще нашел отличия, т.е. параметры которые присутствуют в "хорошем" SXF (M-45-09.sxf), и отсутствуют в "плохом" SXF (M-45-10.sxf), т.е. драйвер в тот программный код не заходит (ogr_sxfdatasource.cpp):

$dfCoeff=10.000000

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

double dfCoeff = double(passport.stMapDescription.dfScale) / passport.stMapDescription.nResolution;
    
    if ( glushko_sxf_deb != NULL ) {
           fprintf(glushko_sxf_deb, "$dfCoeff=%f\n", dfCoeff);      
        }
$dfCenterLongEnv=86.500000
$nZoneEnv=15

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

double dfCenterLongEnv = passport.stMapDescription.stGeoCoords[1] + fabs(passport.stMapDescription.stGeoCoords[5] - passport.stMapDescription.stGeoCoords[1]) / 2;

        int nZoneEnv = (int)((dfCenterLongEnv + 3.0) / 6.0 + 0.5);
        
         panorama_flag = true;   
if ( glushko_sxf_deb != NULL ) {
           fprintf(glushko_sxf_deb, "$dfCenterLongEnv=%f\n", dfCenterLongEnv);  
           fprintf(glushko_sxf_deb, "$nZoneEnv=%d\n", nZoneEnv);      
        }
$EPSG_CODE=28415
$nEPSG5a=15500000.000000

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

 if (nZoneEnv > 1 && nZoneEnv < 33)
        {
            int nEPSG = 28400 + nZoneEnv;
            
            if ( glushko_sxf_deb != NULL ) {
            // gdal/data/pcs.csv	
             fprintf(glushko_sxf_deb, "$EPSG_CODE=%d\n", nEPSG);  
        	 lock_panorama = true;
        	  
        	  adfPrjParams[7] = nZoneEnv;

            double adfPrjParams5 = adfPrjParams[5];
            if (adfPrjParams[5] == 0)//False Easting
            {
                if (passport.stMapDescription.Env.MaxX < 500000)
                    adfPrjParams[5] = 500000;
                else
                    adfPrjParams[5] = nZoneEnv * 1000000 + 500000;
            }       
            
            if ( glushko_sxf_deb != NULL ) {
             fprintf(glushko_sxf_deb, "$nEPSG5a=%f\n", adfPrjParams[5]);      
            } 
            adfPrjParams[5] = adfPrjParams5;
        	  
            //      passport.stMapDescription.pSpatRef = new OGRSpatialReference();
          	//      OGRErr eErr1 = passport.stMapDescription.pSpatRef->importFromPanorama(anData[2], anData[3], anData[0], adfPrjParams);

            lock_panorama = false;
        }    
            passport.stMapDescription.pSpatRef = new OGRSpatialReference();
            OGRErr eErr = passport.stMapDescription.pSpatRef->importFromEPSG(nEPSG);
            SetVertCS(iVCS, passport);
            return eErr;
        }

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение glax2020 » 11 апр 2016, 13:55

glax2020 писал(а): Как этот "EPSG PCS/GCS code 65537" можно внести в "EPSG support files" ???

Или как обнулить параметр $EPSG и можно ли это делать в SXF? Физически? ( поможет ? )

Посмотрел в файле "gcs.csv" ('это список "EPSG support files"?) и там нет 65537, а "COORD_REF_SYS_CODE" принимают значения от 3819 до 6135.

Примечание: 65537 = 10001 (шестнадцатиричное), т.е. похоже это какое то служебное значение?

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

Re: Сбой чтения SXF(code 65537 not found in EPSG support fil

Сообщение Александр Мурый » 11 апр 2016, 14:08

Можно определить, какая система координат у ваших данных, и задать код EPSG:65537 в нотации proj.4 где-то в "служебных файлах" EPSG.
Как вариант, можно поискать описание нужной вам СК здесь.
Редактор материалов, модератор форума

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой чтения SXF(code 65537 not found in EPSG support fil

Сообщение glax2020 » 11 апр 2016, 14:13

Буду пытаться осмыслить как можно было бы воспользоваться Вашей ссылкой. И также буду пробовать искать, где может находиться нотация " proj.4" в "служебных файлах" EPSG...

Спасибо

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

Re: Сбой чтения SXF(code 65537 not found in EPSG support fil

Сообщение Александр Мурый » 11 апр 2016, 14:18

glax2020 писал(а):Буду пытаться осмыслить как можно было бы воспользоваться Вашей ссылкой. И также буду пробовать искать, где может находиться нотация " proj.4" в "служебных файлах" EPSG...
Я ещё раз перечитал тему и понял, что сказал очевидный бред. Это не поможет.
Под "нотацией" я имел в виду "proj.4 string" — тип записи СК/проекции, которую использует библиотека PROJ.4, и вслед за ней много какое ПО.
Редактор материалов, модератор форума

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой чтения SXF(code 65537 not found in EPSG support fil

Сообщение glax2020 » 11 апр 2016, 16:20

Александр Мурый писал(а):
glax2020 писал(а):Буду пытаться осмыслить как можно было бы воспользоваться Вашей ссылкой. И также буду пробовать искать, где может находиться нотация " proj.4" в "служебных файлах" EPSG...
Я ещё раз перечитал тему и понял, что сказал очевидный бред. Это не поможет.
Под "нотацией" я имел в виду "proj.4 string" — тип записи СК/проекции, которую использует библиотека PROJ.4, и вслед за ней много какое ПО.
спасибо

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение glax2020 » 11 апр 2016, 16:22

glax2020 писал(а): В прочем отличие есть: в "хорошем" SXF есть дополнительный параметр:

P113 400.000000
Пока не нашел как связаны "P113 400.000000" и описание структуры этого SXF (и мне кажется, что в лог я вывожу все значения из заголовка SXF и "400.000" там нет, а также по всей видимости P113 -- это не отступ в структуре SXF, а нечто другое. Может быть некий характерный параметр с таким специальным названием, возможно вычисляемый? -- как бы то ни было, пока с эти параметром не разобрался :(

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: Сбой в чтении SXF (Is this a valid EPSG coordinate syste

Сообщение glax2020 » 11 апр 2016, 17:18

Пока сделал "по простому" и вроде работает, "физически", на уровне файла SXF подменил байты соответствующие EPSG (100 - 103) на значение 0, в случае "ошибочного" 65537.

Проверка по контрольному участку, по GDAL:

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

Region  1
  15
87.056072 50.815228
87.056639 50.815231
87.057489 50.815414
87.059472 50.815781
87.058326 50.817035
87.056908 50.818288
87.055816 50.818275
87.054904 50.81864
87.054615 50.819178
87.053482 50.818994
87.052632 50.818811
87.052651 50.816834
87.053229 50.815757
87.054085 50.815221
87.056072 50.815228
    Pen (1,2,0) 
    Brush (1,0,16777215)
    Center 87.056052 50.817199
Проверка по контрольному участку, по Панораме:

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

Region 1
15
87.056020 50.815041
87.056587 50.815043
87.057438 50.815226
87.059420 50.815594
87.058274 50.816847
87.056857 50.818100
87.055764 50.818087
87.054852 50.818453
87.054563 50.818990
87.053431 50.818807
87.052580 50.818624
87.052599 50.816646
87.053177 50.815570
87.054033 50.815034
87.056020 50.815041
Pen (1,2,0)
Brush (1,12303291,0)
Region 1
вроде точность нормальная (обычная), подумаем как лучше "встроить" коррекцию и сделаем.

спасибо

Ответить

Вернуться в «GDAL/OGR»

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

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