3D Point Studioの主な機能と利用方法の例を紹介する。
領域メタデータでは、領域データの作成日や作成者等の基本情報に加えて、設計図面、点検調書、現場画像等の外部データファイル(PDFデータや画像データ)を関連付けることを可能とする。 また、道路設計要素等の計測困難な地物の情報については、領域データを定義せず、領域メタデータで保持することとする。 以上より、領域メタデータの項目種別は、マスタ情報(定数)として定義し、各項目に適したデータ構造を検討する。
領域データは、「スケッチ」と「操作履歴」から定義される「最終形状(3次元モデル)」で定義する(下図参照)。
スケッチとは、ISO10303 Part108 で定義されているSketchを参考とし、領域情報の3次元形状を生成するための2次元断面(底面)のことである。 したがって、スケッチは、任意平面を示す情報と幾何要素を保持する。 任意平面を示す情報とは、平面を定義するために必要な原点と直交する2軸方向を示す値である。 これらの値をスケッチが保持することで、任意のスケッチを3次元空間上に配置できる(下図参照)。
本仕様では、スケッチ上に配置できる幾何要素と、スケッチの3次元空間上への配置方法を次のとおり限定する。
スケッチ上に配置できる幾何要素は、「矩形(Rectangle)」、「円(Circle)」、「折線(Polyline)」の3種類(下図参照)とする。
矩形は、全ての角が直角となる四辺形であり、4点の座標で定義する。円は、定点からの距離が等しい曲線であり、中心座標と半径で定義する。 折線は、線分の集合であり、頂点数分の座標で定義する。 ただし、開始点と終了点の閉じた矩形に限定する。なお、これらの幾何要素の形状を定義するパラメータは、SXFを参考とする。 なお、パラメトリックモデリングを実現するための拘束条件は保持しない。
スケッチの3次元空間への配置方法は、「水平配置」、「垂直配置」、「自由配置」の3種類とする。 水平配置とは、スケッチ平面の軸を配置先座標軸に合わせ、地表面と平行となるように配置することである。 垂直配置とは、スケッチ平面の軸を配置先座標軸に合わせ、地表面と垂直になるように配置することである。 配置点の3次元座標、X軸とY軸方向ベクトルで定義する。自由配置とは、スケッチ平面を配置先座標系に自由な向きで配置することである。 いずれも、配置点の3次元座標、X軸とY軸の方向ベクトルで定義する。
操作履歴とは、ISO10303 Part55およびPart111の定義を参考とし、領域情報の3次元形状を生成するために、スケッチに行う操作及びその順序のことである。 本基準では、操作履歴は、「押出し」と「スイープ」の2種類(下図参照)とする。
押出し(図左)とは、スケッチ上で表現された底面形状を押出すことで領域を生成するための操作である。 本操作では、任意に押出し情報(押出し方向と押出し量)を設定することを可能とする。
スイープ(図右)とは、スケッチ上で表現された底面形状を掃引することにより領域を生成するための操作である。 本操作では、折線(Polyline)の幾何要素を使用して、任意に掃引情報を設定することを可能とする。
最終形状とは、ISO10303 Part42の3次元形状情報の定義を参考とし、多面体境界表現モデル(B-Rep)で表現したものである。 ISO10303でのデータ交換時においては、ISO10303 Part55の定義に従って、スケッチと操作履歴の情報に加え、最終形状の情報も受け渡す必要がある。 本仕様では、地物の位置と大きさを示す領域データの点、線、面をそれぞれ個別に定義する必要が無いため、最終形状は定義しない。
領域データの定義例を次に示す。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 共通情報 -->
<CommonInformation>
<!-- 全国地方公共団体コード 属性 -->
<JapaneseLocalGovermentCode Code="000000" />
<!-- 道路種類と号線 -->
<RoadType name="国道" Route="4" />
<!-- 距離標区間(始点・終点) -->
<Kilopost StartPosition="0" EndPosition="1" />
<!-- 道路管轄名称 -->
<Organization Name="○○国道事務所" />
<!-- 座標系定義 -->
<CRSs>
<CRS CrsId="1234" CrsName="座標参照系1">
<!-- 測地原子 -->
<GeodeticDatum>JGD 20000</GeodeticDatum>
<!-- 鉛直原子 -->
<VerticalDatum StdName="T.P." DifferToTP="0.0" />
<!-- 水平座標系 -->
<HorizontalCoordinateSystem>9(X,Y)</HorizontalCoordinateSystem>
<!-- 鉛直座標系 -->
<VerticalCoordinateSystem>H</VerticalCoordinateSystem>
<!-- コメント -->
<Remark>第9系</Remark>
</CRS>
</CRSs>
</CommonInformation>
<!-- 領域情報 -->
<AreaInformation>
<!-- 領域データセット -->
<Area AreaId="AreaId(ローカルID)" AreaName="照明柱" ObjectKind="2" ObjectLevel="2" ObjectName="車道">
<!-- 領域メタデータ -->
<AreaMetaData refSketchId="1111">
<Element Auther="太郎" Date="2017/01/20" Type="1">サンプル文字列</Element>
<Element Auther="太郎" Date="2017/01/23" Type="2">zumen.p21</Element>
</AreaMetaData>
<AreaMetaData refSketchId="2222">
<Element Auther="次郎" Date="2017/01/20" Type="1">サンプル文字列</Element>
<Element Auther="次郎" Date="2017/01/23" Type="2">zumen.p21</Element>
</AreaMetaData>
<!-- 領域データ -->
<AreaData>
<!-- スケッチ -->
<Sketch SketchId="1111(ローカルid)">
<!-- スケッチ上の幾何要素 -->
<GeometricItem>
<!-- 円の場合 -->
<Circle>
<radius>1.0</radius>
</Circle>
</GeometricItem>
<!-- 配置座標系(グローバル座標系への配置位置の定義) -->
<SketchAxis2Placement refCrsId="1234">
<position>
<x>999.999</x>
<y>999.999</y>
<z>999.999</z>
</position><!-- 配置点座標 -->
<Direction>
<x>1.0</x>
<y>0.0</y>
<z>0.0</z>
</Direction> <!-- 方向ベクトル -->
</SketchAxis2Placement>
</Sketch>
<Sketch SketchId="2222(ローカルid)">
<GeometricItem>
<!-- 折線の場合(閉じた矩形に限る) -->
<Polyline pointNum="3">
<CoordinatePoint>
<x>1.0</x>
<y>1.0</y>
</CoordinatePoint>
<CoordinatePoint>
<x>1.0</x>
<y>1.0</y>
</CoordinatePoint>
<CoordinatePoint>
<x>1.0</x>
<y>1.0</y>
</CoordinatePoint>
</Polyline>
</GeometricItem>
<!-- 配置座標系(グローバル座標系への配置位置の定義) -->
<SketchAxis2Placement refCrsId="1234">
<position>
<x>999.999</x>
<y>999.999</y>
<z>999.999</z>
</position><!-- 配置点座標 -->
<Direction>
<x>0.0</x>
<y>1.0</y>
<z>0.0</z>
</Direction> <!-- 方向ベクトル -->
</SketchAxis2Placement>
</Sketch>
<!-- 操作履歴 -->
<Procedure>
<ProceduralSequence refCrsId="1234" refSketchId="1111">
<!-- 押し出し体の場合 -->
<ExtrudedModel>
<!-- 押し出し方向ベクトル -->
<ExtrudedDirectrix>
<x>1.000</x>
<y>1.000</y>
<z>1.000</z>
</ExtrudedDirectrix>
</ExtrudedModel>
</ProceduralSequence>
</Procedure>
<Procedure>
<ProceduralSequence refCrsId="1234" refSketchId="2222">
<!-- スイープモデルの場合 -->
<SweptModel>
<!-- 掃引線の始点となるスケッチ上の位置座標 -->
<SweepOnSketch>
<x></x>
<y></y>
</SweepOnSketch>
<!-- 掃引線(複合図形) -->
<SweptDirectrix>
<GeometricItem elementsNum="3">
<!-- 折線の場合 -->
<Polyline pointNum="4">
<CoordinatePoint>x,y,z</CoordinatePoint>
<CoordinatePoint>x,y,z</CoordinatePoint>
<CoordinatePoint>x,y,z</CoordinatePoint>
<CoordinatePoint>x,y,z</CoordinatePoint>
</Polyline>
</GeometricItem>
</SweptDirectrix>
</SweptModel>
</ProceduralSequence>
</Procedure>
</AreaData>
</Area>
</AreaInformation>
<!-- アセンブリ情報 -->
<AssemblyInformation>
<AssemblyData ElementsNum="2">
<TargetArea>refAreaId</TargetArea>
<TargetArea>refAreaId</TargetArea>
</AssemblyData>
<AssemblyData ElementsNum="2">
<AssemblyData ElementsNum="2">
<TargetArea>refAreaId</TargetArea>
<TargetArea>refAreaId</TargetArea>
</AssemblyData>
<AssemblyData ElementsNum="2">
<TargetArea>refAreaId</TargetArea>
<TargetArea>refAreaId</TargetArea>
</AssemblyData>
</AssemblyData>
</AssemblyInformation>
<!-- 位相情報を保持 -->
<TopologyInformation>
<TopologyData Type="0">
<TargetArea>refAreaId</TopologyElements>
<TargetArea>refAreaId</TopologyElements>
</TopologyData>
</TopologyInformation>
点群メタデータは、点群データファイル単位で作成し、 点群データの作成者情報、計測日の気象情報、計測機器の仕様、計測方法、点群データの生成に利用したソフトウェアと解析パラメータ、 点データのフォーマット等の詳細情報を保持する。
点群メタデータ(下表)は、点群データの管理や利活用の観点から、保持することが強く推奨される情報のみを既定項目として定義し、 ユーザーが任意に拡張可能な仕様とする。規定項目は、点群データの主要なファイル形式であるLAS(American Society of Photogrammetry and Remote Sensing : LAS Ver.1.3)を基本とし、 小委員会での協議を受けて、適宜拡張した。点群メタデータの項目を以下に示す。
作成者 | 点群データの計測者名(企業名、部署など) |
---|---|
作成日時 | 点群データの計測日時 |
点群データ | 点群データのファイル名 |
点群データ識別ID | 「”PID”+”-“+計測開始地点+”-“+計測終了地点+”-“+総点数+”-“+中心X座標+”-“+中心Y座標+”-“+中心Z座標」
(総点数と中心座標はカンマ無し、小数点以下切捨) 例:PID-271004-271005-15394803-1234-1234-1234 |
計測機器 | 点群データの計測に用いた機器(LP、TLS、MMS、UAV) |
計測機器詳細 |
【LP・MMS・UAVの場合】
【TLSの場合】
|
点が保持する情報の項目を下表に示す。
X | 点のX座標値 |
---|---|
Y | 点のY座標値 |
Z | 点のZ座標値 |
Intensity | 点の反射強度値 |
R | 点の輝度値(R) |
G | 点の輝度値(G) |
B | 点の輝度値(B) |
Normal X | 点の法線ベクトルx成分 |
Normal Y | 点の法線ベクトルY成分 |
Normal Z | 点の法線ベクトルZ成分 |
Time | 点の計測時刻 |
Return Number | LAS参照 |
Scan Direction | LAS参照 |
Flightline Edge | LAS参照 |
Classification | LAS参照 |
Scan Angle | LAS参照 |
PointSouceID | LAS参照 |
UserData | LAS参照 |
点群メタデータの定義例を次に示す。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE PointCloudMetaDataXML>
<PcmdXML version="1.0" date="2018-07-01" company="" author="">
<AttributeSet name="Header">
<AttrGroup name="Summary">
<Attr name="FileName">load.las</Attr>
<Attr name="FileExtension">LAS</Attr>
<Attr name="Neatline">
<AttrItem name="Code">09LD352</AttrItem>
<AttrItem name="Code">09LD351</AttrItem>
<AttrItem name="Code">09LD350</AttrItem>
</Attr>
<Attr name="JIS-X-0306">392</Attr>
<Attr name="StartAreaCode">271004</Attr>
<Attr name="EndAreaCode">271005</Attr>
<Attr name="RoadSection">
<AttrItem name="SectionID">******</AttrItem>
</Attr>
<Attr name="MeasurementMethod">0</Attr>
<Attr name="Points">123456</Attr>
<Attr name="OffSetX">0.0000</Attr>
<Attr name="OffSetY">0.0000</Attr>
<Attr name="OffSetZ">0.0000</Attr>
<Attr name="Scale">1.0000</Attr>
<Attr name="Correction">0</Attr>
<Attr name="Accuracy">±0.10</Attr>
<Attr name="Identification">PID-271004-271005-15394803-1234-1234-1234</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup name="CRS">
<Attr name="GeodeticDatum">JDG2000</Attr>
<Attr name="VerticalDatum">0.00</Attr>
<Attr name="HorizontalCoordinateSystem">8(X,Y)</Attr>
<Attr name="VerticalCoordinateSystem">h</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup name="Bounding-Box">
<Attr name="BBoxCenterX">123.456</Attr>
<Attr name="BBoxCenterY">123.456</Attr>
<Attr name="BBoxCenterZ">123.456</Attr>
<Attr name="BBoxDimensionX">123.456</Attr>
<Attr name="BBoxDimensionY">123.456</Attr>
<Attr name="BBoxDimensionZ">123.456</Attr>
</AttrGroup>
<AttrGroup name="Intensity">
<Attr name="IntensityRangeMax">255</Attr>
<Attr name="IntensityRangeMin">0</Attr>
<Attr name="IntensityMax">235</Attr>
<Attr name="IntensityMin">3</Attr>
</AttrGroup>
</AttributeSet>
<AttributeSet name="PointDataType">
<AttrGroup name="Intensity">
<Attr name="Existence">1</Attr>
<AttrGroup name="Normal">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="RGB">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="Time">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="Trajectory">
<Attr name="Existence">1</Attr>
<Attr name="Kind">
<AttrItem name="TrajectoryId">2</AttrItem>
<AttrItem name="TrajectoryId">3</AttrItem>
<AttrItem name="TrajectoryId">4</AttrItem>
<AttrItem name="TrajectoryId">8</AttrItem>
</Attr>
</AttrGroup>
<AttrGroup name="ReturnNumber">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="ScanDirection">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="FlightlineEdge">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="Classification">
<Attr name="Existence">1</Attr>
<Attr name="Kind">
<AttrItem name="ClassificationId">2</AttrKind>
<AttrItem name="ClassificationId">3</AttrKind>
<AttrItem name="ClassificationId">4</AttrKind>
<AttrItem name="ClassificationId">8</AttrKind>
</Attr>
</AttrGroup>
<AttrGroup name="ScanDirection">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="ScanAngle">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="PointSourceID">
<Attr name="Existence">1</Attr>
</AttrGroup>
<AttrGroup name="UserData">
<Attr name="Existence">1</Attr>
<Attr name="Kind">
<AttrItem name="UserDataId">0</AttrItem>
<AttrItem name="UserDataId">1</AttrItem>
</Attr>
</AttrGroup>
<AttrGroup name="MeasureID">
<Attr name="Existence">1</Attr>
<Attr name="Kind">
<AttrItem name="MeasureId">***</AttrItem>
<AttrItem name="MeasureId">***</AttrItem>
</Attr>
</AttrGroup>
</AttributeSet>
<AttributeSet name="Environment">
<AttrGroup name="Measurement">
<Attr name="MeasurementDate">2017-07-01</Attr>
<Attr name="MeasurementStartTime">13:01:22</Attr>
<Attr name="MeasurementEndTime">14:15:05</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup name="Climate">
<Attr name="Weather">晴れ</Attr>
<Attr name="Temperature">23.4</Attr>
<Attr name="Humidity">40</Attr>
<Attr name="WindSpeed">3.0</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
</AttributeSet>
<AttributeSet name="Specification">
<AttrGroup specId="1" name="MMS">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="VehicleName">****</Attr>
<Attr name="NumberOfGnss">3</Attr>
<Attr name="NumberOfImu">1</Attr>
<Attr name="NumberOfOdometry">1</Attr>
<Attr name="NumberOfCamera">2</Attr>
<Attr name="NumberOfLidar">2</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup specId="2" name="Aircraft">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="Lift">0</Attr>
<Attr name="NumberOfGnss">3</Attr>
<Attr name="NumberOfImu">1</Attr>
<Attr name="NumberOfCamera">2</Attr>
<Attr name="NumberOfLidar">2</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup specId="3" name="UAV">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="Wings">****</Attr>
<Attr name="Payload">****</Attr>
<Attr name="Weight"></Attr>
<Attr name="NumberOfGnss">3</Attr>
<Attr name="NumberOfImu">1</Attr>
<Attr name="NumberOfCamera">2</Attr>
<Attr name="NumberOfLidar">2</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup specId="4" name="レーザースキャナ">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="Class">1</Attr>
<Attr name="Wavelength"></Attr>
<Attr name="PulseRange"></Attr>
<Attr name="RangingMethod">TOF</Attr>
<Attr name="Accuracy">±0.03</Attr>
<Attr name="WithImages">1</Attr>
<Attr name="Area"></Attr>
<Attr name="Quality">x4</Attr>
<Attr name="Density">1/4</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup specId="5" name="カメラ">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="VerticalPixels"></Attr>
<Attr name="HorizontalPixels"></Attr>
<Attr name="FocalLength"></Attr>
<Attr name="HorizontalAngle"></Attr>
<Attr name="VerticalAngle"></Attr>
<Attr name="ISO"></Attr>
<Attr name="F"></Attr>
<Attr name="VerticalSensorSize"></Attr>
<Attr name="HorizontalSensorSize"></Attr>
<Attr name="Video">1</Attr>
<Attr name="ShutterMethod">0</Attr>
<Attr name="Interval"></Attr>
<Attr name="FPS"></Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup specId="6" name="GNSS">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="PositioningTargetSatellite">
<AttrItem name="SatelliteName">GPS</AttrItem>
<AttrItem name="SatelliteName">GRONASS</AttrItem>
</Attr>
<Attr name="Accuracy"></Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup specId="7" name="IMU">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="AccuracyRoll"></Attr>
<Attr name="AccuracyPitch"></Attr>
<Attr name="AccuracyYaw"></Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
</AttributeSet>
<AttributeSet name="Measurement">
<AttrGroup measureId="1" name="Trajectry">
<Attr name="ReferenceType">0</Attr>
<Attr name="ReferenceFileName"></Attr>
<Attr name="ReferenceSpecifications">
<AttrItem name="specId">1</AttrItem>
<AttrItem name="specId">4</AttrItem>
<AttrItem name="specId">5</AttrItem>
<AttrItem name="specId">6</AttrItem>
<AttrItem name="specId">7</AttrItem>
</Attr>
<Attr name="TrajectoryCoordinateVal">
<AttrItem name="CorrdinateVal">X,Y,Z</AttrItem>
<AttrItem name="CorrdinateVal">X,Y,Z</AttrItem>
</Attr>
<Attr name="TrajectoryTime">
<AttrItem name="time">*****</AttrItem>
<AttrItem name="time">*****</AttrItem>
</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup measureId="2" name="Flying">
<Attr name="ReferenceType">0</Attr>
<Attr name="ReferenceFileName"></Attr>
<Attr name="ReferenceSpecifications">
<AttrItem name="specId">1</AttrItem>
<AttrItem name="specId">4</AttrItem>
<AttrItem name="specId">5</AttrItem>
<AttrItem name="specId">6</AttrItem>
<AttrItem name="specId">7</AttrItem>
</Attr>
<Attr name="FlyingCoordinateVal">
<AttrItem name="CorrdinateVal">X,Y,Z</AttrItem>
<AttrItem name="CorrdinateVal">X,Y,Z</AttrItem>
</Attr>
<Attr name="FlyingTime">
<AttrItem name="time">*****</AttrItem>
<AttrItem name="time">*****</AttrItem>
</Attr>
<Attr name="FlyingMethod">1</Attr>
<Attr name="FlyingHeight">20</Attr>
<Attr name="FlyingSpeed">3</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup measureId="3" name="TerrestrialPosition">
<Attr name="Position">X,Y,Z</Attr>
<Attr name="ReferenceSpecifications">
<AttrItem name="specId">4</AttrItem>
</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
<AttrGroup measureId="4" name="GCP">
<Attr name="Position">X,Y,Z</Attr>
<Attr name="ReferenceSpecifications">
<AttrItem name="specId">4</AttrItem>
</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
</AttributeSet>
<AttributeSet name="Analysis">
<AttrGroup name="Software">
<Attr name="Manufacturer">****</Attr>
<Attr name="ProductName">****</Attr>
<Attr name="Version"></Attr>
<Attr name="Parameters">****</Attr>
<Attr name="ReferenceMeasurement">
<AttrItem name="measureId">1</AttrItem>
</Attr>
<Attr name="Remark">****</Attr>
</AttrGroup>
</AttributeSet>
</PcmdXML>