Rでのosmファイルのシェープファイル(またはデータフレーム)への変換


15

今日、オーストラリアの道路形状ファイルを探していました。最終的にGeofabrikに行きました。Open Street Mapには.osm形式のデータがあります。しかし、彼らは.shpオーストラリアのためにそれを持っていません。

可能であれば、Rを使用するようにosmファイルを変換しますshapefiles。検索しましたが、まだ解決策が見つかりませんでした。これに何か方法はありますか?あるいは、osmファイルをRに読み込み、データをデータフレームに変換して、図を使用して図形を描画することは可能ggplot2ですか?

との2つのシェープファイルを使用して、NZの次の図を作成maptoolsしましたggplot2。理想的には、オーストラリアの同様の地図を作成したいと思います。

ここに画像の説明を入力してください


道路ファイルで何をしたいですか-地図上に表示するだけですか、それとも何らかの分析を行いますか?シェープファイルにはいくつかの制限があります。別の形式を使用した方が良いかもしれません!
シンバマング14年

@Simbamangu最初に地図上に道路を表示したいです。シェープファイルでない場合、Rで使用することをお勧めしますか?
ジャズーロ14年

回答:


10

これはRソリューションではありませんが、Quantum GIS(QGIS)はあなたが望むものを達成するための素晴らしい方法です。

.osmファイル(ベクターの追加ツール)をロードし、目次で右クリックしてESRIシェイプファイルとして保存するだけです。

QGISはこのような大きな抽出でクラッシュする可能性があるため、これを回避するには、OverPass APIなどのOSMツールを使用して、バウンディングボックスを使用して必要なもののみをダウンロードできます。

高架-ターボ APIは、もあるその上で短いチュートリアル抽出物を得ることが可能です。ここ!

Overpass-Turboのウィザードを使用して、highway = primaryおよびhighway = primary_linkタグ(OSM高速道路のタグ付けスキームはこちらをご覧ください)に基づく簡単な例を実行しました。下の画像はビクトリアの結果です。

次に、データをGeoJSONとしてエクスポートし、QGISにロードして、結果をシェイプファイルとして保存しました。(2番目の画像は、QGISにロードされたラインとポリゴンを示しています)

もう1つの方法は、そのエリアのPBFまたはOSMファイルをGeoFabrikからダウンロードし、Osmosisを使用してhighway = *タグを抽出することでデータをサブセット化することです。定期的にデータを更新する場合は、Osmosisを使用することをお勧めします。1回限りの抽出である場合、メモリ制限のために小さな境界ボックスで行う必要がある場合でも、Overpassはおそらく簡単です。同じOverpassクエリを適用して、異なる境界ボックスを実行します。

Highway = Primary OverPass-Turboの結果

QGISにロードされたエクスポートされたGeoJSON


2
Natはごく簡単です。australia.osm.pbfは195MBの大きさ(圧縮)なので、すべてのデータを読み込むためにQGISをクラッシュさせると思います。QGISにデータを供給する前に、osmfilterまたはosmosisで目的の道路情報をフィルタリングすることをお勧めします。
AndreJ

有効な@Andreは、答えを適切に更新します!
マークキューピット14年

1
私の仕事を処理する別の方法を教えてくれてありがとう。あなたから何か新しいことを学びました。乾杯。
ジャズーロ14年

10

@jazzurro、あなたはRでこれを完全に行うことができます、osmarパッケージを調べてください!osmarのドキュメント(osmar.r-forge.r-project.org/RJpreprint.pdf)を読んでください。11ページで、munich.osmの対応するタグによって道路/高速道路を抽出するための詳細な例を見つけることができます!オーストラリアの惑星ファイルからデータを引き出して抽出した後、希望の形式に変換できます!

編集:

一部のコメンテーターが例の欠如について不平を言っていたので、ドキュメントから例を投稿します。私見では、ここで既存の例を再入力する必要はないでしょうか?

library(maptools)
library(osmar)
url <- "http://osmar.r-forge.r-project.org/"
file <- "muenchen.osm.gz"
download.file(sprintf("%s%s", url, file), file)
unzip("gzip -d muenchen.osm.gz") # gzip is linux only, on windows I unzipped this manually with 7zip!

