x、y列のExcelファイルをシェープファイルに変換するにはどうすればよいですか?


26

x、y列のExcelファイルをポイントシェープファイルに変換するにはどうすればよいですか?

シェープファイルの正しい作成に加えて、いくらかオプションの要件がいくつかあります。

  1. 列の種類(Excelの書式指定子による)を保持する必要があります(特に日付型)
  2. 列名はヘッダーから取得する必要があります
  3. 私はなりたいと、コマンドラインからこれを行うには
  4. 3番目の列のポイントに異種の空間参照を含めることができれば、とても嬉しいです:)

回答:


24

GDALライブラリの一部であるOGR / GDALの使用をお勧めします。OGRは、XMLファイルを介した指定を可能にする仮想形式をサポートしています。ExcelワークシートをCSVに変換すると、VRTを生成してデータにアクセスできます。

次のようなものがあると仮定しますexample.csv

Lat,Long,Year,Name
34.0,-120.0,2010-05-01,Off Santa Rosa Island

example.vrt次のようにVRT を作成できます。

<OGRVRTDataSource>
    <OGRVRTLayer name="example">
        <SrcDataSource>example.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="Long" y="Lat"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

GDAL 1.7以降で<Field><OGRVRTLayer>、の内部の要素を使用して、次のように属性フィールドのデータ型をさらに指定できます。

    <Field name="date" src="Year" type="Date" />

シェープファイルは、Excelよりもデータ型の柔軟性が低いDBASE IV形式で属性を保存することに注意してください。VRTファイルを指定したら、通常のOGRツールチェーンを使用してデータをシェープファイルに変換できます。

ogr2ogr -f "ESRI Shapefile" example.shp example.vrt

残念ながら、#4は不可能です—シェープファイルの仕様では、単一の投影が許可されています(example.prj最後のステップの後に表示されます)。


この唯一の欠点は、<Field>タグを記述するために、プログラムで列のデータ型を把握する必要があることです。私は自分でそれを理解するだろうと思う:)
fmark

右。自動化されたソリューションが必要で、ArcGISにアクセスできる場合は、代わりに[XY座標の追加]ツール tinyurl.com/38jm55kを使用してこれを行うことができます。
scw

重要な考慮事項は、最初にExcelファイルをESRIシェープファイルに適した形式にすることです。列名、名前の長さ、およびXYの追加ツールを使用する場合、ESRIが原因となるフィールドタイプを自動化する方法に制限があります問題。webhelp.esri.com/arcgisdesktop/9.2/...
SPG

3
適切にフォーマットされたvrtファイルの構築を支援するオンラインサービス:vrtbuilder.appspot.com
マットウィルキー

9

