FAQ
ジオデータベースからシェープファイルへ円弧フィーチャをエクスポートする方法

ナレッジ番号:5470 | 登録日:2023/07/27 | 更新日:2024/12/02

【概要】

大縮尺で表示している状態で、ジオデータベース内に円弧フィーチャを作成し、
シェープファイルへエクスポートすると三角形のフィーチャとして格納されます。

以下の方法を利用することによって、
ジオデータベースの円弧フィーチャの形状を保った状態でシェープファイルにエクスポートすることができます。


【手順】

  1. ArcMapを起動します。

  2. Visual Basic Editorを開きます。

  3. プロジェクト・エクスプローラ・ウィンドウで、Projectの下にあるArcMap Objects > ThisDocumentをダブルクリックし、
    コード・ウィンドウを開きます。

  4. コード・モジュールに次のコードをペーストします。

    
    Sub ExportTrueArcs2Shapefile()
    
      Dim pDoc As IMxDocument
      Dim pFlayerGDB As IFeatureLayer
      Dim pFCursor As IFeatureCursor
      Dim pFeature As IFeature
      Dim pFlayerShape As IFeatureLayer
      Dim pFlayerShapeFC As IFeatureClass
      Dim pPolycurve As IPolycurve2
      Dim dPi As Double
      Dim dMaxSeg As Double
      Dim pGeometry As IGeometry
      Dim dXyUnit As Double
      Dim dXfalse As Double
      Dim dyFalse As Double
      Dim pSPRef As ISpatialReference
      Dim pSegCol As ISegmentCollection
      Dim bNonLinear As Boolean
      Dim pCurve As ICurve
    
      Set pDoc = ThisDocument
      Set pFlayerGDB = pDoc.FocusMap.Layer(0)
      Set pFCursor = pFlayerGDB.FeatureClass.Search(Nothing, False)
      Set pFeature = pFCursor.NextFeature
    
      If pFlayerGDB.FeatureClass.ShapeType <> esriGeometryPolygon Then Exit Sub
    
      Set pFlayerShape = pDoc.FocusMap.Layer(1)
      Set pFlayerShapeFC = pFlayerShape.FeatureClass
    
      'ラジアンで角度を取得します。
      dPi = Atn(1) * 4
    
      Set pGeometry = pFeature.ShapeCopy
      Set pSPRef = pGeometry.SpatialReference
      pSPRef.GetFalseOriginAndUnits dXfalse, dyFalse, dXyUnit
    
      dMaxSeg = (1 / dXyUnit) * 100000
    
      While Not pFeature Is Nothing
        Set pCurve = pFeature.Shape
        Set pPolycurve = pCurve
        Set pSegCol = pPolycurve
        pSegCol.HasNonLinearSegments bNonLinear
        If bNonLinear Then
          pPolycurve.DensifyByAngle dMaxSeg, dPi / 180
        End If
        storeFeature pPolycurve, pFlayerShapeFC
        Set pFeature = pFCursor.NextFeature
      Wend
    
    End Sub
    
    Private Sub storeFeature(pGeo As IGeometry, pFClass As IFeatureClass)
    
    On Error GoTo errHand
    
      Dim pNewFCursor As IFeatureCursor
      Dim pFeatureBuffer As IFeatureBuffer
    
      Set pNewFCursor = pFClass.Insert(True)
      Set pFeatureBuffer = pFClass.CreateFeatureBuffer
      Set pFeatureBuffer.Shape = pGeo
      pNewFCursor.InsertFeature pFeatureBuffer
      pNewFCursor.Flush
      Exit Sub
    
    errHand:
      Debug.Print Err.Description
    
    End Sub
    
    
  5. Visual Basic Editorを閉じます。

  6. 円弧を含むポリゴンのジオデータベースフィーチャクラスをArcMapに追加します。

  7. 空のポリゴンシェープファイルをArcMapに追加します。ジオデータベースフィーチャクラス内のフィーチャは変換され、シェープファイルフィーチャクラスへ追加されます。

  8. ジオデータベースフィーチャクラスとシェープファイルがそれぞれTOC内で最上位レイヤ、2番目のレイヤとなっていることを確認します。

  9. マクロを実行します。

    A:ArcMapで、ツール > マクロ > マクロと選択し、マクロ・ダイアログを表示します。

    B:マクロを選択し、実行をクリックします。

メタデータ

種類

機能

製品