1

シミュレーテッド アニーリング アルゴリズムを使用して、設計図面の自動ラベル配置の問題を解決しようとしています。pointLabel()Rのライブラリで関数に出くわしましmaptoolsた。ただし、関数はラベルを最適に配置できますが、下にある図面を考慮していないことがわかりました。ラベルが描画線と重ならないようにします。これを達成する方法はありますか?また、私のラベルは幅と高さの点でさまざまなサイズです。ラベルの原点から離れた各ラベルの寸法を指定する方法はありますか?

私の作品を再現するために必要な csv ファイルをアップロードする方法がわかりませんが、ここにドロップボックス リンクhttps://www.dropbox.com/s/85qqs4nlvm4crck/TextBoxData.rar?dl=0があり、これが私のコードです:

library(dplyr)
library(maptools)    

#Known Size of Sheet
xmin <- -357.7
xmax <- 19.3
ymin <- -90.2
ymax <- 159.7

#Read in the data
linescoords <- read.csv("Linecoords.csv")

#Coordinates translation
linescoords$X  <- linescoords$X - xmin
linescoords$Y <- linescoords$Y - ymin

#Plot the figure
xlimit <- c(-10, abs(xmin-xmax)+10 )
ylimit <- c(-10, abs(ymin-ymax)+10 )
plot(linescoords$X, linescoords$Y, "p", xlim=xlimit, ylim = ylimit)

i <- seq(1, nrow(linescoords), 2)
for(x in i){
segments(linescoords$X[x], linescoords$Y[x],
         linescoords$X[x+1], linescoords$Y[x+1])
}


#Read in text labels data
labels <- read.csv("labels.csv")

#Text labels Coordinates translation
labels$x <- labels$x - xmin
labels$y <- labels$y - ymin
labels$xminl <- labels$xminl - xmin
labels$xmaxl <- labels$xmaxl - xmin
labels$yminl <- labels$yminl - ymin
labels$ymaxl <- labels$ymaxl - ymin

#Point of Origin for labels
points(labels$x, labels$y, pch=16, col="red")

#Width & Height of labels
labels <- labels %>% mutate(width=abs(xminl-xmaxl), height=abs(yminl-ymaxl))

pointLabel(labels$x, labels$y, labels$Point)

どんな洞察も役に立ちます。ありがとう。

4

0 に答える 0