Я создаю карты походов / пеших прогулок в формате PDF. В качестве дополнительной функции я добавляю в PDF-файл область просмотра со словарем геопространственных измерений. Это необходимо для соотнесения позиций на странице с фактическими географическими координатами.
Я следую документации Adobe на странице https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/adobe_supplement_iso32000.pdf. В простом сценарии это работает нормально: Acrobat с включенным инструментом геопространственного местоположения показывает правильные координаты положения мыши.
По некоторым причинам, связанным с фактической печатью PDF-файлов, я хочу повернуть карту на странице. Насколько я понимаю документ спецификации PDF 7 (раздел 8.8), все, что мне нужно сделать, это предоставить повернутую главную диагональ в BBox словаря области просмотра моей карты. И я этим занимаюсь. (Помимо поворота изображения)
В повернутой версии карты Acrobat правильно распознает главную диагональ прямоугольника. Однако для двух других углов соотношение между географическими (широта / долгота) и геометрическими (x, y) координатами меняется местами.
Кто-нибудь знает, что не так с моим файлом PDF? Примером вертикального типа является https://mdedoes.home.xs4all.nl/maarssen-25000.pdf, а повернутый - https://mdedoes.home.xs4all.nl/maarssen-25000-r.pdf.
Для полноты картины я включил список окон просмотра страницы. (Извлечено из фактического файла с PDFBox)
VP[0].Name=n:Maarssen
VP[0].BBox[0]=f:42.5197
VP[0].BBox[1]=f:552.7559
VP[0].BBox[2]=f:325.98428
VP[0].BBox[3]=f:42.5197
VP[0].Measure:o.Bounds[0]=f:0.0
VP[0].Measure:o.Bounds[1]=f:0.0
VP[0].Measure:o.Bounds[2]=f:0.0
VP[0].Measure:o.Bounds[3]=f:1.0
VP[0].Measure:o.Bounds[4]=f:1.0
VP[0].Measure:o.Bounds[5]=f:1.0
VP[0].Measure:o.Bounds[6]=f:1.0
VP[0].Measure:o.Bounds[7]=f:0.0
VP[0].Measure:o.GCS:o.Type=n:GEOGCS
VP[0].Measure:o.GCS:o.EPSG=i:4289
VP[0].Measure:o.GCS:o.WKT=s:GEOGCS["Amersfoort", Etc
VP[0].Measure:o.DCS:o.Type=n:PROJCS
VP[0].Measure:o.DCS:o.EPSG=i:28992
VP[0].Measure:o.DCS:o.WKT=s:PROJCS["Amersfoort / RD New", Etc
VP[0].Measure:o.GPTS[0]=f:52.151005
VP[0].Measure:o.GPTS[1]=f:4.9930854
VP[0].Measure:o.GPTS[2]=f:52.173477
VP[0].Measure:o.GPTS[3]=f:4.9928865
VP[0].Measure:o.GPTS[4]=f:52.17368
VP[0].Measure:o.GPTS[5]=f:5.0586777
VP[0].Measure:o.GPTS[6]=f:52.151207
VP[0].Measure:o.GPTS[7]=f:5.058843
VP[0].Measure:o.LPTS[0]=f:0.0
VP[0].Measure:o.LPTS[1]=f:0.0
VP[0].Measure:o.LPTS[2]=f:0.0
VP[0].Measure:o.LPTS[3]=f:1.0
VP[0].Measure:o.LPTS[4]=f:1.0
VP[0].Measure:o.LPTS[5]=f:1.0
VP[0].Measure:o.LPTS[6]=f:1.0
VP[0].Measure:o.LPTS[7]=f:0.0
VP[0].Measure:o.PDU[0]=s:M
VP[0].Measure:o.PDU[1]=s:SQM
VP[0].Measure:o.PDU[2]=s:DEG
VP[0].Measure:o.Subtype=n:GEO
VP[0].Measure:o.Type=n:Viewport