Чтение векторных слоев Geospatial PDF и запись в шейп-файл с использованием python / R - PullRequest
0 голосов
/ 04 января 2019

Я уверен, что PDF - это геопространственный PDF, потому что я могу использовать инструмент геопространственных измерений Adobe Acrobat Reader и просматривать длинные значения широты при наведении курсора на файл при его открытии. Файл PDF

Он создан с использованием Esri ArcMap (я знаю это по метаданным). У меня нет доступа к оригинальным шейп-файлам, и задача состоит в том, чтобы экспортировать векторные слои (в частности, слой многоугольника) в шейп-файлы. Gdalinfo показывает это о файле:

   Driver: PDF/Geospatial PDF
   Files: CityMasterPlan.pdf
   Size is 7022, 4967
   Coordinate System is:
   PROJCS["WGS_1984_UTM_Zone_43N",
       GEOGCS["GCS_WGS_1984",
           DATUM["WGS_1984",
                SPHEROID["WGS_84",6378137.0,298.257223563]],
            PRIMEM["Greenwich",0.0],
            UNIT["Degree",0.0174532925199433]],
        PROJECTION["Transverse_Mercator"],
        PARAMETER["False_Easting",500000.0],
        PARAMETER["False_Northing",0.0],
        PARAMETER["Central_Meridian",75.0],
        PARAMETER["Scale_Factor",0.9996],
        PARAMETER["Latitude_Of_Origin",0.0],
        UNIT["Meter",1.0]]
    GeoTransform =
      783046.665618713, 0.8718736932027874, 0.0001382368909749281
      1440610.872932251, -0.0004378118742855751, -0.8734990288453748
    Metadata:
      CREATION_DATE=D:20171124160214+05'30'
      CREATOR=Esri ArcMap 10.5.0.6491

Хотя я могу читать метаданные файла, я не могу понять, как читать его векторные слои. Когда я использую `GetLayerByName ()`, я получаю не тип объекта.

Я могу экспортировать отдельные слои в отдельные tiff-файлы, используя gdal_translate. Но я этого не хочу.

Другие вещи, которые я просто попробовал: (1) Импортировать файл в Adobe Illustrator и экспортировать .dxf, который очень хорошо экспортировал векторную геометрию, однако геопространственная информация была потеряна. Возможно, Illustrator не может читать / записывать геоданные; (2) После экспорта tiff с использованием gdal_translate я полигонировал растр, но это было огромной потерей в деталях объекта.

В этой документации геопространственного PDF: https://www.gdal.org/frmt_pdf.html говорится, что gdal поддерживает векторное чтение PDF. Поэтому я считаю, что должен быть какой-то способ сделать это. Пока gdal.Open () читает файл, ogr.Open () выдает ошибку. Если бы OGR мог прочитать файл, может быть, он мог бы распознать векторный слой?

Я всегда использовал python с данными ГИС, но если есть путь через R, даже это было бы очень полезно. Я на грани своего ума, и любая помощь (даже полезная информация о структуре данных PDF) будет очень цениться.

...