创建PDF场地规划shape文件绘制与数据GGPLOT2

问题描述 投票:1回答:1

使用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/

谢谢!

r ggplot2 gis spatial cad
1个回答
2
投票

这似乎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_sfggplot映射这一点,但是当它失败与错误它绘制什么:

> 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到文本转换器来获取文本及其位置,然后匹配了多边形特征的位置,但可能不会因为工作坐标系可能不匹配....所以它可能是更容易做手工。加载PDF到QGIS(这应该工作,因为它使用OGR),然后在属性表中创建新列,并经过每一个加入的商店名称和信息。然后,你可以保存到一个shape文件(或更好,一个geopackage),你可以读入R和与ggplot地图...

© www.soinside.com 2019 - 2024. All rights reserved.