# coding: utf-8 ''' pythonでフィーチャクラスを作成するテスト ''' import os, sys, arcgisscripting import math def Usage(): print u'%(exe)s ワークスペース名 入力CSVファイル名 出力シェープファイル名' % { 'exe' : (os.path.basename(sys.argv[0])) } def NmeaXy2Deg(val): ''' 60進数*100の文字列を度に変換する ''' x = float(val) x *= 100 ary = math.modf(x) val = ary[1] + (ary[0] / 60.0) return val def NMEA_X2Deg(xText, zoneText): ''' NMEAの経度表示を10進数の度に変換する ''' val = NmeaXy2Deg(xText) if zoneText == 'W': val *= -1 return val def NMEA_Y2Deg(yText, zoneText): ''' NMEAの緯度表示を10進数の度に変換する ''' val = NmeaXy2Deg(yText) if zoneText == 'E': val *= -1 return val if len(sys.argv) != 4: Usage() exit(-1) workspace = sys.argv[1] inFilename = sys.argv[2] outFilename = sys.argv[3] gp = arcgisscripting.create() gp.Overwriteoutput = 1 # フィーチャクラスの作成 gp.CreateFeatureclass(workspace, outFilename, "POINT") gp.workspace = workspace gp.toolbox = "management" # 入力CSVファイルを開く f = open(os.path.join(workspace, inFilename), 'r') # レコード追加カーソル作成 insertCursor = gp.InsertCursor(os.path.join(workspace, outFilename)) # ポイントクラス作成 point = gp.CreateObject('Point') for line in f: nmeaElement = line.split(',') if len(nmeaElement) == 12: if nmeaElement[0] == '$GPRMC': point.x = NMEA_X2Deg(nmeaElement[5], nmeaElement[6]) point.y = NMEA_Y2Deg(nmeaElement[3], nmeaElement[4]) feature = insertCursor.NewRow() feature.shape = point insertCursor.InsertRow(feature) del feature, insertCursor f.close()
フィーチャクラスの作成
2016/9/1 (木)