QGIS (http://qgis.org)に付属のDelimited Textプラグインを使用して、テキストファイルをロードし、シェープファイルとして保存できます。


このツールを使用すると、パーサーエラーに悩まされることがよくあります。何かアドバイス?
fmark

1
具体的な例はありますか?
-gsherman

@fmark-これらのエラーも発生します。通常、MS Excelがcsvを処理しているため
です-dassouki

6

コマンドラインからではありませんが、ArcGIS App内でこれを行うことができます。9.3.1以降、XLSをArcMapに直接追加するだけです。XLSからXYイベントレイヤーを作成します(つまり、X、Y列を選択し、UR空間参照を設定します)。次に、このXYイベントレイヤーを新しい.shpにエクスポートします。これは、簡単なPython / VBAスクリプトまたはモデルビルダー。さらに情報が必要な場合は、この基本的なワークフローを喜んでお手伝いします。


1
Pythonを使用している場合は、コマンドラインからジオプロセシングツールを実行できます。
jswise

6

WebヘルプでXYデータの表示に関するヘルプページを探しましたが見つかりませんでしたが、プロセスは簡単です。

  1. [ データの追加](またはカタログウィンドウからドラッグアンドドロップ)を使用してワークシート(スプレッドシート内)を参照し、マップに追加します。
  2. 右クリックして、XYデータの表示を選択して使用し、イベントレイヤーを追加します
  3. 作成したイベントレイヤーを右クリックし、Data | Export Dataを使用してシェープファイルを作成します。

これを行うには、ArcGIS(for)DesktopのArcView(Basic)ライセンスレベルのみが必要です。


データの一部ではない一番上の列で何かする必要がありますか?
ゾラン

データの一部ではない2つの列はどれですか?説明した手順では、ポイントジオメトリを生成するために選択した長い/緯度の列を使用し、残りを属性として保存する必要があります。最善の方法は、試してみて、結果が期待どおりでない場合は、観察されたものと期待されたものを記述してください。
PolyGeo

私はトップを2つ間違えたと思います-そして、あなたはトップの行(見出しの)を意味すると仮定しています。これらは、データの追加後にフィールド名になるだけです。
PolyGeo

これがまだ当てはまるかどうかはわかりませんが、以前はExcelファイルのヘッダー名にスペースが含まれていたため、Add XYの頭痛の種でした。
チャドクーパー

1
ExcelファイルをArcGISに直接読み込むと、うまくいかない場合を除き、非常にうまく機能します!注目すべき点:日付が壊れ、数字が切り捨てられている。最初のトラブルシューティング手順は、常にテキストとして定義されたすべての列を使用してCSVにエクスポートし、代わりに問題を確認するためにロードします。その警告はさておき。X / Yとしての表示は非常にうまく機能します。
マットウィルキー

4

常に冒険的なオプションがあります。シェイプファイルを自分で作成できます。ESRIは、シェープファイルの仕様を公開しています。これについては、こちらをご覧ください。

http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

また、DBFファイルを作成する必要があります。ここでフォーマットについて読むことができます:

http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT

これは間違いなくやり過ぎですが、プロセス全体を制御できるという利点があります。


私は実際にそのように傾向があります-シェープファイルを直接書く代わりにOGRを使用します!
fmark

2
ExcelはおそらくDBFを直接書き込むことができますが、シェープファイルのDBFコンポーネントとしてこれらのDBFを使用してさまざまなレベルの成功を収めてきました。
mwalker

Excelはdbfファイルを書き出しません。
user30184 14年

3

個人的には、Safe Software(http://www.safe.com)のFMEを使用することを好みます。これにより、XY値からポイントをプロットできるだけでなく、プロットする前にある投影から別の投影に座標を変換する柔軟性が得られます。区切り文字のタイプ、開始行(テキストファイルにヘッダー情報がある場合)、テキストファイルにX、Y、ポイントデータの属性情報がある場合に属性を付加します。このデータをGoogle Earthで視覚化する場合は、KMLポイントスタイルも指定しながらKML形式に書き込むことができます。〜SRG


2

x、yデータに対して他の処理を行いたい場合は、データをpostgresにロードし、連結してgeomfromtextを使用してジオメトリデータタイプを作成し、pgsql2shpを使用して形状にエクスポートできます。このアプローチでは、異機種空間参照システムのデータを別の列に保持することもできます。このデータを使用して、シェープにエクスポートする前に、db内のすべてのポイントを共通参照システムに変換できます。これには、ogr / gdalよりも多くのステップが含まれることがわかりますが、柔軟性が大幅に向上します。


私は過去にこのアプローチを使用しましたが、それは良い方法です。ここでの一貫したつまずきは、Excelデータ型を確実に検出していると思います
。...– fmark

1
日付、x、yが常に最初の3列になるように、最初に列を再配置するためにExcel VBAで何かを書くことができると思います。何らかの列の命名規則がなければ、念頭に置いていることを完全に自動化することは難しいと思います。
ジョンパウエル

1

CSVファイルをspatialliteにロードし、OGRまたはQGISを使用してシェープファイルにエクスポートすることについてはどうですか。

http://www.gaia-gis.it/spatialite-2.2/index.html

spatialiteからシェープファイルに直接エクスポートすることもできます。

http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1


Spatialiteは、古い.xls形式(Excel 97-2003)のExcelファイルを直接インポートできます。XおよびY座標は、初期インポート後にSQLを使用してジオメトリに変換する必要があります。
user30184 14年

Javaの使用を気にしない場合は、POIプロジェクトを使用してExcelファイルをリッピングし、GeoToolsを使用して新しいシェープファイルを作成できます
TheSteve0 14年

0

より基本的な変換を行うには、FME 2013の2Dpointreplacerトランスフォーマーを使用できます。X値とY値が配置されている列をポイントする必要があります。
列の名前とタイプは必要に応じて設定できます

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