1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[30275],{50545(e,n,t){t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"general/viewing-collaboration/geojson-export","title":"GeoJSON Project Export","description":"Export every interpretation in a VRGS project \u2014 polylines, orientations, geopolygons, waypoints, scale bars and more \u2014 to a single GeoJSON file, with colours, stratigraphy and group structure preserved. Use it as a human-readable backup of your interpretation work, or open it directly in QGIS / ArcGIS.","source":"@site/versioned_docs/version-3.4/general/viewing-collaboration/geojson-export.md","sourceDirName":"general/viewing-collaboration","slug":"/general/viewing-collaboration/geojson-export","permalink":"/docs/general/viewing-collaboration/geojson-export","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/versioned_docs/version-3.4/general/viewing-collaboration/geojson-export.md","tags":[],"version":"3.4","sidebarPosition":6,"frontMatter":{"id":"geojson-export","title":"GeoJSON Project Export","sidebar_label":"GeoJSON Export","sidebar_position":6,"description":"Export every interpretation in a VRGS project \u2014 polylines, orientations, geopolygons, waypoints, scale bars and more \u2014 to a single GeoJSON file, with colours, stratigraphy and group structure preserved. Use it as a human-readable backup of your interpretation work, or open it directly in QGIS / ArcGIS.","keywords":["geojson","export","backup","gis","qgis","arcgis","interpretation","coordinate system","epsg"]},"sidebar":"docs","previous":{"title":"Interpretation VC","permalink":"/docs/general/viewing-collaboration/interpretation-version-control"},"next":{"title":"Reports","permalink":"/docs/general/viewing-collaboration/report-view"}}');var o=t(74848),i=t(28453);const s={id:"geojson-export",title:"GeoJSON Project Export",sidebar_label:"GeoJSON Export",sidebar_position:6,description:"Export every interpretation in a VRGS project \u2014 polylines, orientations, geopolygons, waypoints, scale bars and more \u2014 to a single GeoJSON file, with colours, stratigraphy and group structure preserved. Use it as a human-readable backup of your interpretation work, or open it directly in QGIS / ArcGIS.",keywords:["geojson","export","backup","gis","qgis","arcgis","interpretation","coordinate system","epsg"]},a="GeoJSON Project Export",l={},c=[{value:"Exporting",id:"exporting",level:2},{value:"Coordinate systems",id:"coordinate-systems",level:2},{value:"What is in the file",id:"what-is-in-the-file",level:2},{value:"Using the file in QGIS",id:"using-the-file-in-qgis",level:2},{value:"Notes",id:"notes",level:2},{value:"See also",id:"see-also",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"geojson-project-export",children:"GeoJSON Project Export"})}),"\n",(0,o.jsxs)(n.p,{children:["Interpretation work is often the most valuable \u2014 and least recoverable \u2014 part of\na project. ",(0,o.jsx)(n.strong,{children:"GeoJSON Project Export"})," writes every interpretation in the\nproject to a ",(0,o.jsxs)(n.strong,{children:["single ",(0,o.jsx)(n.code,{children:".geojson"})," file"]}),": polylines, orientations,\npalaeocurrents, measurements, faults, geopolygons, fracture scan-lines,\nwaypoints, samples, labels and scale bars, each with its colours, stratigraphy\nand group membership. The result serves two purposes at once:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"A backup you can actually read."})," GeoJSON is plain text, so the file is\ndiffable, archivable, and independent of the VRGS project format. If a\nproject database is ever lost or damaged, your interpretations survive in a\nform that is trivially recoverable."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"A GIS interchange file."})," The same file loads directly into ",(0,o.jsx)(n.strong,{children:"QGIS"}),",\n",(0,o.jsx)(n.strong,{children:"ArcGIS"})," and any other GeoJSON-aware tool, with geometry in the right place\nand every attribute visible in the attribute table."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"exporting",children:"Exporting"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Open the project you want to back up."}),"\n",(0,o.jsxs)(n.li,{children:["On the ",(0,o.jsx)(n.strong,{children:"Edit"})," ribbon tab, in the ",(0,o.jsx)(n.strong,{children:"Editing"})," panel, click\n",(0,o.jsx)(n.strong,{children:"Export GeoJSON"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Choose a filename and, if you need them, tick the options:","\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Export displayed items only"})," \u2014 limits the export to items currently\nvisible in the 3D view. Leave it unticked for a full backup."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Export in EPSG:4326 (lat/long)"})," \u2014 converts all coordinates to WGS84\nlongitude/latitude. This option only appears when the project has a\ncoordinate system assigned (see below)."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["Click ",(0,o.jsx)(n.strong,{children:"Export"}),". A confirmation appears in the messages panel when the file\nis written."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"The file is written atomically (to a temporary file first, then swapped in), so\nan interrupted export can never truncate or corrupt an existing backup."}),"\n",(0,o.jsx)(n.h2,{id:"coordinate-systems",children:"Coordinate systems"}),"\n",(0,o.jsxs)(n.p,{children:["By default the export keeps ",(0,o.jsx)(n.strong,{children:"project coordinates"})," \u2014 the same values you see\nin the 3D view, typically UTM metres \u2014 and records the project's EPSG code in\nthe file's ",(0,o.jsx)(n.code,{children:"crs"})," member (e.g. ",(0,o.jsx)(n.code,{children:"urn:ogc:def:crs:EPSG::32633"}),"). QGIS and most GIS\npackages read this member and place the data correctly without being asked."]}),"\n",(0,o.jsxs)(n.p,{children:["Tick ",(0,o.jsx)(n.strong,{children:"Export in EPSG:4326"})," to convert every coordinate to WGS84\nlongitude/latitude instead. In this mode the file is a fully standard\n",(0,o.jsx)(n.a,{href:"https://datatracker.ietf.org/doc/html/rfc7946",children:"RFC 7946"})," GeoJSON: coordinates\nare written in ",(0,o.jsx)(n.code,{children:"[longitude, latitude, elevation]"}
1)," order and no ",(0,o.jsx)(n.code,{children:"crs"})," member is\nwritten (WGS84 is the GeoJSON default). Elevations pass through unchanged."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsx)(n.p,{children:"The EPSG:4326 option requires the project coordinate system to be set (Project\nProperties \u2192 coordinate system). Without an EPSG code VRGS cannot convert to\nlat/long, so the option is hidden and the export always uses project\ncoordinates."})}),"\n",(0,o.jsx)(n.h2,{id:"what-is-in-the-file",children:"What is in the file"}),"\n",(0,o.jsxs)(n.p,{children:["The file is one GeoJSON ",(0,o.jsx)(n.strong,{children:"FeatureCollection"}),". Every interpretation object is a\n",(0,o.jsx)(n.strong,{children:"Feature"})," whose ",(0,o.jsx)(n.code,{children:"properties"})," carry its VRGS metadata:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Identity"})," \u2014 ",(0,o.jsx)(n.code,{children:"name"}),", ",(0,o.jsx)(n.code,{children:"record_number"}),", ",(0,o.jsx)(n.code,{children:"object_type"}),", and ",(0,o.jsx)(n.code,{children:"path"})," (the\nobject's position in its interpretation tree)."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Where it lives in the tree"})," \u2014 ",(0,o.jsx)(n.code,{children:"folder_path"}),', the readable folder address\nof the object ("Polylines/Bedding/Set A"), plus ',(0,o.jsx)(n.code,{children:"group_path"}),", the same\nfolders as a list of names. ",(0,o.jsx)(n.code,{children:"path"})," records only the ",(0,o.jsx)(n.em,{children:"position"})," of the object\n(",(0,o.jsx)(n.code,{children:"/0/2"}),"), so these are what tell you, in QGIS or in the raw file, which\nfolder an object came from."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Geology"})," \u2014 ",(0,o.jsx)(n.code,{children:"stratigraphy"})," and the resolved display colour\n(",(0,o.jsx)(n.code,{children:"stratColour"}),"); orientations also carry ",(0,o.jsx)(n.code,{children:"dip"}),", ",(0,o.jsx)(n.code,{children:"azimuth"}),", ",(0,o.jsx)(n.code,{children:"plane_type"})," and\n",(0,o.jsx)(n.code,{children:"set"}),"; scan-lines include their fracture statistics (P10, spacing, Fisher\nparameters) and per-fracture orientations."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Presentation"})," \u2014 line width and style for polylines; primary/secondary\ncolours, segment count and units for scale bars; palaeocurrent readings\nattached to geopolygons."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Alongside the features, a ",(0,o.jsx)(n.code,{children:"vrgs"})," section records project-level context that a\nplain FeatureCollection cannot express:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"stratigraphy"})})," \u2014 the full stratigraphic legend: every log unit and every\nfacies with its name, code and colour (as ",(0,o.jsx)(n.code,{children:"#RRGGBB"}),"), so the colour scheme\nsurvives independently of any one feature."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"groups"})})," \u2014 the interpretation-tree hierarchy, with each group's display\noptions and its own ",(0,o.jsx)(n.code,{children:"folder_path"}),". Every feature's ",(0,o.jsx)(n.code,{children:"path"})," points into this\ntree, so the grouping (and group colours) can be reconstructed."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"coordinate_mode"})}),", ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"project_crs"})})," and the exporting ",(0,o.jsx)(n.strong,{children:(0,o.jsx)(n.code,{children:"app_version"})}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["GIS packages simply ignore the ",(0,o.jsx)(n.code,{children:"vrgs"})," section; it is there so the file remains\na complete, self-describing record of the interpretation work."]}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsx)(n.p,{children:"Colours appear twice by design: as hex strings that any tool can display, and\ninside the group/stratigraphy records so a future re-import can restore the\nexact scheme. GeoJSON export is currently one-way \u2014 VRGS can import polyline\nGeoJSON, and fuller re-import of a project backup is planned \u2014 but the file\nalready contains everything needed to rebuild the objects."})}),"\n",(0,o.jsx)(n.h2,{id:"using-the-file-in-qgis",children:"Using the file in QGIS"}),"\n",(0,o.jsxs)(n.p,{children:["Drag the ",(0,o.jsx)(n.code,{children:".geojson"})," file into QGIS. With a project-coordinate export, QGIS\nreads the embedded CRS and overlays the interpretations on your basemap\ndirectly; with an EPSG:4326 export the layer is WGS84. All feature properties\nappear in the attribute table, so you can label by ",(0,o.jsx)(n.code,{children:"stratigraphy"}),", categorise\nby ",(0,o.jsx)(n.code,{children:"featureType"}),", or style by the exported colours."]}),"\n",(0,o.jsx)(n.h2,{id:"notes",children:"Notes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["If ",(0,o.jsx)(n.a,{href:"/docs/general/viewing-collaboration/interpretation-version-control",children:"Interpretation Version Control"}
1)," is in\nuse, the export reflects the ",(0,o.jsx)(n.strong,{children:"active scenario"})," \u2014 the variants currently in\nuse \u2014 not every variant in the project."]}),"\n",(0,o.jsxs)(n.li,{children:["Scale bars, labels and other annotation objects are exported as point\nfeatures so that a backup is complete; filter them out by ",(0,o.jsx)(n.code,{children:"featureType"})," if\nyou only want geological data in a GIS layer."]}),"\n",(0,o.jsxs)(n.li,{children:["Exports are whole-project. To export a single group instead, right-click the\ngroup in its interpretation tree and use its ",(0,o.jsx)(n.strong,{children:"Export"})," command, which also\noffers GeoJSON."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"see-also",children:"See also"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"/docs/general/data-exchange/import-export",children:"Getting Data In and Out"})," \u2014 every other import and export route in VRGS."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},28453(e,n,t){t.d(n,{R:()=>s,x:()=>a});var r=t(96540);const o={},i=r.createContext(o);function s(e){const n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(i.Provider,{value:n},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.