Esriシェープファイルの一部のみをRに読み込みます


9

非常に大きなESRIシェープファイル(> 8000ポリゴン、.shpファイルは> 32MB)があります。これをWindows 7のRに読み込みます。

私はrgdalとreadOGR()に精通しています。ただし、このサイズのシェープファイルでは、シェープファイル全体をメモリに読み込むのは非常に時間がかかります。さらに、シェープファイルに含まれる8,000のいくつかのクラスター化されたポリゴン(<100)のみに関心があります。これを実行する必要があるプロセスは非常に反復的です。つまり、シェープファイルを何度もロードする必要があるため、現在は非常に低速です。

したがって、プロセスを加速するために、シェープファイルの一部のみを読み取ることができるかどうか疑問に思っています。このような大量のデータを読み込んで、そのほとんどを破棄するのは実際的ではないようです。


どのプラットフォームを使用していますか?ArcGISにアクセスできる場合、ArcPyでスクリプトを実行してサブセットを選択し、PythonスクリプトからRプロセスを実行するとします。これは間違いなく可能です... PythonからRコードを実行するためのGoogle検索を実行します。
GeoJohn

3
たぶんR.でその上にあなたのデータの一部があなたにとって重要であることを新しいシェープファイルに書き出し、その後、仕事をしてみてください
AMI

おそらくsfで動作します。ただし、saveRDSを使用してRワークスペース形式に保存します。SQLiteなどに一般的に保存する方法はいくつかありますが、それが必要であるとは
思えませ

回答:


7

頭に浮かぶのは、新しい「sfr」ライブラリとそれに関連する単純な機能クラスをサブセット化に活用することだけです。SFRライブラリは GitHubの上で現在利用可能であり、ここにあるチュートリアルあなたが始めるために。

サブセットクエリに基づいてデータをストリーミングできるとは思いませんが、これは少なくとも読み取り時間を大幅に高速化し、R空間クラスの未来と思われます

別のオプションは、データベース(PostGISなど)に空間データを保存し、データベースからクエリを実行することです。これは、大きなデータを処理する非常に効率的な方法です。


2
sfパッケージバージョン0.2(2016年10月26日)以降CRANで利用可能である:cran.r-project.org/web/packages/sf/index.html
RCS

1

QGISなどのGISを使用し、必要な機能を選択することは良いアプローチだと思います。
結果をマージして戻す必要がある場合は、処理したくない7900ポリゴンを含む1つのファイルを作成し、100個のポリゴンを処理して、処理後に再結合することができます。


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