この関数は、 Lasファイルを読み取ってシェープファイルを保存するために作成しました。この関数は、8つのフィールドを持つシェープファイルを作成します。保存したいフィールドを選択するために、関数に解析要素を挿入したいものLAS2SHP(inFile、outFile = None、parse = None)。Noneの場合、すべてのフィールドが保存されます。parseがparse="irn"の場合、フィールドintensity、return_number、およびnumber_of_returnsが保存されます。伝説に従う
"i": p.intensity,
"r": p.return_number,
"n": p.number_of_returns,
"s": p.scan_direction,
"e": p.flightline_edge,
"c": p.classification,
"a": p.scan_angle,
もし....ifelse.... elseが本当にコードを消費する(そしてエレガントではない)場合、私は解決策を書きました。コードを保存するためのすべてのヘルプと提案に感謝します
よろしくお願いしますジャンニ
ここでPythonの元の関数
import shapefile
from liblas import file as lasfile
def LAS2SHP(inFile,outFile=None):
w = shapefile.Writer(shapefile.POINT)
w.field('Z','C','10')
w.field('Intensity','C','10')
w.field('Return','C','10')
w.field('NumberRet','C','10')
w.field('ScanDir','C','10')
w.field('FlightEdge','C','10')
w.field('Class','C','10')
w.field('ScanAngle','C','10')
for p in lasfile.File(inFile,None,'r'):
w.point(p.x,p.y)
w.record(float(p.z),float(p.intensity),float(p.return_number),float(p.number_of_returns),float(p.scan_direction),float(p.flightline_edge),float(p.classification),float(p.scan_angle))
if outFile == None:
inFile_path, inFile_name_ext = os.path.split(os.path.abspath(inFile))
inFile_name = os.path.splitext(inFile_name_ext)[0]
w.save("{0}\\{1}.shp".format(inFile_path,inFile_name))
else:
w.save(outFile)