создать шейп-файл из pdf-плана сайта для построения графика данных с помощью ggplot2 - PullRequest
0 голосов
/ 05 февраля 2019

Использование ggplot2 Я пытаюсь наложить информацию на PDF-файлы планов наборов свойств, таких как приведенная ниже.Идея состоит в том, чтобы раскрасить различные наборы кода на основе определенных метрик, связанных с каждым набором.

https://business.simon.com/assets/mall/1324/LEASING_PLAN/7964_FLORIDA%20KEYS%20OUTLET%20MKTPLACE_CurrentWebLeasePlan-1_1.pdf

Может кто-нибудь порекомендовать, как я могу создать представление пространственных данных PDF-файла, который помечает человека?люкс?В идеале я хотел бы сделать это без коммерческого программного обеспечения, такого как AutoCAD.

Для справки, в этом руководстве показано, как создавать графики, когда у вас есть представление карты в виде файла формы.

http://www.kevjohnson.org/making-maps-in-r/

Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

Похоже, что в этом PDF-файле содержится достаточно геопространственной информации для чтения библиотекой OGR, доступ к которой можно получить с помощью пакета sf:

> library(sf)
> plan = st_read("./7964_FLORIDA KEYS OUTLET MKTPLACE_CurrentWebLeasePlan-1_1.pdf")
Reading layer `~Remaining_objects' from data source `/home/rowlings/Downloads/SO/7964_FLORIDA KEYS OUTLET MKTPLACE_CurrentWebLeasePlan-1_1.pdf' using driver `PDF'
Simple feature collection with 998 features and 0 fields
geometry type:  GEOMETRY
dimension:      XY
bbox:           xmin: 71.1875 ymin: 52.47917 xmax: 2478.271 ymax: 1613.917
epsg (SRID):    NA
proj4string:    NA

В нем 998 различных функций - строки,полигоны и т. д. Вы можете построить его:

> plot(plan$geometry)
Error in CPL_geos_is_empty(st_geometry(x)) : 
  Evaluation error: IllegalArgumentException: Invalid number of points in LinearRing found 3 - must be 0 or >= 4.

и пока игнорировать ошибку.Однако система координат не привязана к земле, ее начало (0,0) слева внизу:

> axis(1)
> axis(2)

enter image description here

ЕслиВы хотите, чтобы вы могли извлечь части плана и просто нарисовать их:

> plot(plan[1:100,])

enter image description here

, но нет метаданных о том, какие функции есть какие вещи.Все, что у вас есть, это геометрия.«Люкс» - это всего лишь одна комната?У вас будет

. Вы можете использовать geom_sf из ggplot, чтобы отобразить это, но когда это не удается с этой ошибкой, оно ничего не отображает:

> ggplot(plan) + geom_sf()
Error in CPL_geos_is_empty(st_geometry(x)) : 
  Evaluation error: IllegalArgumentException: Invalid number of points in LinearRing found 3 - must be 0 or >= 4.

Я отследил ошибку дономер 638, поэтому исключите его, если вы хотите использовать ggplot:

> ggplot(plan[-638,]) + geom_sf()
> 

. Я думаю, это столько, сколько вы можете автоматически выбрать из этого PDF.Если вы хотите закодировать названия областей из текста в PDF, это будет сложно.Текст не читается OGR, и я могу думать только об одном: использовать конвертер PDF-to-Text, чтобы получить текст и его местоположение, а затем сопоставить местоположения с объектами многоугольника, но это может не произойти.работать, потому что системы координат, скорее всего, не совпадают .... Так что это может быть проще сделать вручную.Загрузите PDF-файл в QGIS (который должен работать, поскольку он использует OGR), а затем создайте новые столбцы в таблице атрибутов и просмотрите каждый из них, добавив названия магазинов и информацию.Затем вы можете сохранить в шейп-файл (или лучше в геопакет), который вы можете прочитать в R и отобразить с помощью ggplot ...

...