1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[9566],{71437(e,t,n){n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>l,frontMatter:()=>s,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"tutorial/tutorial-extras/ta080-data-folder-structure","title":"The project directory structure","description":"What VRGS writes next to a project \u2014 the .vgpx file, the data folder, the database and the backups \u2014 and which parts matter when you move or archive a project.","source":"@site/versioned_docs/version-3.4/tutorial/tutorial-extras/ta080-data-folder-structure.md","sourceDirName":"tutorial/tutorial-extras","slug":"/tutorial/tutorial-extras/ta080-data-folder-structure","permalink":"/docs/tutorial/tutorial-extras/ta080-data-folder-structure","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/versioned_docs/version-3.4/tutorial/tutorial-extras/ta080-data-folder-structure.md","tags":[],"version":"3.4","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"description":"What VRGS writes next to a project \u2014 the .vgpx file, the data folder, the database and the backups \u2014 and which parts matter when you move or archive a project."},"sidebar":"docs","previous":{"title":"Wrap-up","permalink":"/docs/tutorial/tutorial-basics/ta070-congratulations"},"next":{"title":"Managing backups","permalink":"/docs/tutorial/tutorial-extras/ta090-managing-backups"}}');var r=n(74848),a=n(28453);const s={sidebar_position:1,description:"What VRGS writes next to a project \u2014 the .vgpx file, the data folder, the database and the backups \u2014 and which parts matter when you move or archive a project."},i="The project directory structure",d={},c=[{value:"Accessing the database file",id:"accessing-the-database-file",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",strong:"strong",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"the-project-directory-structure",children:"The project directory structure"})}),"\n",(0,r.jsxs)(t.p,{children:["A VRGS project is ",(0,r.jsx)(t.strong,{children:"two things on disk"}),": a small ",(0,r.jsx)(t.code,{children:".vgpx"})," project file, and a data\nfolder beside it named after the project with ",(0,r.jsx)(t.code,{children:" Data"})," appended. Both are needed \u2014\nthe ",(0,r.jsx)(t.code,{children:".vgpx"})," on its own will not open a project, because the interpretations live\nin the database inside the data folder."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"\ud83d\udcdcMyProject.vgpx // the project file (JSON): settings, coordinate system, display options\n\n\ud83d\udce6MyProject Data\n \u2523 \ud83d\udcc2DATABASES // Database directory\n \u2503 \u2517 \ud83d\udcdcSQLDBv4.db // sqlite database - every interpretation in the project\n \u2523 \ud83d\udcc2VGP_BACKUP // Backup directory\n \u2503 \u2523 \ud83d\udcdcSat_Oct_24_172750_2020.zip // Backup of the last saved project\n \u2503 \u2517 \ud83d\udcdcSat_Oct_22_201643_2020_UpgradeFrom_266.zip\n \u2523 \ud83d\udcc2ASSETS // location of user defined assets\n \u2523 \ud83d\udcc2HTML // field guide and HTML pages\n \u2523 \ud83d\udcc2JSON_WELL_LOGS\n \u2523 \ud83d\udcc2LOGIMAGES\n \u2523 \ud83d\udcc2MULTIMEDIA // files linked from multimedia annotations\n \u2523 \ud83d\udcc2ORTHOIMAGES\n \u2503 \u2517 AA.tif\n \u2523 \ud83d\udcc2ORTHOPANELS\n \u2523 \ud83d\udcc2PATTERN_FILLS // log pattern fills, seeded from the VRGS installation\n \u2523 \ud83d\udcc2PLUGINS\n \u2523 \ud83d\udcc2PYTHON // project Python scripts\n \u2523 \ud83d\udcc2RAG_DB // Athos's index of this project's literature\n \u2523 \ud83d\udcc2RECYCLING // deleted objects, recoverable until you clear it\n \u2523 \ud83d\udcc2SEGMENTATION\n \u2523 \ud83d\udcc2SFM_WORKSPACES // photogrammetry (SfM) reconstruction workspaces\n \u2523 \ud83d\udcc2SLIDES\n \u2503 \u2523 \ud83d\udcdcPresentationSlide1.jpg\n \u2523 \ud83d\udcc2TILEMODELS\n \u2523 \ud83d\udcc2TRIMESH\n \u2523 \ud83d\udcdcProjectPrefs.json // project preferences, colour maps, autosave settings\n \u2523 \ud83d\udcdcSkybox_0_0.dxt\n \u2523 \ud83d\udcdcSkybox_0_0.pcl\n \u2523 \ud83d\udcdcTreforLowRes.jpg_0.jpg\n \u2523 \ud83d\udcdcTreforLowRes.obj_0.dxt\n \u2517 \ud83d\udcdcTreforLowRes.obj_0.tin\n"})}),"\n",(0,r.jsxs)(t.p,{children:["Most of the sub-folders are created when the project is, whether or not you ever\nput anything in them, so an empty folder is not a sign that something went wrong.\nThe loose files at the root of the data folder are VRGS's own copies of the data\nyou imported: ",(0,r.jsx)(t.code,{children:".tin"})," for meshes, ",(0,r.jsx)(t.code,{children:".pcl"})," for point clouds, ",(0,r.jsx)(t.code,{children:".dxt"})," for textures.\nThey are what makes reopening a project so much faster than the original import."]}),"\n",(0,r.jsx)(t.admonition,{title:"Moving or archiving a project",type:"warning",children:(0,r.jsxs)(t.p,{children:["Copy the ",(0,r.jsx)(t.code,{children:".vgpx"})," ",(0,r.jsx)(t.strong,{children:"and"})," the ",(0,r.jsx)(t.code,{children:" Data"})," folder together, and keep them side by side.\nA ",(0,r.jsx)(t.code,{children:".vgpx"})," on its own has no interpretations in it, and a data folder on its own\nhas no project to open."]})}),"\n",(0,r.jsx)(t.admonition,{title:"Older projects",type:"note",children:(0,r.jsxs)(t.p,{children:["Projects created with VRGS 3.3 and earlier have a binary ",(0,r.jsx)(t.code,{children:".vgp"})," file where the\n",(0,r.jsx)(t.code,{children:".vgpx"})," is shown above. VRGS still opens those; once one has been saved by 3.4 it\ngains a ",(0,r.jsx)(t.code,{children:".vgpx"})," sibling, and that is the file to open from then on. The old ",(0,r.jsx)(t.code,{children:".vgp"}),"\nis left alone rather than rewritten."]})}),"\n",(0,r.jsx)(t.h2,{id:"accessing-the-database-file",children:"Accessing the database file"}),"\n",(0,r.jsxs)(t.p,{children:["The database is a plain SQLite file at\n",(0,r.jsx)(t.code,{children:"<project> Data\\DATABASES\\SQLDBv4.db"}),", so anything that reads SQLite can read\nit \u2014 the ",(0,r.jsx)(t.code,{children:"sqlite3"})," command line, a GUI browser, or Python's ",(0,r.jsx)(t.code,{children:"sqlite3"})," module from\nthe ",(0,r.jsx)(t.a,{href:"/docs/general/setup-system/python-scripting",children:"VRGS Python console"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Close the project in VRGS first, or open a copy."})," VRGS holds the database open\nwhile the project is loaded, and writing to it from outside is the one reliable\nway to corrupt a project."]}),"\n",(0,r.jsx)(t.admonition,{title:"You may not need the database at all",type:"tip",children:(0,r.jsxs)(t.p,{children:["Two routes get the data out without touching SQLite: the ",(0,r.jsx)(t.strong,{children:"Spreadsheet"})," view on\nany interpretation group (right-click the group \u2192 ",(0,r.jsx)(t.strong,{children:"Spreadsheet"}),"), and the export\nroutes in ",(0,r.jsx)(t.a,{href:"/docs/general/data-exchange/import-export",children:"Getting Data In and Out"}),".\nThe ",(0,r.jsx)(t.a,{href:"/docs/general/viewing-collaboration/athos-ai-assistant",children:"Athos assistant"}),"\ncan also query the project database from a plain-English question."]})})]})}function l(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453(e,t,n){n.d(t,{R:()=>s,x:()=>i});var o=n(96540);const r={},a=o.createContext(r);function s(e){const t=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.