GDBから.csvテーブルをエクスポートするPythonスクリプト


8

私はPythonプログラミングに非常に慣れていないため、csvファイルをファイルジオデータベースフィーチャクラスからエクスポートするプログラムの作成を任されています。csvには特定のフィールドのみを含める必要があり、エクスポートされるレコードは最終編集日に基づく必要があります。つまり、csvファイルは、「最終編集日フィールド」に基づいて追加された最後の機能のみを含む毎日のベースで作成されます。

私はこれをこれまでに持っています:

import arcpy
import os
import csv
import domainvalues

def export_to_csv(dataset, output, dialect):
    """Output the data to a CSV file"""
    # create the output writer
    out_writer = csv.writer(open(output, 'wb'), dialect=dialect)
    # return the list of field names and field values
    header, rows = domainvalues.header_and_iterator(dataset)

    # write the field names and values to the csv file
    out_writer.writerow(map(domainvalues._encodeHeader, header))
    for row in rows:
        out_writer.writerow(map(domainvalues._encode, row))

if __name__ == "__main__":
    # Get parameters
    dataset_name = arcpy.GetParameterAsText(0)
    output_file = arcpy.GetParameterAsText(1)
    delim = arcpy.GetParameterAsText(2).lower()
    dialect = 'excel'
    if delim == 'comma':
        pass
    else:
        dialect = 'excel-tab'
    try:
        export_to_csv(dataset_name, output_file, dialect)
    except Exception as err:
        arcpy.AddError('Error: {0}'.format(err))

ただし、すべてをエクスポートします。


これまでに持っているものをどのように投稿しますか?stackexchangeの新機能
user35267

2
Curlewが意味することは、あなたが質問にいくつかのコードを挿入する必要があることです(あなたの質問を編集してください)。コミュニティにスクリプトを記述させようとしているように見えます)。
jbchurchill 2014

回答:


10

より簡単な解決策は、dbfファイル形式に変換することです。この場合、すぐに使用できるTable to Table(Conversion)を使用できます。このツールを使用すると、FieldMappingsとして含めるフィールドを自由に選択したり、.dbfファイルを直接出力したりできます。

import arcpy

fc = r'C:\path\to\your\fc'
outws = r'C:\temp'

arcpy.TableToTable_conversion (fc, outws, 'outFile.dbf')

6
-1これにより、csvファイルではなく、outFile.dbfというdbfファイルが作成されます。Csvファイル出力はサポートされていません。参照されているドキュメントごと: This tool can convert input tables to dBASE (.dbf), geodatabase (personal, file, or SDE), or INFO tables
Regan Sarwas

@ReganSarwasヘッドアップしてくれてありがとう。あなたのコメントに対処するために質問を編集しました。ここでの主なアイデアは、これはcsvに変換するよりも簡単で代替的なソリューションであるということです。
アーロン

7

ArcGISには、これを行うための「フィーチャ属性をASCIIにエクスポートする」と呼ばれるツールがすでにあります。これは、空間統計->ユーティリティツールボックスにあります。

「テーブルからテーブル」に対するこのツールの利点は、1)区切り文字(スペース、コンマ、タブ)を定義する、2)エクスポートするフィールドを選択する、3)フィールド名をエクスポートするかどうかを選択できることです。 CSVファイル。それはたまたまPythonスクリプトなので、そのファイルをコピーして、独自のバリアントを非常に簡単に作成できます。

したがって、「最終編集日フィールド」に基づいて最新のフィーチャのみをエクスポートするモデルまたはスクリプトを作成する場合は、「フィーチャ属性をASCIIにエクスポート」ツールの前に「属性でレイヤーを選択」ツールを呼び出します。実行するクエリを除外します。


3
投稿された質問に厳密に回答しますが、ツールはテーブルではなくフィーチャクラスのみをサポートすることは注目に値します...
jburka

3

と呼ばれるtreedn.gdbテーブルで呼び出されたGDBファイルがあり、と呼ばれるtreesCSVにエクスポートするとしtrees.csvます。

あなたはこれに似た何かをすることができます:

import arcpy
import csv

wd = #<working directory>
table   = wd+"/treedn.gdb/trees"
outfile = wd+"/treedn/trees.csv"      

fields = arcpy.ListFields(table)
field_names = [field.name for field in fields]

with open(outfile,'wb') as f:
    w = csv.writer(f)
    w.writerow(field_names)
    for row in arcpy.SearchCursor(table):
        field_vals = [row.getValue(field.name) for field in fields]
        w.writerow(field_vals)
    del row

記事全体はここにあります


1

ArcGIS 10.3には、テーブルをCSVファイルに変換する新しい関数ConvertTableToCsvFile_roadsがあります。これは非常に簡単に使用できます。

import arcpy
from arcpy import env

arcpy.env.workspace="C:/mydata.gdb"
arcpy.ConvertTableToCsvFile_roads("input_table", "C:myfolder/output_csv_file.csv", "COMMA")

完全なドキュメントはこちらです。

これを使用するには、Roads and Highwaysツールボックスライセンスが必要です。バージョン10.4以降、この関数はと呼ばれConvertTableToCsvFile_locrefます。

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