OptionalModelObject ReverseTranslator::translateSiteLocation( const WorkspaceObject & workspaceObject )
{
    if( workspaceObject.iddObject().type() != IddObjectType::Site_Location ) {
        LOG(Error, "WorkspaceObject is not IddObjectType: Site:Location");
        return boost::none;
    }

    Site site = m_model.getUniqueModelObject<Site>();
    OptionalString optS = workspaceObject.name();
    if(optS) {
        site.setName(*optS);
    }

    OptionalDouble od = workspaceObject.getDouble(Site_LocationFields::Latitude);
    if(od) {
        site.setLatitude(*od);
    }

    od = workspaceObject.getDouble(Site_LocationFields::Longitude);
    if(od) {
        site.setLongitude(*od);
    }

    od = workspaceObject.getDouble(Site_LocationFields::TimeZone);
    if(od) {
        site.setTimeZone(*od);
    }

    od = workspaceObject.getDouble(Site_LocationFields::Elevation);
    if(od) {
        site.setElevation(*od);
    }

    return site;
}