ContextCapture E.N.U. Projection

If an output was created using The E.N.U. projection, is it possible to reproject the data using the defined origin in the metadata? I have received some output generated from ContextCapture, but it's all in E.N.U. and I need to convert to latitude/longitude (epsg 4326). Just trying to see if reprojecting is possible, or does the data need to be exported to a more suited SRS other than E.N.U.?

  • So I have an OBJ dataset, which was output from ContextCapture, and is an E.N.U projection. There's a metadata.xml file provided with the datasets which looks like this

     

    <?xml version="1.0" encoding="utf-8"?>
    <ModelMetadata version="1">
    	<!--Spatial Reference System-->
    	<SRS>ENU:LATITUDE,LONGITUDE</SRS>
    	<!--Origin in Spatial Reference System-->
    	<SRSOrigin>0,0,0</SRSOrigin>
    </ModelMetadata>
    

    I found another post https://communities.bentley.com/products/3d_imaging_and_point_cloud_software/f/contextcapture-descartes-pointools-forum/112873/contextcapture-s-applications-in-creating-map where Felix James said not to use the E.N.U format because it won't work when imported into a mapping tool, but I'm trying to clarify if there is a way to reproject the data if it's in E.N.U (outside of these tools), or is this specification not published and not something I am able to work with?

  • From CC help:

    When poses of photographs are georeferenced, ContextCapture uses the Earth Centered Earth Fixed (ECEF)
    spatial referential system. ECEF is a standard global Cartesian coordinate system. Please refer to http://
    en.wikipedia.org/wiki/ECEF for a complete definition.
    Whereas ContextCapture uses ECEF for photo poses, it uses a local East North Up (ENU) spatial coordinate
    system for the 3D reconstruction process. ENU is a Cartesian coordinate system with a local origin, oriented
    along the WGS84 ellipsoid, with axes pointing to East (X), North (Y) and Up (Z) directions. ENU allows a more
    convenient manipulation of 3D models than ECEF, because its Z axis coincides with the up vector. However,
    please note that 3D models produced by ContextCapture can later be reprojected to any coordinate system.

    ----

    OBJ format doesn't have SRS systems so it is in local coordinates. What you could do is change "global origin" for this dataset so it aligns correctly with your coordinates. I think OBJ supports to set false easting and northing.

    In your case it seems that dataset does not have SRS at all so it may not be georeferenced or even in wrong scale or fake units.

  • Did some experiments and it seems Alias Wavefront OBJ doesn't have option to offset the local coordinates. They are fixed as is so some coordinate systems can't be used as too much numbers causes loss of precision.

    That is why there are many different approaches how to write SRS and its origin coordinates(.fwt world, .prj., .lua) Metadata.xml is Contextcapture helper file for exporting SRS and offset for OBJ. What is silly is that Acute3D or Microstation doesn't use this helper file. Not sure if there is other helper format which Microstation understands but you can reference the OBJ relative and change scale so it aligns correctly.

    So only option besides creating correct output from ContextCapture would be to try to reproject the OBJ using CloudCompare or Meshlab. Unfortunately from helper file it is clear that there is no known georeference for your dataset. as it should look different if it is georeferenced.

    <?xml version="1.0" encoding="utf-8"?>
    <ModelMetadata version="1">
    	<!--Spatial Reference System-->
    	<SRS>EPSG:4326</SRS>
    	<!--Origin in Spatial Reference System-->
    	<SRSOrigin>56.12345,26.12345,71.00</SRSOrigin>
    </ModelMetadata>
    

  • Yeah, your findings seem to line up with what I assumed. I have been given data with EPSG codes which I was able to properly reproject for our use case, but the data I was given with ENU is where I had trouble. Was trying to see if there was a possible way to figure out what projection 'ENU' is (maybe it relates to an EPSG code, or proj4 string) but currently haven't figured any that work well.

    Do you know if it is possible to import an ENU OBJ into ContextCapture, and then having it output a different SRS (4236 for example?). I would assume if that is possible, then there is some conversion that can be done it's just not published?