瀏覽代碼

docs: GRASS GIS Database structure and description

Based on helptext.html from https://trac.osgeo.org/grass/changeset/59690 but completely rewritten, updated, and focused on user (rather then programmer or sysadmin).

New image showing the structure doesn't include internal files and dirs (like cell); that's for programming manual. SVG created in Inkscape.

Page not meant to be a tutorial but rather a description with some practical info how to get the database/location/mapset.

Using capital in Database, Location and Mapset (experimental). Unclear on GRASS GIS Database vs GRASS Database.


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@66032 15284696-431f-4ddb-bdfa-cd5b030d7da7
Vaclav Petras 9 年之前
父節點
當前提交
7ad08036c5
共有 4 個文件被更改,包括 818 次插入4 次删除
  1. 3 4
      doc/Makefile
  2. 295 0
      doc/grass_database.html
  3. 二進制
      doc/grass_database.png
  4. 520 0
      doc/grass_database.svg

+ 3 - 4
doc/Makefile

@@ -1,8 +1,7 @@
 MODULE_TOPDIR = ..
 
-PGM = projectionintro
+include $(MODULE_TOPDIR)/include/Make/Other.make
 
-include $(MODULE_TOPDIR)/include/Make/Dir.make
-
-default: htmldir
+FILES := $(wildcard *.html)
 
+default: $(patsubst %,$(HTMLDIR)/%,$(FILES))

+ 295 - 0
doc/grass_database.html

