<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">JGIS</journal-id><journal-title-group><journal-title>Journal of Geographic Information System</journal-title></journal-title-group><issn pub-type="epub">2151-1950</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/jgis.2022.145023</article-id><article-id pub-id-type="publisher-id">JGIS-120408</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Earth&amp;Environmental Sciences</subject></subj-group></article-categories><title-group><article-title>
 
 
  Georeferencing 3D Tiles Generated from Photogrammetry-Derived Mesh Using Ground Control Points
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Kyongil</surname><given-names>Woo</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Adrian</surname><given-names>Onsen</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>WonSok</surname><given-names>Kim</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Institute of Remote Sensing and Geoinformatics, Academy of Science, Pyongyang, DPRK</addr-line></aff><pub-date pub-type="epub"><day>30</day><month>09</month><year>2022</year></pub-date><volume>14</volume><issue>05</issue><fpage>430</fpage><lpage>443</lpage><history><date date-type="received"><day>4,</day>	<month>September</month>	<year>2022</year></date><date date-type="rev-recd"><day>11,</day>	<month>October</month>	<year>2022</year>	</date><date date-type="accepted"><day>14,</day>	<month>October</month>	<year>2022</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  In order to achieve efficient visualization of massive 3D photogrammetry models on the web-based virtual globe, original photogrammetry 3D models should be converted into 3D Tiles with accurate georeferencing information to render on the correct surface position. There are a few software tools and online platforms for generating 3D Tiles and various ways to generate 3D Tiles were reported, but none of them do not provide a way to georeference 3D Tiles with GCPs. This paper is intended to suggest an approach to georeference 3D Tiles with GCPs based on the Kabsch algorithm which is very similar to georeferencing raster data with GCPs in the traditional GIS. First, we mathematically describe how to apply the Kabsch algorithm for georeferencing 3D Tiles with GCPs. Following this description, we demonstrate our implementation allowing constructing GCPs and calculating the “transform” property of 3D Tiles. Finally, we tested the suggested method in Construkted Reality which is the platform to stream and visualize massive photogrammetry and point clouds datasets.
 
