BlocksExchange XML/XMLZ format
The BlocksExchange XML format is an open exchange format specified by Bentley to import/export blocks definition in ContextCapture Master.
The XML file can include properties of one or several blocks.
XMLZ format is an extension of XML format adding file compression for convenience (zip).
Format specifications
<?xml version="1.0" encoding="utf-8"?> <BlocksExchange version="2.1"> <!-- Definition of one or several useful spatial reference systems (SRS). --> <!-- Here, we need the French Lambert 93. --> <SpatialReferenceSystems> <SRS> <!-- In the sequel, the SRS is referred to by this ID. --> <Id>0</Id> <!-- User-friendly SRS name. --> <Name>Lambert 93</Name> <!-- The spatial reference system definition can be either a Well Known Text definition (e.g. WGS84), "EPSG: ", a PROJ.4 definition, or the path to a file containing such a definition. --> <Definition>EPSG:2154</Definition> </SRS> </SpatialReferenceSystems> <!-- Optional: a path to prefix image paths when they are not absolute (default: use the directory of the exchange file). --> <BaseImagePath>D:\data\Paris2012sample\Images</BaseImagePath> <!-- Block definition. A single file can define several blocks. --> <Block> <!-- Block name and description are optional. --> <Name>Paris2012</Name> <Description>Small sample of the Paris 2012 dataset</Description> <!-- The type of block is optional. Supported types are: Aerial, Nadir and Orbit. --> <Type>Aerial</Type> <!-- Photo downsampling rate can be optionally provided with <PhotoDownsamplingRate> tag --> <!-- Minmum and maximum viewing distance can be optionally provided with <MinimumViewingDistance> and <MaximumViewingDistance> tags --> <!-- ID of the base SRS used in the block. By default, the spatial reference system is assumed to be a local Cartesian coordinate system. --> <SRSId>0</SRSId> <Photogroups> <!-- All photos taken using the same physical camera, with identical focal length and dimensions must be gathered in a photogroup. --> <Photogroup> <!-- Optionally, a different spatial reference system can be specified for each photogroup with the <SRSId> tag. By default, the SRS of the block is assumed. --> <!-- Optionally, a name with the <Name> tag, and a description with a <Description> tag. --> <Name>UCX</Name> <!-- Image dimensions, in pixels. --> <ImageDimensions> <Width>9420</Width> <Height>14430</Height> </ImageDimensions> <!-- Optional camera model type Perspective or Fisheye (Perspective type is used if this tag is unspecified). --> <CameraModelType>Perspective</CameraModelType> <!-- Optional camera model band Visible or Thermal (Visible type is used if this tag is unspecified). --> <CameraModelBand>Visible</CameraModelBand> <!-- Sensor's largest dimension, in millimeters. --> <!-- Sensor's pixel size, in millimeters, can be substituted for this field. --> <!-- For this dataset, it would be: --> <!-- <PixelSize>0.0072</PixelSize> --> <SensorSize>103.896</SensorSize> <!-- Focal length, in millimeters. This can be either the nominal specification or a closer estimate. --> <FocalLength>100.735601903992</FocalLength> <!-- Optionally, focal length, in pixels. Can replace FocalLength and SensorSize data. --> <!-- For this dataset, it would be: --> <!-- <FocalLengthPixels>13991.05582</FocalLengthPixels> --> <!-- Optionally, specification of the xy-axis of the camera sensor for pose rotation and for any position given in millimeter (i.e. <PrincipalPoint> and <Measurement> when using <xmm> and <ymm>) --> <!-- Possible values: XRightYDown (default), XRightYUp (more frequent in photogrammetry), XLeftYDown, XLeftYUp, XDownYRight, XDownYLeft, XUpYRight, XUpYLeft --> <CameraOrientation>XRightYDown</CameraOrientation> <!-- Principal point, with respect to the sensor center. This field is optional: by default, the sensor center is used as an initial estimate of the principal point. --> <PrincipalPoint> <!-- 2D image position of the principal point, in pixels. The origin is the center of the upper-left image pixel, the x-axis is oriented to the right side of the image, and the y-axis is oriented to the bottom of the image. --> <x>4683.755692</x> <y>7223.0141002</y> <!-- Alternatively, a 2D position with respect to the sensor center can be specified, in millimeters. In this case, the xy-axis are oriented according to CameraOrientation. --> <!-- For this dataset, it would be: --> <!-- <xmm>-0.1853590176</xmm> --> <!-- <ymm>0.06130152144</ymm> --> </PrincipalPoint> <!-- Lens distortion coefficients. This field is optional: by default, no distortion is assumed as an initial estimate. --> <!-- Distortion coefficients correspond to the classical Brown's distortion model, as described in http://en.wikipedia.org/wiki/Distortion_(optics) . --> <Distortion> <K1>-0.0010041516639</K1> <K2>0.0056007056563</K2> <K3>-0.009874171117100001</K3> <P1>0</P1> <P2>0</P2> </Distortion> <!-- Fisheye focal matrix used only for the camera model type Fisheye. --> <FisheyeFocalMatrix> <M_00>1960</M_00> <M_01>0</M_01> <M_10>0</M_10> <M_11>1960</M_11> </FisheyeFocalMatrix> <!-- Fisheye distortion coefficients used only for the camera model type Fisheye. --> <FisheyeDistortion> <P0>0</K1> <P1>1</K2> <P2>0</K3> <P3>0</P1> <P4>0</P2> </FisheyeDistortion> <Photo> <!-- The ID of a photograph must be unique over the whole block (in other words, even across other photogroups). --> <Id>146</Id> <!-- Path of the image. If not absolute, it is considered to be relative to BaseImagePath if defined, or otherwise to the directory of the exchange file. --> <ImagePath>071_2810.jpg</ImagePath> <!-- Optional path of the image mask. If not absolute, it is considered to be relative to BaseImagePath if defined, or otherwise to the directory of the exchange file. --> <!-- <MaskPath>071_2810_msk.jpg</MaskPath> --> <!-- Exterior orientation of the camera, as estimated by navigation devices or aerotriangulation. This field is optional. --> <!-- Optional component Id: 1 is the main component (default), 0 is no component. Photos with incomplete pose cannot belong to the main component --> <!-- <Component>1</Component> --> <Pose> <!-- 3D rotation of the camera in the spatial reference system defined above. --> <!-- It defines the rotation matrix transforming world coordinates (in the specified SRS) into camera coordinates (with axes defined by the CameraOrientation of the photogroup). --> <!-- The rotation is optional: the pose can be limited to the 3D position of the camera center (e.g. when GPS position only is available). --> <Rotation> <!-- It can be specified in one of the four representations below: --> <!-- 1. A 3x3 matrix, using the <M_ij> tags, where M_ij denotes the coefficient of the (i+1)th row and the (j+1)th column of the rotation matrix. --> <M_00>-0.9999982912233401</M_00> <M_01>-0.001636319085375301</M_01> <M_02>-0.0008602425863163225</M_02> <M_10>-0.001631068695467463</M_10> <M_11>0.9999802528616577</M_11> <M_12>-0.00606906089589293</M_12> <M_20>0.0008701565192966738</M_20> <M_21>-0.006067647409696231</M_21> <M_22>-0.9999812130648239</M_22> <!-- 2. Omega/Phi/Kappa angles, in degrees, using the <Omega>, <Phi>, <Kappa> tags. Please refer to the formula in the camera model document. --> <!-- For this dataset, it would be: --> <!-- <Omega>179.6523471469934</Omega> --> <!-- <Phi>0.04985630236313049</Phi> --> <!-- <Kappa>179.9065465708369</Kappa> --> <!-- 3. Heading/Pitch/Roll angles, in degrees using the <Heading>, <Pitch>, <Roll> tags. Please refer to the formula in the camera model document. --> <!-- 4. Yaw/Pitch/Roll angles, in degrees using the <Yaw>, ,Pitch>, <Roll> tags. Please refer to the formula in the camera model document. --> </Rotation> <!-- 3D position of the camera center in the spatial reference system defined above. --> <!-- Depending on the SRS, x/y may stand either for longitude/latitude, for map projection coordinates, or for something else. --> <!-- Depending on the SRS, z may stand either for a geoid height, for an orthometric height, or for something else. --> <Center> <x>651999.7159189156</x> <y>6863073.633923346</y> <z>1318.897690166719</z> </Center> </Pose> <!-- Optional depth information can be provided with <NearDepth>, <MedianDepth>, and <FarDepth> tags --> <!-- Optional Exif data (each exif data property is optional) --><!-- <ExifData> <ImageDimensions> <Width>4000</Width> <Height>3000</Height> </ImageDimensions> <PixelDimensions> <Width>0.02</Width> <Height>0.02</Height> </PixelDimensions> <GPS> <Latitude>45.5686684</Latitude> <Longitude>2.6551104</Longitude> <Altitude>1589.5469</Altitude> </GPS> <FocalLength>24</FocalLength> <FocalLength35mmEq>36</FocalLength35mmEq> <Make>FUJIFILM</Make> <Model>FinePix S3Pro</Model> <LensModel>FinePix S3Pro</LensModel> <DateTimeOriginal>2015-04-29T06:40:26</DateTimeOriginal> </ExifData> --> </Photo> ... </Photogroup> </Photogroups> <!-- Control points are highly recommended for accurate positioning. --> <ControlPoints> <!-- Optionally, a different spatial reference system can be specified with the <SRSId> tag. By default, the SRS of the block is assumed. --> <ControlPoint> <!-- Control point name and description are optional. --> <Name>Control point #1</Name> <!-- Optionally, a different spatial reference system can be specified for each control point with the <SRSId> tag. By default, the SRS of the control points container is assumed. --> <!-- 3D position of the control point in the active spatial reference system. --> <!-- Depending on the SRS, x/y may stand either for longitude/latitude, for map projection coordinates, or for something else. --> <!-- Depending on the SRS, z may stand either for a geoid height, for an orthometric height, or for something else. --> <Position> <x>652788.0525588237</x> <y>6863015.362218254</y> <z>78.07000000122935</z> </Position> <!-- Image measurements. --> <Measurement> <!-- ID of the photo where the measurement is taken. The measurements of a control point must have different photo IDs. --> <PhotoId>151</PhotoId> <!-- 2D image position of the measurement, in pixels. The origin is the center of the upper-left image pixel, the x-axis is oriented to the right side of the image, and the y-axis is oriented to the bottom of the image. --> <!-- Alternatively, a 2D position with respect to the principal point, in millimeters. In this case, the xy-axis are oriented according to the CameraOrientation of the corresponding photogroup. --> <!-- For this dataset, it would be: --> <!-- <xmm>18.6231910176</xmm> --> <!-- <ymm>-4.48973352144</ymm> --> <x>7270.31</x> <y>6599.44</y> </Measurement> ... </ControlPoint> <ControlPoint> <Name>Control point #2</Name> <Position> <x>652123.2211166573</x> <y>6863245.976366176</y> <z>80.07999999914318</z> </Position> <!-- If specified, a control point may be a check point (default: false)--> <CheckPoint>true</CheckPoint> <!-- If specified, a control point may have accuracies --> <HorizontalAccuracy>0.01</HorizontalAccuracy> <VerticalAccuracy>0.10</VerticalAccuracy> <Measurement> <PhotoId>146</PhotoId> <x>3296.56</x> <y>9253.75</y> </Measurement> ... </ControlPoint> <ControlPoint> <Name>Control point #3</Name> <!-- If specified, a control point might be Full (default), Horizontal or Vertical --> <Category>Horizontal</Category> <Position> <!-- no z position --> <x>652365.1205012415</x> <y>6863549.148163618</y> </Position> <HorizontalAccuracy>0.01</HorizontalAccuracy> <!-- no vertical accuracy --> <Measurement> <PhotoId>95</PhotoId> <x>3178.26</x> <y>4020.21</y> </Measurement> ... </ControlPoint> ... </ControlPoints> <!-- Known tie points may be used to refine an aerotriangulation. --> <!-- Uncomment this section before import to get a single tie point in the imported block. Please note that a reconstruction created from a such block will fail. --> <!--<TiePoints> --><!-- Optionally, a different spatial reference system can be specified with the <SRSId> tag. By default, the SRS of the block is assumed. --><!-- <TiePoint> --><!-- Tie point name and description are optional. --><!-- --><!-- Optionally, a different spatial reference system can be specified for each tie point with the <SRSId> tag. By default, the SRS of the tie points container is assumed. --><!-- --><!-- Optional 3D position of the tie point in the active spatial reference system. --><!-- --><!-- Depending on the SRS, x/y may stand either for longitude/latitude, for map projection coordinates, or for something else. --><!-- --><!-- Depending on the SRS, z may stand either for a geoid height, for an orthometric height, or for something else. --><!-- <Position> <x>652119.8871409688</x> <y>6863304.305716386</y> <z>87.79328384995461</z> </Position> --><!-- Optional tie point color. --><!-- <Color> <Red>0.59</Red> <Green>1.0</Green> <Blue>0.0</Blue> </Color> --><!-- Image measurements. --><!-- <Measurement> --><!-- Optional measurement type User or Automatic (Automatic type is used if this tag is unspecified). --><!-- <Type>Automatic</Type> --><!-- ID of the photo where the measurement is taken. The measurements of a tie point must have different photo IDs. --><!-- <PhotoId>146</PhotoId> --><!-- 2D image position of the measurement, in pixels. The origin is the center of the upper-left image pixel, the x-axis is oriented to the right side of the image, and the y-axis is oriented to the bottom of the image. --><!-- --><!-- Alternatively, a 2D position with respect to the principal point, in millimeters. In this case, the xy-axis are oriented according to the CameraOrientation of the corresponding photogroup. --><!-- <x>3324.26001</x> <y>9930.269531</y> </Measurement> <Measurement> <PhotoId>158</PhotoId> <x>9079.006836000001</x> <y>9902.772461000001</y> </Measurement> <Measurement> <PhotoId>162</PhotoId> <x>6240.366211</x> <y>9896.118164</y> </Measurement> </TiePoint> </TiePoints>--> <!-- Optional block's positioning constraints based on user tie point (0 based indices). --> <!-- Each constraint is optional. --> <!--<PositioningConstraints> <OriginConstraint> <O>2</O> </OriginConstraint> <ScaleConstraint> <A>0</A> <B>3</B> <DistanceAB>56.350</DistanceAB> </ScaleConstraint> <AxisConstraint> <A>0</A> <B>3</B> <AxisAB>z</AxisAB> --><!-- x, y, or z --><!-- </AxisConstraint> <OrientationConstraint> <A>0</A> <B>3</B> <C>2</C> <AxisAB>z</AxisAB> --><!-- x, y or z --><!-- <AxisSideC>upperX</AxisSideC> --><!-- lowerX, upperX, lowerY, upperY, lowerZ, or upperZ --><!-- </OrientationConstraint> </PositioningConstraints>--><PointClouds> <PointClouds> <PointCloud> <Name>PointCloud name</Name> <Description>Description of the pointcloud</Description> <Path>Absolute or relative path to the POD pointcloud file</Path> <CreatedDateTime>2017-05-26T15:59:08</CreatedDateTime> <SRS>SRS definition</SRS> (can be empty) <BoundingBox> <XMin></XMin> <XMax></XMax> <YMin></YMin> <YMax></YMax> <ZMin></ZMin> <ZMax></ZMax> </BoundingBox> <MinResolution>0.0232077879728498</MinResolution> <MedResolution>0.0480807854162596</MedResolution> <MeanResolution>0.0779783209951879</MeanResolution> <MaxResolution>4.71837838822922</MaxResolution> <ColorMode></ColorMode><!-- UseIntensity or UseColor or None --> <Scans> <Scan> <Name>Scan name</Name> <NumPoints>320519</NumPoint> <Attributes>2</Attributes> <!-- If static scan --> <SourcePosition> <x>0.05</x> <y>18.59</y> <z>58.369</z> </SourcePosition> <!-- If mobile scan --> <Trajectories> <Trajectory> <Point> <x>0.05</x> <y>18.59</y> <z>58.369</z> </Point> … </Trajectory> <Trajectories> </Scan> </Scans </PointCloud> </PointClouds> </Block> </BlocksExchange>
You can find the above example and specification file in ContextCapture installation directory:
For more information about ContextCapture camera model, see also ContextCapture camera model.