src <- osmsource_osmosis(file = "muenchen.osm")
muc_bbox <- center_bbox(11.575278, 48.137222, 3000, 3000)
muc <- get_osm(muc_bbox, src)
muc
summary(muc)

hw_ids <- find(muc, way(tags(k == "highway")))
hw_ids <- find_down(muc, way(hw_ids))
hw <- subset(muc, ids = hw_ids)

plot(muc)
plot_ways(hw, add = TRUE, col = "green")

# convert to spatial object (SpatialLinesDataFrame)
# and save to whatever format you like..
hw_line <- as_sp(hw, "lines")

ここに画像の説明を入力してください


リンクありがとうございます。パッケージに関連する1つまたは2つの投稿を見ました。しかし、パッケージが.osmファイルをデータフレームに変換できるかどうかはわかりませんでした。簡単に見てみると、.osmファイルをデータフレームに直接変換する方法はないようです。それともありますか?
ジャズロ14年

osmarのドキュメント(osmar.r-forge.r-project.org/RJpreprint.pdf)をお読みください。11 ページで、munich.osm!オーストラリアの惑星ファイルからデータを引き出して抽出した後、希望の形式に変換できます!ps:osm-filesの処理に対応していなかったため、OPから他のリンクを削除しました。
Kay

1
これは質問に対する答えを提供しません。著者に批判や説明を求めるには、投稿の下にコメントを残してください。
SS_Rebelious 14年

@SS_Rebelious、明らかに答えを提供します。あなたが何を言おうとしているのかわかりません。
ケイ14年

@Kayこの回答を改善するために、osmarパッケージを使用して目的の結果を取得する方法を説明できます。
ザカリー14年

7

OK、正解はここにあります:

  • rgdal(バージョン> = 1.0.4)がインストールされていることを確認してください

    install.packages('rgdal')
    packageVersion('rgdal')
    
    [1]1.0.4
  • gdal(バージョン> = 1.11.0)がインストールされていることを確認してください

    library(rgdal)
    getGDALVersionInfo()
    
    [1] "GDAL 1.11.2, released 2015/02/10"
  • gdalExpat / OSMおよびSQLiteサポートでコンパイルされていることを確認してください。

    c('SQLite', 'OSM') %in% ogrDrivers()$name
    
    [1] TRUE TRUE
  • シェープファイルとして保存するレイヤーを知っていることを確認してください。

    ogrListLayers('filename.osm.pbf')
    
    [1] "points" "lines" "multilinestrings" "multipolygons"
    attr(,"driver")
    [1] "OSM"
    attr(,"nlayers")
    [1] 4
  • 準備ができました:

    osm <- readOGR('filename.osm.pbf', 'lines')
    writeOGR(osm, 'myshapedir', 'mylayer', driver = 'ESRI Shapefile')

経由でファイルを読んだら readOGRガイドラインに従って、でプロットする方法を学びますggplot2

あなたも読むことができることを注意.osmXML形式のファイルは、ちょうど彼らが圧縮された(つまり、拡張子があるされていないことを確認して.osmいない.osm.bz2)しかし、彼らは非常に小さいので、.osm.pbfファイルを使用するようにしてください。


ちなみに、最新のコンパイル済みのrgdalWindows用には0.9から3およびリターンであるFALSE FALSEためにc('SQLite', 'OSM') %in% ogrDrivers()$name
aaryno

以下のためにrgdalあなたがソースパッケージを試すことができます(cran.r-project.org/src/contrib/rgdal_1.0-4.tar.gz)またはoldrelバイナリ(cran.r-project.org/bin/windows/contrib/3.1/ rgdal_1.0-4.zip)。GDALWindowsバイナリについては、GDALプロジェクトにバグレポートを提出し、Windows GDALバイナリでExpatおよびSQLiteサポートを有効にする必要があることをリクエストできます。
gkcn

または、WindowsのMinGWを使用して自分でビルドし、ExpatとSQLiteを有効にすることができます。trac.osgeo.org
gdal

1

osm2shp.ruでは、openstreetmapデータをシェープファイル形式でダウンロードできます。地域別のデータ:北および南アメリカ、オーストラリアおよびオセアニア、アフリカ、ヨーロッパおよびアジア。ダウンロード用の61層。「マップフィーチャ」条件によってフィルタリングされたデータ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.