2

都市マップを作成するための 3 つの shp ファイルがあります。

  • land.shp (水上にある土地を描いたポリゴン)
  • road.shp (すべての道路を描画するポリゴン。一部の道路は「円形道路」であることに注意してください。つまり、真ん中に穴があります)
  • building.shp (すべての建物を描画するポリゴン)

QGISを使用して必要なマップをプロットし、次にggplotを使用してland.shpを再生し、次にroad.shpを使用してshpを構築して再度実行しました。以下は、私の問題を説明するための Google マップからの出力です。

ここに画像の説明を入力

青いドットを使用してタグ付けされた 2 つの橋と海 (私は海の shp を持っていません。背景を青に設定しただけです) の間にあることがわかります。R では、その領域は穴のはずですが、すべて灰色で塗りつぶされています。同じ問題は、土地である赤い点を使用してタグ付けされた灰色の領域と、道路に囲まれた建物である緑色の点を使用してタグ付けされた別の灰色の領域に移動します。

Road.shp の穴に陸/海/建物を配置します。R を使用して表示することはできません。

Rでroad.shpレイヤーの背後にあるものを表示する方法を教えてもらえますか? ありがとう。

4

1 に答える 1

11

穴のあるポリゴンを描画するための一般的な規則の 1 つは、次のとおりです。

  • 点が反時計回りに進む閉じた多角形は、ソリッド シェイプを形成します。
  • 点が時計回りに進む閉じた多角形はを形成します

それでは、いくつかのデータを作成してプロットしましょう。

library(ggplot2)

ids <- letters[1:2]

# IDs and values to use for fill colour
values <- data.frame(
  id = ids,
  value = c(4,5)
)

# Polygon position
positions <- data.frame(
  id = rep(ids, each = 10),
  #     shape      hole         shape        hole
  x = c(1,4,4,1,1, 2,2,3,3,2,   5,10,10,5,5, 6,6,9,9,6),
  y = c(1,1,4,4,1, 2,3,3,2,2,   5,5,10,10,5, 6,9,9,6,6)
)

# Merge positions and values
datapoly <- merge(values, positions, by=c("id"))

ggplot(datapoly, aes(x=x, y=y)) + 
  geom_polygon(aes(group=id, fill=factor(value))) +
  scale_fill_discrete("Key")

ここに画像の説明を入力

于 2012-08-20T07:40:00.270 に答える