FAQ
ArcPy (ArcMap): 頂点でラインを分割する

ナレッジ番号:2836 | 登録日:2023/05/29 | 更新日:2024/03/27

概要

Python を用いてラインを頂点で分割し、別のフィーチャクラスとして出力する方法をご紹介します。

Python サンプル コード

変数 inLineFC、outFC に代入する入力データと出力データのパスは適宜変更してください。

# coding:cp932
#
#-------------------------------------------------------------------------------
# Name:          SplitLine_Vertex
# Purpose:      頂点でラインを分割します。
#
# Author:        ESRI Japan
#-------------------------------------------------------------------------------

# ArcPy、os.path モジュールのインポート
import arcpy,os.path

# 入力、出力データの設定
inLineFC = r"D:\Data\tmp\inLine.shp"
outFC = r"D:\Data\tmp\outLine.shp"

desc = arcpy.Describe(inLineFC)
sr = desc.spatialReference

arcpy.CreateFeatureclass_management(os.path.dirname(outFC),os.path.basename(outFC),"POLYLINE",inLineFC,"","",sr)


SearchCur = arcpy.SearchCursor(inLineFC)
InseartCur = arcpy.InsertCursor(outFC)

for row in SearchCur:
    i = 0
    geom = row.shape
    while i < geom.partCount:
        part = geom.getPart(i)
        j = 0
        pointCount = part.count
        while j < pointCount-1:
            point1 = part.getObject(j)
            point2 = part.getObject(j + 1)
            newAry = arcpy.Array()
            newAry.add(point1)
            newAry.add(point2)
            new_polyLine = arcpy.Polyline(newAry,sr)
            newRow = InseartCur.newRow()
            newRow.shape = new_polyLine
            InseartCur.insertRow(newRow)
            j += 1
        i += 1

del row,SearchCur,newRow,InseartCur

こちらのサンプルはあくまでもコーディングの見本であり、実行時に発生したエラーの対処方法につきましては、サポート対象外とさせていただきます。また、操作方法やソースコードに関するご質問は別途有償の開発者サポート契約にてご対応させていただきます。なお、コードを実行して生じたいかなる損害についても弊社では責任を負いかねます。

メタデータ

種類

製品