</p></abstract><kwd-group><kwd>3D Tiles</kwd><kwd> GCP</kwd><kwd> Kabsch</kwd><kwd> 3D WebGIS</kwd><kwd> Cesium</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>In recent years, photogrammetry technology has made tremendous progress technically and automatic 3D model reconstruction technique is becoming more and more mature. However, the significant amount of data associated with 3D models poses a challenge in terms of efficiently transmitting and visualizing 3D models on the Web-based 3D model viewer. To accommodate the streaming of massive 3D models, various open 3D model format specifications such as 3D Tiles, Indexed 3D Scene Layer (I3S), and Spatial 3D Model (S3M) were developed, and among them, 3D Tiles exhibit greater flexibility, higher customizability, better portability, and openness [<xref ref-type="bibr" rid="scirp.120408-ref1">1</xref>].</p><p>3D Tiles [<xref ref-type="bibr" rid="scirp.120408-ref2">2</xref>] is an open specification for streaming and rendering massive multi-source heterogeneous 3D geospatial datasets. It defines a spatial data structure and a set of tile formats designed for 3D and optimized for streaming and rendering. Its primary purpose is to improve the streaming and rendering performance of massive heterogeneous datasets.</p><p>As 3D Tiles has gained widespread adoption as the preferred way for streaming massive 3D data on the web, more and more software platforms have added support for the 3D Tiles, and many photogrammetry software tools such as FME [<xref ref-type="bibr" rid="scirp.120408-ref3">3</xref>], Bently ContextCapture [<xref ref-type="bibr" rid="scirp.120408-ref4">4</xref>], Agisoft MetaShape [<xref ref-type="bibr" rid="scirp.120408-ref5">5</xref>], and RealityCapture [<xref ref-type="bibr" rid="scirp.120408-ref6">6</xref>] support exporting 3D Tiles.</p><p>In order to accurately render 3D Tiles in the real-world location, they should be georeferenced, and this can be done in various ways depending on how 3D Tiles are generated.</p><p>Many photogrammetry software tools use GCPs to ensure that a 3D model’s reconstruction has the correct scale, orientation, or absolute position information [<xref ref-type="bibr" rid="scirp.120408-ref7">7</xref>] but, the way to georeference 3D Tiles generated from the 3D model with used GCPs which is very desirable has not yet been reported.</p><p>Therefore, in this paper, we suggest and implement the method to georeference 3D Tiles with GCPs based on the Kabsch algorithm [<xref ref-type="bibr" rid="scirp.120408-ref8">8</xref>], which is very similar to georeferencing raster data with GCPs in traditional GIS.</p><p>The remainder of the paper is organized as follows: Section 2 provides the review of related works, and the suggested idea is presented in Section 3, in Section 4 we demonstrate the implementation of our system. In Section 5 the validity is tested through experiments for sample 3D Tiles. Finally, Section 6 concludes the paper.</p></sec><sec id="s2"><title>2. Related Works</title><p>Converting different kinds of geospatial data such as photogrammetry-lidar derived mesh, BIM, and point cloud into 3D Tiles has drawn much attention since the strength of 3D Tiles was known, and a few commercial software tools and platforms like Cesium ion [<xref ref-type="bibr" rid="scirp.120408-ref9">9</xref>], FME, Bently Context Capture, RealityCapture for it were reported. However, there are some limitations in customizing 3D Tiles generation because the conversion workflow is still a blackbox for users. Moreover, using them is infeasible in case the data are sensitive to the restricted public access requirement.</p><p>It is generally agreed that so far, no standard, a wholesome open-source solution exists for converting geospatial data into 3D Tiles. Therefore, many researchers have studied different tiling methods according to the characteristics of their data and the purpose of their project.</p><p>Schilling et al. [<xref ref-type="bibr" rid="scirp.120408-ref10">10</xref>] described the data processing steps from CityGML to 3D Tiles, which used CESIUM_RTC [<xref ref-type="bibr" rid="scirp.120408-ref11">11</xref>] extension to georeference glTF. Gan et al. [<xref ref-type="bibr" rid="scirp.120408-ref12">12</xref>] suggested a method of generating 3D Tiles from DSM (digital surface model). Song et al. [<xref ref-type="bibr" rid="scirp.120408-ref13">13</xref>] proposed 3D Tiles dynamic loading and scheduling strategy based on terminal memory size and screen space error but did not explain how 3D Tiles used in their experimental was generated. Chen et al. [<xref ref-type="bibr" rid="scirp.120408-ref14">14</xref>] presented the workflow to convert IFC to 3D Tiles using multiple open source tools and libraries. Visuri et al. [<xref ref-type="bibr" rid="scirp.120408-ref15">15</xref>] used Cesium ion to convert their CityGML data to 3D Tiles. Kolarić et al. [<xref ref-type="bibr" rid="scirp.120408-ref16">16</xref>] implemented a set of routines for generating 3D Tiles that contain buildings with OpenStreetMap(OSM) data. Xu et al. [<xref ref-type="bibr" rid="scirp.120408-ref17">17</xref>] studied creating 3D Tiles from IFC using obj2gltf, and discussed how to calculate the transition matrix between the local coordinate system of IFC and EPSG:4978. Lu et al. [<xref ref-type="bibr" rid="scirp.120408-ref18">18</xref>] described the converting steps for generating 3D Tiles from WRCD (weather radar composing data) and they calculate a transform property of tileset.json to georeference 3D Tiles using the geographic coordinates of the WRCD center point. Mao et al. [<xref ref-type="bibr" rid="scirp.120408-ref19">19</xref>] proposed a workflow for generating 3D Tiles from CityGML. Li et al. [<xref ref-type="bibr" rid="scirp.120408-ref20">20</xref>] used objTo3dtiles to convert 3D electrical model to 3D Tiles but did not describe how their 3D Tiles was georeferenced. Jaillot et al. [<xref ref-type="bibr" rid="scirp.120408-ref21">21</xref>] suggested the temporal extension of 3D Tiles, and converted CityGML data of a 3DCityDB defined in a projected coordinate system to 3D Tiles using their own software, Py3DTiles for delivering time-evolving 3D city models on the web. Zhan et al. [<xref ref-type="bibr" rid="scirp.120408-ref1">1</xref>] presented a tiling algorithm of complex BIM models based on the R-tree.</p><p>In summary, although there were a few studies on generating 3D Tiles, to the best of our knowledge, no researchers have attempted to use GCPs to georeference 3D Tiles.</p><p>One of the easy and convenient ways to tile photogrammetry-derived 3D mesh is to use Cesium ion, which provides the “3D Tiles Location Editor” to georeference generated 3D Tiles. However, the “3D Tiles Location Editor” has a limitation in using because it is not easy to determine parameters like longitude, latitude, height, heading, pitch, and roll for georeferencing [<xref ref-type="bibr" rid="scirp.120408-ref22">22</xref>].</p><p>In the following section, technical specifications about our idea behind the georeferencing of 3D Tiles with GCPs are described.</p></sec><sec id="s3"><title>3. Suggested Approach</title><p>We suggest a way to georeference 3D Tiles generated from a photogrammetry-derived mesh with GCPs using the Kabsch algorithm [<xref ref-type="bibr" rid="scirp.120408-ref8">8</xref>]. We do not mind how a mesh is converted to 3D Tiles and focus on only georeferencing generated 3D Tiles. And we assume coordinates of all vertices of 3D Tiles are defined in the local coordinate system and the given tileset does not contain any nested tileset.</p><p>3D Tiles can have georeferencing information in two ways: directly define vertex positions in WGS84, Earth-centered, Earth-fixed coordinate system (ECEF or EPSG:4978 [<xref ref-type="bibr" rid="scirp.120408-ref23">23</xref>]) using RTC_CENTER [<xref ref-type="bibr" rid="scirp.120408-ref24">24</xref>]; to define vertex positions in the local coordinate system and to specify the “transform” property of each tile so that all vertex positions are transformed into EPSG:4978.</p><p>The basic idea is to set up points corresponding to the given GCPs on the 3D Tiles and find the best transformation by which transformed corresponding points match GCPs, and set the “transform” property using calculated transformation. This is formalized to the problem to find the optimal/best rotation and translation between two sets of corresponding 3D points data (<xref ref-type="fig" rid="fig1">Figure 1</xref>).</p><p>To solve this problem, we use the Kabsch algorithm [<xref ref-type="bibr" rid="scirp.120408-ref8">8</xref>] which is the method for calculating the optimal translation and rotation that minimizes the Root Mean Squared Deviation (RMSD) between two paired sets of points. It is widely used in structural bioinformatics, molecular simulations, molecular modelling, structural biology research to superimpose pairs of molecules and physics simulation. <xref ref-type="fig" rid="fig2">Figure 2</xref> shows the flowchart of Kabsch algorithm, and it is efficient and easy to implement because it only requires a few matrix operations.</p><p>However, the algorithm requires a predefined mapping between the sets of points, for example, in our case, the mapping of GCPs and corresponding points. We will describe how to setup such mapping in our system in Section 4.</p><p>Let B i , L i , H i ( i = 1 , 2 , ⋯ , n ) be latitude, longitude, and height of GCPs and p i ( i = 1 , 2 , ⋯ , n ) a point corresponding to ith GCP on the 3D Tiles.</p><p>So, P of the Kabsch algorithm can be directly constructed with p i</p><p>P = ( p x 1 p y 1 p z 1 p x 2 p y 2 p z 2 ⋮ ⋮ ⋮ p x n p y n p z n ) (1)</p><p>Q of the Kabsch algorithm can be constructed by converting the geographic coordinate of GCPs into ECEF coordinate system.</p><p>Q = ( q x 1 q y 1 q z 1 q x 2 q y 2 q z 2 ⋮ ⋮ ⋮ q x n q y n q z n ) (2)</p><p>where ( q x i , q y i , q z i ) is a cartesian coordinate in ECEF for B i , L i , H i − H offset ( i = 1 , 2 , ⋯ , n ) . H offset is a constant called “altitudeOffset”, and its meaning is explained in the following section.</p><p>Let C p , C q are centroids of GCPs and corresponding points.</p><p>C p = 1 n ∑ i = 1 n ( p x i , p y i , p z i ) (3)</p><p>C q = 1 n ∑ i = 1 n ( q x i , q y i , q z i ) (4)</p><p>Then the Translation step of the Kabsch algorithm is done using C p , C q , and P, Q are updated so that their centroid coincides with C p , C q .</p><p>P = ( p x 1 − C p x p y 1 − C p y p z 1 − C p z p x 2 − C p x p y 2 − C p y p z 2 − C p z ⋮ ⋮ ⋮ p x n − C p x p y n − C p y p z n − C p z ) (5)</p><p>Q = ( q x 1 − C q x q y 1 − C q y q z 1 − C q z q x 2 − C q x q y 2 − C q y q z 2 − C q z ⋮ ⋮ ⋮ q x n − C q x q y n − C q y q z n − C q z ) (6)</p><p>Next, the optimal rotation matrix R that turns P as close as possible to Q is calculated using Singular Value Decomposition [<xref ref-type="bibr" rid="scirp.120408-ref25">25</xref>] module as follows.</p><p>H = Q T P (7)</p><p>U Σ V = S V D ( H ) (8)</p><p>R = V U T (9)</p><p>As a result, we get a 3 &#215; 3 matrix R and then, we convert it to a 4 &#215; 4 matrix:</p><p>R = ( R 00 R 10 R 20 0 R 01 R 11 R 21 0 R 02 R 12 R 22 0 0 0 0 0 ) (10)</p><p>Finally, the transformation is determined:</p><p>M = T q R T p (11)</p><p>where,</p><p>T p = ( 1 0 0 − C p x 0 1 0 − C p y 0 0 1 − C p z 0 0 0 1 ) (12)</p><p>T q = ( 1 0 0 C q x 0 1 0 C q y 0 0 1 C q z 0 0 0 1 ) (13)</p><p>Error for each GCP is estimated as a distance between the GCP and corresponding point transformed by the calculated M. Based on our assumption above we can simply georeference 3D Tiles by setting the transform property of the root tile of the given 3D Tiles with M.</p></sec><sec id="s4"><title>4. System Demonstration</title><p>The suggested method in this paper has been adapted to the georeferencing module of Construkted Reality, which is the platform to stream and visualize massive photogrammetry and point cloud datasets with ease on the web. An online portal is available at https://construkted.com. The rendering and georeference module were developed with CesiumJS.</p><p>Once the photogrammetry-derived 3D mesh is uploaded, the backend of the Construkted Reality converts it to the 3D Tiles. The system detects whether or not the 3D Tiles are georeferenced and displays the 3D Tiles on the blank background if it does not have georeferencing information so that the user is notified that she/he needs to georeference 3D Tiles (<xref ref-type="fig" rid="fig3">Figure 3</xref>).</p><p>Then the user can start georeferencing on the “Multiple GCP Editor” panel (<xref ref-type="fig" rid="fig4">Figure 4</xref>), where it is possible to add necessary GCPs and input the latitude, longitude, and altitude of each GCP.</p><p>Next, by simply mouse clicking, users can specify points corresponding to all GCPs on the 3D Tiles (<xref ref-type="fig" rid="fig5">Figure 5</xref>).</p><p>The mapping info between GCPs and corresponding points on the 3D Tiles is stored in the “gcpData” metadata which is represented as a JSON object like <xref ref-type="fig" rid="fig6">Figure 6</xref>.</p><p>The “gcps” property in the “gcpData” metadata defines an array of ground control points defined in the geographic coordinates so that each element has the meaning of latitude, longitude, and altitude. The “correspondingPoints” property defines an array of cartesian points corresponding to ground control points. The “altitudeOffset” property is the offset value of altitude which is added to all ground control points’ altitude in calculating georeferencing information. The surveyed altitude of GCP may be different than the altitude of the terrain on the virtual globe, so this is very useful in case users hope to correctly clamp 3D Tiles to the scene’s terrain, for example, Cesium World Terrain [<xref ref-type="bibr" rid="scirp.120408-ref26">26</xref>].</p><p>At least 3 GCPs must be specified because the Kabsch algorithm requires a minimum of 3 unique points for a unique solution.</p><p>Once the user finishes the input of GCPs and corresponding points and clicks the “Update Asset Location” button, the system calculates M with GCPs and corresponding points as in described section 3, and displays an error for each GCP, and the camera of the scene flies to the calculated georeferenced location of the 3D Tiles (<xref ref-type="fig" rid="fig7">Figure 7</xref>).</p></sec><sec id="s5"><title>5. Experiments</title><p>In order to evaluate the feasibility of the suggested method, several experiments were carried out with 3D models generated from sample datasets of OpenDroneMap[<xref ref-type="bibr" rid="scirp.120408-ref27">27</xref>], Pix4DMapper [<xref ref-type="bibr" rid="scirp.120408-ref28">28</xref>], and RealityCapture [<xref ref-type="bibr" rid="scirp.120408-ref6">6</xref>] that have GCPs (Appendix A).</p><sec id="s5_1"><title>5.1. Experiment 1</title><p>The dataset used in the experiment is an example dataset, “sheffield_cross” for OpenDroneMap, which has 5 GCPs defined in the WGS 84/UTM zone 17N. This dataset was processed through WebODM Lighting [<xref ref-type="bibr" rid="scirp.120408-ref29">29</xref>]. Points corresponding to GCPs were visually identified on the 3D Tiles using the GCP file and images included in the dataset (<xref ref-type="fig" rid="fig8">Figure 8</xref>).</p><p><xref ref-type="table" rid="table1">Table 1</xref> shows calculated errors for all GCPs, where Latitude, Longitude, and</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Calculated errors for GCPs of sheffield_cross</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Latitude</th><th align="center" valign="middle" >Longitude</th><th align="center" valign="middle" >Altitude</th><th align="center" valign="middle" >x</th><th align="center" valign="middle" >y</th><th align="center" valign="middle" >z</th><th align="center" valign="middle" >Error (m)</th></tr></thead><tr><td align="center" valign="middle" >28.04109</td><td align="center" valign="middle" >−82.697388</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >−32.804</td><td align="center" valign="middle" >−12.103</td><td align="center" valign="middle" >2.883</td><td align="center" valign="middle" >0.5042</td></tr><tr><td align="center" valign="middle" >28.041439</td><td align="center" valign="middle" >−82.697094</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >−3.835</td><td align="center" valign="middle" >25.683</td><td align="center" valign="middle" >2.962</td><td align="center" valign="middle" >0.5104</td></tr><tr><td align="center" valign="middle" >28.041444</td><td align="center" valign="middle" >−82.696838</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >21.709</td><td align="center" valign="middle" >25.551</td><td align="center" valign="middle" >3.128</td><td align="center" valign="middle" >0.3332</td></tr><tr><td align="center" valign="middle" >28.041009</td><td align="center" valign="middle" >−82.696876</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >17.289</td><td align="center" valign="middle" >−22.478</td><td align="center" valign="middle" >3.172</td><td align="center" valign="middle" >0.2426</td></tr><tr><td align="center" valign="middle" >28.041064</td><td align="center" valign="middle" >−82.697071</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >−0.837</td><td align="center" valign="middle" >−15.971</td><td align="center" valign="middle" >3.241</td><td align="center" valign="middle" >0.8279</td></tr></tbody></table></table-wrap><p>Altitude columns represent the geographic coordinates of a ground control point, and x, y, and z columns are the cartesian coordinate of a corresponding point defined in the 3D Tiles’ local coordinate system.</p></sec><sec id="s5_2"><title>5.2. Experiment 2</title><p>In this experiment, we used an example project, “quarry” for PIX4DMapper. GCPs are defined in EPSG:21781 [<xref ref-type="bibr" rid="scirp.120408-ref30">30</xref>] and corresponding points were visually identified using GCP overview images of the dataset and 3D GCP Markers of the project (<xref ref-type="fig" rid="fig9">Figure 9</xref>).</p><p><xref ref-type="fig" rid="fig1">Figure 1</xref>0 and <xref ref-type="table" rid="table2">Table 2</xref> show the result of georeferencing of 3D Tiles for this project.</p></sec><sec id="s5_3"><title>5.3. Experiment 3</title><p>We used a sample dataset called “Drone Imagery + Ground control points” for RealityCapture, where all GCPs are defined in EPSG:4258 [<xref ref-type="bibr" rid="scirp.120408-ref31">31</xref>]. All GCPs are marked on the texture of the generated 3D model like a small section of a checkerboard (<xref ref-type="fig" rid="fig1">Figure 1</xref>1) which leaves very little ambiguity about where the “point” of the ground control point is so we could identify all GCPs clearly on the texture of the 3D Tiles.</p><p><xref ref-type="fig" rid="fig1">Figure 1</xref>2 and <xref ref-type="table" rid="table3">Table 3</xref> show the result of georeferencing 3D Tiles. As can be known in <xref ref-type="table" rid="table3">Table 3</xref>, the errors on all GCPs have a margin of a few centimeters.</p><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Calculated errors for GCPs of quarry</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Latitude</th><th align="center" valign="middle" >Longitude</th><th align="center" valign="middle" >Altitude</th><th align="center" valign="middle" >x</th><th align="center" valign="middle" >y</th><th align="center" valign="middle" >z</th><th align="center" valign="middle" >Error (m)</th></tr></thead><tr><td align="center" valign="middle" >46.6532533</td><td align="center" valign="middle" >6.5418412</td><td align="center" valign="middle" >460.914</td><td align="center" valign="middle" >382.899</td><td align="center" valign="middle" >−224.233</td><td align="center" valign="middle" >−74.065</td><td align="center" valign="middle" >0.2424</td></tr><tr><td align="center" valign="middle" >46.6545008</td><td align="center" valign="middle" >6.5374464</td><td align="center" valign="middle" >458.742</td><td align="center" valign="middle" >48.011</td><td align="center" valign="middle" >−81.644</td><td align="center" valign="middle" >−76.223</td><td align="center" valign="middle" >0.2081</td></tr><tr><td align="center" valign="middle" >46.6546023</td><td align="center" valign="middle" >6.5411155</td><td align="center" valign="middle" >474.195</td><td align="center" valign="middle" >328.933</td><td align="center" valign="middle" >−73.466</td><td align="center" valign="middle" >−60.706</td><td align="center" valign="middle" >0.2721</td></tr><tr><td align="center" valign="middle" >46.653783</td><td align="center" valign="middle" >6.5365471</td><td align="center" valign="middle" >572.394</td><td align="center" valign="middle" >−20.742</td><td align="center" valign="middle" >−161.043</td><td align="center" valign="middle" >37.486</td><td align="center" valign="middle" >0.8062</td></tr><tr><td align="center" valign="middle" >46.6547443</td><td align="center" valign="middle" >6.5338956</td><td align="center" valign="middle" >566.361</td><td align="center" valign="middle" >−223.055</td><td align="center" valign="middle" >−51.687</td><td align="center" valign="middle" >31.372</td><td align="center" valign="middle" >0.2534</td></tr><tr><td align="center" valign="middle" >46.6560867</td><td align="center" valign="middle" >6.5315791</td><td align="center" valign="middle" >558.969</td><td align="center" valign="middle" >−398.627</td><td align="center" valign="middle" >99.748</td><td align="center" valign="middle" >24.064</td><td align="center" valign="middle" >0.4043</td></tr><tr><td align="center" valign="middle" >46.657881</td><td align="center" valign="middle" >6.534205</td><td align="center" valign="middle" >565.863</td><td align="center" valign="middle" >−196.142</td><td align="center" valign="middle" >296.976</td><td align="center" valign="middle" >30.860</td><td align="center" valign="middle" >0.4178</td></tr><tr><td align="center" valign="middle" >46.6563958</td><td align="center" valign="middle" >6.5360955</td><td align="center" valign="middle" >574.465</td><td align="center" valign="middle" >−53.048</td><td align="center" valign="middle" >130.127</td><td align="center" valign="middle" >39.491</td><td align="center" valign="middle" >0.1756</td></tr><tr><td align="center" valign="middle" >46.6558696</td><td align="center" valign="middle" >6.538516</td><td align="center" valign="middle" >574.874</td><td align="center" valign="middle" >131.609</td><td align="center" valign="middle" >69.446</td><td align="center" valign="middle" >39.927</td><td align="center" valign="middle" >0.1966</td></tr></tbody></table></table-wrap><table-wrap id="table3" ><label><xref ref-type="table" rid="table3">Table 3</xref></label><caption><title> Calculated errors for all GCPs</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Latitude</th><th align="center" valign="middle" >Longitude</th><th align="center" valign="middle" >Altitude</th><th align="center" valign="middle" >x</th><th align="center" valign="middle" >y</th><th align="center" valign="middle" >z</th><th align="center" valign="middle" >Error (m)</th></tr></thead><tr><td align="center" valign="middle" >18.2921697</td><td align="center" valign="middle" >49.02801924</td><td align="center" valign="middle" >170.56</td><td align="center" valign="middle" >98.4202</td><td align="center" valign="middle" >−168.4679</td><td align="center" valign="middle" >1.6535</td><td align="center" valign="middle" >0.0027</td></tr><tr><td align="center" valign="middle" >18.29265927</td><td align="center" valign="middle" >49.02834583</td><td align="center" valign="middle" >170.52</td><td align="center" valign="middle" >137.3088</td><td align="center" valign="middle" >−132.1299</td><td align="center" valign="middle" >1.6447</td><td align="center" valign="middle" >0.0227</td></tr><tr><td align="center" valign="middle" >18.29137971</td><td align="center" valign="middle" >49.02883794</td><td align="center" valign="middle" >169.96</td><td align="center" valign="middle" >43.74755</td><td align="center" valign="middle" >−77.3829</td><td align="center" valign="middle" >1.0770</td><td align="center" valign="middle" >0.0218</td></tr><tr><td align="center" valign="middle" >18.28850684</td><td align="center" valign="middle" >49.02991817</td><td align="center" valign="middle" >171.20</td><td align="center" valign="middle" >−166.3300</td><td align="center" valign="middle" >42.7574</td><td align="center" valign="middle" >2.3016</td><td align="center" valign="middle" >0.0223</td></tr><tr><td align="center" valign="middle" >18.29200705</td><td align="center" valign="middle" >49.03060945</td><td align="center" valign="middle" >172.10</td><td align="center" valign="middle" >89.6525</td><td align="center" valign="middle" >119.6128</td><td align="center" valign="middle" >3.2101</td><td align="center" valign="middle" >0.0205</td></tr><tr><td align="center" valign="middle" >18.2913444</td><td align="center" valign="middle" >49.03018237</td><td align="center" valign="middle" >170.78</td><td align="center" valign="middle" >41.1847</td><td align="center" valign="middle" >72.1211</td><td align="center" valign="middle" >1.9025</td><td align="center" valign="middle" >0.0125</td></tr><tr><td align="center" valign="middle" >18.29076568</td><td align="center" valign="middle" >49.02984829</td><td align="center" valign="middle" >170.33</td><td align="center" valign="middle" >−1.1522</td><td align="center" valign="middle" >34.9538</td><td align="center" valign="middle" >1.4589</td><td align="center" valign="middle" >0.0117</td></tr><tr><td align="center" valign="middle" >18.29062673</td><td align="center" valign="middle" >49.02954647</td><td align="center" valign="middle" >170.09</td><td align="center" valign="middle" >−11.3206</td><td align="center" valign="middle" >1.3982</td><td align="center" valign="middle" >1.2050</td><td align="center" valign="middle" >0.0106</td></tr><tr><td align="center" valign="middle" >18.28960265</td><td align="center" valign="middle" >49.0303607</td><td align="center" valign="middle" >171.01</td><td align="center" valign="middle" >−86.2110</td><td align="center" valign="middle" >91.9539</td><td align="center" valign="middle" >2.1236</td><td align="center" valign="middle" >0.0105</td></tr><tr><td align="center" valign="middle" >18.29008487</td><td align="center" valign="middle" >49.02921304</td><td align="center" valign="middle" >170.21</td><td align="center" valign="middle" >−50.9454</td><td align="center" valign="middle" >−35.6919</td><td align="center" valign="middle" >1.3263</td><td align="center" valign="middle" >0.0092</td></tr><tr><td align="center" valign="middle" >18.29016613</td><td align="center" valign="middle" >49.03086585</td><td align="center" valign="middle" >171.71</td><td align="center" valign="middle" >−45.0032</td><td align="center" valign="middle" >148.1308</td><td align="center" valign="middle" >2.8409</td><td align="center" valign="middle" >0.0165</td></tr><tr><td align="center" valign="middle" >18.28954766</td><td align="center" valign="middle" >49.02921031</td><td align="center" valign="middle" >170.56</td><td align="center" valign="middle" >−90.2397</td><td align="center" valign="middle" >−35.9911</td><td align="center" valign="middle" >1.6917</td><td align="center" valign="middle" >0.0218</td></tr><tr><td align="center" valign="middle" >18.290454</td><td align="center" valign="middle" >49.03009902</td><td align="center" valign="middle" >170.18</td><td align="center" valign="middle" >−23.9445</td><td align="center" valign="middle" >62.8424</td><td align="center" valign="middle" >1.3068</td><td align="center" valign="middle" >0.0076</td></tr></tbody></table></table-wrap></sec></sec><sec id="s6"><title>6. Conclusion</title><p>From experiments in this paper, it can be concluded that the Kabsch algorithm can be applied to georeferencing 3D Tiles using GCPs. Georeferencing errors were inevitably affected by the accuracy of “clicking on the 3D Tiles” for specifying points corresponding to GCPs. In experiment3 error was very small enough to accept the georeferencing result because it was easy to recognize GCP on the 3D Tiles. In order to clamp 3D Tiles to Cesium World Terrain, different values of “altitudeOffset” were used for the reason that Cesium World Terrain does not provide elevation relative to the WGS84 ellipsoid.</p></sec><sec id="s7"><title>Data Availability Statement</title><p>Datasets used in this study are available at the following links.</p><p>https://github.com/pierotofy/drone_dataset_sheffield_cross/</p><p>https://support.pix4d.com/hc/en-us/articles/360000235126-Example-projects-real-photogrammetry-data#quarry</p><p>https://www.capturingreality.com/SampleDatasets</p></sec><sec id="s8"><title>Conflicts of Interest</title><p>The authors declare no conflicts of interest regarding the publication of this paper.</p></sec><sec id="s9"><title>Cite this paper</title><p>Woo, K., Onsen, A. and Kim, W. (2022) Georeferencing 3D Tiles Generated from Photogrammetry-Derived Mesh Using Ground Control Points. Journal of Geographic Information System, 14, 430-443. https://doi.org/10.4236/jgis.2022.145023</p></sec><sec id="s10"><title>Appendix A</title><p>Results presented in this study can be found at the following links.</p><p>https://construkted.com/asset/a1fg3o0r69r/</p><p>https://construkted.com/asset/avajuri6r3g/</p><p>https://construkted.com/asset/avplbp844b3/</p></sec></body><back><ref-list><title>References</title><ref id="scirp.120408-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Zhan, W., Chen, Y. and Chen, J. (2021) 3D Tiles-Based High-Efficiency Visualization Method for Complex BIM Models on the Web. ISPRS International Journal of Geo-Information, 10, Article No. 476. https://doi.org/10.3390/ijgi10070476</mixed-citation></ref><ref id="scirp.120408-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">3D Tiles Format Specification.  
https://github.com/CesiumGS/3d-tiles/tree/main/specification#tile-format-specifications/</mixed-citation></ref><ref id="scirp.120408-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">FME Desktop. https://www.safe.com/fme/fme-desktop/</mixed-citation></ref><ref id="scirp.120408-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">ContextCapture Viewer.  
https://www.bentley.com/en/products/brands/contextcapture</mixed-citation></ref><ref id="scirp.120408-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Agisoft MetaShape. https://www.agisoft.com/</mixed-citation></ref><ref id="scirp.120408-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Reality Capture. https://www.capturingreality.com/</mixed-citation></ref><ref id="scirp.120408-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">PIX4D (2019, December 4) Ground Control Points: Why Are They Important? 
https://www.pix4d.com/blog/why-ground-control-points-important</mixed-citation></ref><ref id="scirp.120408-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Wikipedia (n.d.) Kabsch Algorithm.  
https://en.m.wikipedia.org/wiki/Kabsch_algorithm</mixed-citation></ref><ref id="scirp.120408-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Cesium ion. https://cesium.com/platform/cesium-ion/</mixed-citation></ref><ref id="scirp.120408-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Schilling, A., Bolling, J. and Nagel, C. (2016) Using glTF for Streaming CityGML 3D City Models. Proceedings of the 21st International Conference on Web3D Technology, Anaheim, 22-24 July 2016, 109-116.  
https://doi.org/10.1145/2945292.2945312</mixed-citation></ref><ref id="scirp.120408-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">CESIUM_RTC.  
https://github.com/KhronosGroup/glTF/blob/main/extensions/1.0/Vendor/CESIUM_RTC/README.md</mixed-citation></ref><ref id="scirp.120408-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Gan, L., Li, J. and Jing, N. (2017) Hybrid Organization and Visualization of the DSM Combined with 3D Building Model. Proceedings of the 2017 2nd International Conference on Image, Vision and Computing, Chengdu, 2-4 June 2017, 566-571.  
https://doi.org/10.1109/ICIVC.2017.7984619</mixed-citation></ref><ref id="scirp.120408-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Song, Z. and Li, J. (2018) A Dynamic Tiles Loading and Scheduling Strategy for Massive Oblique Photogrammetry Models. Proceedings of the 2018 3rd IEEE International Conference on Image, Vision and Computing, Chongqing, 27-29 June 2018, 648-652. https://doi.org/10.1109/ICIVC.2018.8492731</mixed-citation></ref><ref id="scirp.120408-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Chen, Y., Shooraj, E., Rajabifard, A. and Sabri, S. (2018) From IFC to 3D Tiles: An Integrated Open-Source Solution for Visualising BIMs on Cesium. ISPRS International Journal of Geo-Information, 7, Article No. 393.  
https://doi.org/10.3390/ijgi7100393</mixed-citation></ref><ref id="scirp.120408-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Visuri, H., Jokela, J., Mesterton, N., Latvala, P., Aarnio, T. (2019) Producing and Visualizing a Country-Wide 3D Data Repository in Finland. International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, XLII-4/W15, 105-110. https://doi.org/10.5194/isprs-archives-XLII-4-W15-105-2019</mixed-citation></ref><ref id="scirp.120408-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Kolaric, S. and Shelden, D. (2019) DBL SmartCity: An Open-Source IoT Platform for Managing Large BIM and 3D Geo-Referenced Datasets. Proceedings of the 52nd Hawaii International Conference on System Sciences, Hawaii, 8 January 2019, 1965-1974. https://doi.org/10.24251/HICSS.2019.238</mixed-citation></ref><ref id="scirp.120408-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Xu, Z., Zhang, L., Li, H., Lin, Y. and Yin, S. (2020) Combining IFC and 3D Tiles to Create 3D Visualization for Building Information Modeling. Automation in Construction, 109, Article ID: 102995. https://doi.org/10.1016/j.autcon.2019.102995</mixed-citation></ref><ref id="scirp.120408-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Lu, M., Wang, X., Liu, X., Chen M, Bi, S., Zhang, Y. and Lao, T. (2020) Web-Based Real-Time Visualization of Large-Scale Weather Radar Data Using 3D Tiles. Transactions in GIS, 25, 25-43. https://doi.org/10.1111/tgis.12638</mixed-citation></ref><ref id="scirp.120408-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Mao, B., Ban, Y. and Laumert, B. (2020) Dynamic Online 3D Visualization Framework for Real-Time Energy Simulation Based on 3D Tiles. ISPRS International Journal of Geo-Information, 9, Article No. 166. https://doi.org/10.3390/ijgi9030166</mixed-citation></ref><ref id="scirp.120408-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Li, Y., Zhang, H. and Zhang, Q. (2021) A Framework for Interactive Online 3D Visualization of Electric Information. Journal of Physics: Conference Series, 1757, Article ID: 012170. https://doi.org/10.1088/1742-6596/1757/1/012170</mixed-citation></ref><ref id="scirp.120408-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Jaillot, V., Servigne, S. and Gesquière, G. (2020) Delivering Time-Evolving 3D City Models for Web Visualization. International Journal of Geographical Information Science, 34, 2030-2052. https://doi.org/10.1080/13658816.2020.1749637</mixed-citation></ref><ref id="scirp.120408-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">Cesium (n.d.) Set Location for Data Uploaded to Cesium Ion.  
https://cesium.com/learn/3d-tiling/ion-tile-set-location/</mixed-citation></ref><ref id="scirp.120408-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">EPSG:4978. https://spatialreference.org/ref/epsg/wgs-84-2/</mixed-citation></ref><ref id="scirp.120408-ref24"><label>24</label><mixed-citation publication-type="other" xlink:type="simple">3D Tiles Reference Card.  
https://github.com/CesiumGS/3d-tiles/blob/main/3d-tiles-reference-card.pdf</mixed-citation></ref><ref id="scirp.120408-ref25"><label>25</label><mixed-citation publication-type="other" xlink:type="simple">Wikipedia (n.d.) Singular Value Decomposition.  
https://en.wikipedia.org/wiki/Singular_value_decomposition</mixed-citation></ref><ref id="scirp.120408-ref26"><label>26</label><mixed-citation publication-type="other" xlink:type="simple">Cesium World Terrain.  
https://cesium.com/platform/cesium-ion/content/cesium-world-terrain/</mixed-citation></ref><ref id="scirp.120408-ref27"><label>27</label><mixed-citation publication-type="other" xlink:type="simple">OpenDroneMap. https://www.opendronemap.org/</mixed-citation></ref><ref id="scirp.120408-ref28"><label>28</label><mixed-citation publication-type="other" xlink:type="simple">PIX4Dmapper.  
https://www.pix4d.com/product/pix4dmapper-photogrammetry-software</mixed-citation></ref><ref id="scirp.120408-ref29"><label>29</label><mixed-citation publication-type="other" xlink:type="simple">WebODM Lightning. https://webodm.net/</mixed-citation></ref><ref id="scirp.120408-ref30"><label>30</label><mixed-citation publication-type="other" xlink:type="simple">EPSG:21781. https://spatialreference.org/ref/epsg/ch1903-lv03/</mixed-citation></ref><ref id="scirp.120408-ref31"><label>31</label><mixed-citation publication-type="other" xlink:type="simple">EPSG:4258. https://spatialreference.org/ref/epsg/etrs89/</mixed-citation></ref></ref-list></back></article>