@@ -0,0 +1,295 @@
+<!-- meta page description: GRASS GIS Database -->
+
+A GRASS GIS Database is simply a set of directories and files
+with certain structure which GRASS GIS works efficiently with.
+Location is a directory with data related to
+one geographic location or a project.
+All data within one Location has the same cartographic projection.
+A Location contains Mapsets and each Mapset contains data related to
+a specific task, user or a smaller project.
+Within each Location, a mandatory PERMANENT Mapset exists
+which can contain commonly used data within a Location such as base maps.
+PERMANENT Mapset also contains metadata related to Location
+such as projection.
+When GRASS GIS is started it connects to a Database, Location and Mapset
+specified by the user.
+
+<p>
+<!-- original drawing: doc/grass_database.svg -->
+<center>
+  <img src="grass_database.png" alt="example: nc_spm - highway - elevation"><br>
+  <i>Fig. 1: GRASS GIS Database structure as visible to the user</i>
+</center>
+
+<!--
+TODO: Introduction/Rationale/Motivation
+
+data format handling separated from analysis
+
+organizing the data
+In geospatial analysis often involves combining data from various sources
+multiple users
+-->
+
+
+<h3>GRASS GIS Database</h3>
+
+All data for GRASS GIS must be in GRASS GIS Database which is a directory
+(visible on the disk) containing subdirectories which are GRASS Locations.
+User can have one or more of Databases on the disk. Typically users have
+one directory called <code>grassdata</code> in their home directory.
+In multi-user environment users often have a <code>grassdata</code> directory
+mounted as a network directory (network file system).
+For teams, a centralized GRASS DATABASE would be defined
+in a shared network file system (e.g. NFS).
+<!-- TODO: above needs some fixes -->
+
+<p>
+GRASS GIS Databases can be safely copied or moved as any other directories.
+Don't be confused with (relational) databases which are used in GRASS GIS
+to hold attribute data and might be part of the GRASS GIS Database.
+From user point of view, GRASS GIS Database with all its data in it
+is similar to, e.g. PostGIS, database, as it stores all information
+inside in a specific format and is accessible by specific tools.
+GRASS GIS Databases is in GRASS GIS often called GISDBASE or DATABASE.
+
+
+<h3>GRASS Locations</h3>
+
+Location is a directory which contains GRASS Mapsets which are its subdirectories.
+All data in one Location have the same projection (coordinate system, datum).
+Each Location must contain Mapset called PERMANENT.
+Typically, a Location contains all data related to one project
+or a geographic area (geographic location or region).
+Alternatively, Location can simply contain all data in a given projection.
+
+<p>
+GRASS Locations can be safely copied or moved as any other directories.
+Compressed Location is usually what GRASS users exchange between each other
+when they want to share a lot of data.
+For example, GRASS GIS sample data are provided as Locations.
+
+<p>
+Don't be confused with location as a place (file or directory) in a file system.
+The word location in GRASS Location refers to a location or area on Earth
+(or whatever is applicable).
+Users and programmers familiar with relational databases such as PostgreSQL
+can view Location as an individual database inside the system or a storage area
+which would be equivalent to GRASS GIS Database. Mapsets in a Locations
+are like namespaces or schemas inside a database.
+
+<!-- TODO: naming limitations and best practices -->
+
+
+<h3>GRASS Mapsets</h3>
+
+Mapsets contains the actual data, mostly geospatial data,
+referred to as maps in GRASS GIS.
+Mapsets are a tool for organizing maps in a transparent way
+as well as a tool for isolating different tasks to prevent data loss.
+
+<p>
+GRASS GIS is always connected to one particular Mapset.
+GRASS GIS modules can create, modify, change, or delete a data only in
+the current Mapset.
+By default, only the data from the current Mapset and PERMANENT Mapset
+are visible. Using
+<a href="g.mapsets.html"><em>g.mapsets</em></a>
+module or in GUI other Mapsets can be made visible and seamlessly accessible.
+All data are available for reading when Mapset is specified explicitly,
+for example to access map <code>streets</code> in Mapset
+<code>new_highway</code> user can use <code>streets@new_highway</code>.
+For maps which are in the current or PERMAENT Mapsets or Mapsets
+sets as visible (accessible), there is no need to use
+<code>@mapset</code> syntax.
+
+
+<p>
+Mapsets are used to store maps related to one project, smaller project,
+specific task, issue or subregions.
+In multi-user environment, when a team works together on one project,
+Mapsets support simultaneous access of several users to the maps
+stored within the same Location.
+Besides access to his or her own
+Mapset, each user can also read maps in PERMANENT Mapsent
+and in other users' Mapsets when set.
+However, each user can modify or remove only the maps
+in his or her own Mapset.
+
+<p>
+Besides the geospatial data, Mapset holds additional data such as
+color tables (managed e.g. by <a href="r.colors.html"><em>r.colors</em></a>)
+and the current computational region's extent and resolution
+stored in a file called <code>WIND</code>
+and managed by <a href="g.region.html"><em>g.region</em></a>.
+
+<p>
+Mapsets can be copied and moved as directories, however only when it is clear
+that the projections of both Locations
+(as reported by <a href="g.proj.html"><em>g.proj</em></a>)
+match each other. Since this is sometimes hard to to establish,
+it is recommended to use <a href="r.proj.html"><em>r.proj</em></a>
+or <a href="v.proj.html"><em>v.proj</em></a> to reproject the data.
+The files and directories should not be moved or modified directly,
+but only using GRASS GIS tools.
+
+
+<h3>The role of the PERMANENT Mapset</h3>
+
+When creating a new Location, GRASS GIS automatically creates a special
+Mapset called PERMANENT where the core data for the Location are stored.
+
+<p>
+Since the maps in PERMANENT Mapset are visible from all the other Mapsets,
+it can be used to store the base maps (base cartography), data common
+to all projects or needed for different analyses done is separate Mapsets.
+
+<p>
+In multi-user environment, data in the PERMANENT Mapset can only be added,
+modified or removed by the owner of the PERMANENT Mapset; however, they can be
+accessed, analyzed, and copied into their own Mapset by the other
+users. The PERMANENT Mapset is useful for providing general spatial
+data (e.g. an elevation model), accessible but write-protected to all
+users who are working in the same Location as the database owner.
+To manipulate or add data to PERMANENT, the owner can start
+GRASS GIS and choose the relevant Location and the PERMANENT Mapset.
+
+<p>
+The PERMANENT Mapset also contains the <code>DEFAULT_WIND</code> file which holds
+the default computational region's extent and resolution values
+for the Location (which all Mapsets will inherit when they are created).
+Users have the option of switching back to the default region at any time.
+
+
+<h3>Importing, exporting and linking data</h3>
+
+GRASS GIS works only with data which are imported into a GRASS Database,
+so all data needs to be imported, e.g. by
+<a href="r.in.gdal.html"><em>r.in.gdal</em></a> or
+highly convenient <a href="r.import.html"><em>r.import</em></a>,
+before the actual analysis.
+Data in GRASS Datable can be exported using for example
+<a href="r.in.gdal.html"><em>r.in.gdal</em></a> in case of raster maps.
+
+<p>
+For cases when import is not desirable, an option to link external data exists.
+Projection of the linked data must match the Location's projection
+otherwise the external data cannot be linked. (Linking data in different
+projection is not allowed as it would require on-the-fly reprojection
+which could cause inconsistencies in the data.
+
+<p>
+For example, module <a href="r.external.html"><em>r.external</em></a> links
+external raster data, so that the data are accessible in GRASS Database
+as standard raster maps. Similarly for newly created maps,
+<a href="r.external.out.html"><em>r.external.out</em></a>
+setups a format and directory where the actual data will be stored,
+however in GRASS Database the data will be created as standard maps.
+
+
+<h3>Starting GRASS GIS using GUI</h3>
+
+After launching GRASS GIS, the startup window will open (Fig. 2).
+
+<p>
+<center>
+  <img src="grass_start.png" alt="startup window with numbered fields"><br>
+  <i>Fig. 2: GRASS GIS startup window</i>
+</center>
+
+The startup windows provides these functions:
+
+<ol>
+    <li>Selecting the GRASS GIS Database directory.
+    <li>Selecting the Location (e.g. a project or area).
+        See the <em>Location Wizard</em> (4) for creating new Locations.
+    <li>Selecting the Mapset (a subproject or task).
+        Creating a new Mapset requires only name.
+    <li>The <em>Location Wizard</em> for creating new Locations
+        based for example, on existing georeferenced file or EPDS code.
+    <li>Start GRASS GIS once you have selected an existing Location and Mapset
+        or defined a new one. The graphical user interface
+        <a href="wxGUI.html">wxGUI</a> will open and provide you with a
+        menu system, map visualization tool, digitizer, and more.
+</ol>
+
+
+<h3>Starting GRASS GIS using command line</h3>
+
+GRASS GIS can be started with given Database, Location and Mapset
+from the command line. For example, the following will start
+in a given Mapset with only command line interface:
+
+<div class="code"><pre>
+grass71 -text ~/grassdata/mylocation/mymapset
+</pre></div>
+
+And the following will create the given Location with projection given
+by the EPSG code and it will start the default interface
+(GUI or command line):
+
+<div class="code"><pre>
+grass71 -c EPSG:5514:3 ~/grassdata/mylocation
+</pre></div>
+
+See <a href="grass7.html"><em>grass</em></a> command manual for more details.
+
+
+<h3>Creating a New Location with the Location Wizard</h3>
+
+The <a href="wxGUI.html">wxGUI</a> graphical user interface provides a
+graphical <em>Location Wizard</em> which lets you easily create a
+new Location for your own data. You will be guided through a series of
+dialogues to browse and select predefined projections or to
+define custom projections.
+
+<p>
+The most convenient way of using <em>Location Wizard</em> is creating new
+Location based on a georeferenced file, such as Shapefile or GeoTIFF,
+or by selecting the corresponding EPSG projection code.
+In case of using georeferenced file, you are asked whether the data itself
+should be imported into the new Location.
+<!-- TODO: some of this should be or already is automatic
+dialog with checkboxes would be also more convenient than multiple questions -->
+The default region is then set to match imported map.
+<!-- TODO: difference rasters versus vectors -->
+
+<!--
+TODO: some notes about resolution and extent would be nice
+(as well as removing the step from the wizard)
+
+this was in the text pointing to some unknown text:
+* The rules to define the resolution as described above also apply here.
+* Find below also some rules to define the default raster resolution
+  for a new Location.
+-->
+
+<p>
+After defining a new Location, wxGUI starts automatically.
+<!-- TODO: how GUI start actually works -->
+If data were already imported, you can add them into the Layer Manager now
+and display them.
+More data can be imported into the Location, e.g. using import options in
+the <em>File</em> menu in <em>Layer Manager</em> or
+<a href="r.import.html"><em>r.import</em></a>.
+
+
+<h2>See also</h2>
+
+<em>
+<a href="index.html">GRASS GIS 7 Reference Manual</a>
+<br>
+<a href="grass7.html">GRASS GIS 7 startup program manual page</a>
+<br>
+<a href="http://grasswiki.osgeo.org/wiki/Importing_data">Importing data on GRASS Wiki</a>
+<br>
+<a href="r.import.html">r.import</a>,
+<a href="v.import.html">v.import</a>,
+<a href="r.external.html">r.external</a>,
+<a href="v.external.html">v.external</a>,
+<a href="r.proj.html">r.proj</a>,
+<a href="v.proj.html">v.proj</a>,
+</em>
+
+<p>
+<i>Last changed: $Date$</i>

二進制
doc/grass_database.png


+ 520 - 0
doc/grass_database.svg

@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="194.78999mm"
+   height="107.56693mm"
+   viewBox="0 0 690.20076 381.14265"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="grass_database_s.svg"
+   inkscape:export-filename="grass_database_structure.png"
+   inkscape:export-xdpi="97.797638"
+   inkscape:export-ydpi="97.797638">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="516.9675"
+     inkscape:cy="218.52638"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1055"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     showguides="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4292"
+       originx="-20.781704"
+       originy="-264.0025" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="lines"
+     style="display:inline"
+     transform="translate(-20.781703,-407.21704)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 140,452.3622 30,0"
+       id="path4321"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 155,452.3622 0,280 15,0"
+       id="path4323"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 155,732.3622 0,40 15,0"
+       id="path4325"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 290,452.3622 20,0 -10,0 0,240 10,0"
+       id="path4327"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 300,492.3622 10,0"
+       id="path4329"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 430,492.3622 20,0"
+       id="path4331"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 440,492.3622 0,160 10,0"
+       id="path4333"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 440,572.3622 10,0"
+       id="path4335"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 570,492.3622 20,0"
+       id="path4337"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 580,492.3622 0,40 10,0"
+       id="path4339"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 570,572.3622 20,0"
+       id="path4341"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 580,572.3622 0,40 10,0"
+       id="path4343"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d4d800;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 570,652.3622 20,0"
+       id="path4345"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:label="text"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline"
+     transform="translate(-20.781703,-407.21704)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="43.928326"
+       y="455.54086"
+       id="text4197"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199"
+         x="43.928326"
+         y="455.54086"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">grassdata</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="202.2225"
+       y="453.83432"
+       id="text4197-7"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-5"
+         x="202.2225"
+         y="453.83432"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">nc_spm</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="190.54037"
+       y="734.52502"
+       id="text4197-1"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-9"
+         x="190.54037"
+         y="734.52502"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">usa_albers</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="182.01132"
+       y="774.66211"
+       id="text4197-4"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-78"
+         x="182.01132"
+         y="774.66211"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">world_lat_lon</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="474.36481"
+       y="656.65985"
+       id="text4197-0"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-6"
+         x="474.36481"
+         y="656.65985"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">3D raster</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="486.09454"
+       y="575.28345"
+       id="text4197-5"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-0"
+         x="486.09454"
+         y="575.28345"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">vector</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="625.02332"
+       y="575.28345"
+       id="text4197-43"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-27"
+         x="625.02332"
+         y="575.28345"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">streets</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="323.36652"
+       y="456.87021"
+       id="text4197-9-0"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-90-7"
+         x="323.36652"
+         y="456.87021"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">PERMANENT</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="319.50299"
+       y="494.31436"
+       id="text4197-9-7"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="319.50299"
+         y="494.31436"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none"
+         id="tspan4186">new_highway</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="321.86139"
+       y="694.97174"
+       id="text4197-9-1"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-90-9"
+         x="321.86139"
+         y="694.97174"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">wake_county</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="487.18951"
+       y="495.54483"
+       id="text4197-9-2"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-90-38"
+         x="487.18951"
+         y="495.54483"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">raster</tspan></text>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot4190"
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
+         id="flowRegion4192"><rect
+           id="rect4194"
+           width="190.91884"
+           height="110.10663"
+           x="445.47726"
+           y="739.2149" /></flowRegion><flowPara
+         id="flowPara4196"></flowPara></flowRoot>    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="616.44299"
+       y="495.97696"
+       id="text4197-3"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-2"
+         x="616.44299"
+         y="495.97696"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">elevation</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="613.16907"
+       y="535.76624"
+       id="text4197-3-8"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-2-5"
+         x="613.16907"
+         y="535.76624"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">landcover</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="616.66272"
+       y="615.4408"
+       id="text4197-43-1"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-27-7"
+         x="616.66272"
+         y="615.4408"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">buildings</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.43300009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="634.32507"
+       y="656.79169"
+       id="text4197-9"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4199-90"
+         x="634.32507"
+         y="656.79169"
+         style="font-size:15px;stroke-width:4.43300009;stroke-miterlimit:4;stroke-dasharray:none">soils</tspan></text>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="boxes"
+     style="display:inline"
+     transform="translate(-20.781703,-407.21704)">
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155"
+       width="115.67372"
+       height="30.820921"
+       x="22.998203"
+       y="435.99222"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-1"
+       width="115.67372"
+       height="30.820921"
+       x="173.04898"
+       y="435.99222"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-8"
+       width="115.67372"
+       height="30.820921"
+       x="173.04898"
+       y="715.18518"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-4"
+       width="115.67372"
+       height="30.820921"
+       x="173.04898"
+       y="755.32227"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-9"
+       width="115.67372"
+       height="30.820921"
+       x="452.27747"
+       y="635.78918"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-91"
+       width="115.67372"
+       height="30.820921"
+       x="452.27747"
+       y="554.71307"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-47"
+       width="115.67372"
+       height="30.820921"
+       x="593.09222"
+       y="554.71307"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-12-0"
+       width="115.67372"
+       height="30.820921"
+       x="312.92468"
+       y="435.99222"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-12-1"
+       width="115.67372"
+       height="30.820921"
+       x="312.92468"
+       y="474.97446"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-12-5"
+       width="115.67372"
+       height="30.820921"
+       x="312.92468"
+       y="675.63184"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-12-2"
+       width="115.67372"
+       height="30.820921"
+       x="452.27747"
+       y="474.97446"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-0"
+       width="115.67372"
+       height="30.820921"
+       x="593.09222"
+       y="474.97446"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-0-7"
+       width="115.67372"
+       height="30.820921"
+       x="593.09222"
+       y="514.76379"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-47-2"
+       width="115.67372"
+       height="30.820921"
+       x="593.09222"
+       y="594.87042"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <rect
+       style="fill:none;stroke:#0092a8;stroke-width:4.43300009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4155-12"
+       width="115.67372"
+       height="30.820921"
+       x="593.09222"
+       y="635.78918"
+       rx="5.7467012"
+       ry="5.5560374" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="30"
+       y="422.41235"
+       id="text4363"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4365"
+         x="30"
+         y="422.41235">Database</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="331.38074"
+       y="422.16626"
+       id="text4367"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4369"
+         x="331.38074"
+         y="422.16626">Mapset</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="190"
+       y="422.41235"
+       id="text4371"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4373"
+         x="190"
+         y="422.41235">Location</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="622"
+       y="422.16626"
+       id="text4375"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4377"
+         x="622"
+         y="422.16626">Maps</tspan></text>
+  </g>
+</svg>