12 Ways to save SAS data
From BingWiki
Using CARDS; File Save (with editor window active)
(this 'way' may be obvious, but works just fine when the datasets are small)
In the SAS Enhanced
Editor window type
data george; input id age score name $; cards; 101 19 97 Harry 102 20 80 Sally 103 25 85 George 104 18 70 Mary 105 30 94 Jane ; run;
This will define the George dataset. Then click on File, Save or Save as …
Name the file what you like. It will be saved with the extension .SAS, which (though it's not named as .TXT or .ASC) is simply plain ASCII text and can also be treated as such. Take note of the Folder location where you place the file.
To get it back
Click on File->Open Program
Browse to the folder where you've saved the program. The browser window will only show you file that end with .SAS so if you've received a text file which has a differently named extension, you'll need to click on File type, Show All Files in the Open dialog window to see files not ending with .SAS.
Note: often a file that is emailed to you as an attachment won't usually be saved to the same folder where you keep your SAS programs. Often an email client will download attachments to the desktop whereas it's probably best to keep your SAS work in a separate folder.
Cut and Paste (ex. Fixed format data)
When in an editor (doesn't need to be SAS), highlight just the data
101 19 97 Harry 102 20 80 Sally 103 25 85 George 104 18 70 Mary 105 30 94 Jane
Click on Edit->Copy. Open up Notepad (from Start, All programs, Accessories, Notepad, if not elsewhere on your desktop). In Notepad choose Edit->Paste, then save the text file by clicking on File->Save. This will save the data as a plain (ASCII) text file. Note where (which folder) you have saved the data. Let's save this data with the name george.txt in the folder c:\Documents and Settings\Ralph\My Documents. You may also type the following data into a notepad window and save it as c:\Documents and Settings\Ralph\My Documents\fixed.txt
10119Harry 97 10220Sally 80 10325George 85 10418Mary 70 10530Jane 94
To Get Them Back (space-delimited or fixed-formatted text)
Run a variation of the following two SAS code examples.
data george; infile 'c:\Documents and Settings\Ralph\My Documents\george.txt'; input id age score name $; run;
data george2; input 1-3 id 4-5 age 6-12 name $ 13-14 score; cards; %include 'c:\Documents and Settings\Ralph\My Documents\fixed.txt'; run;
Links
See also -
Various options associated with the new statements introduced:
INFILE
LIBNAME
A library (which you can think of as a container for a collection of SAS datasets) is usefully named with a LIBNAME statement in SAS.
The example below first gives the name plato (not case sensitive) to a folder on the user's hard disk. It then saves a new (very simple) dataset in the folder (called mary) with the set of statements (between data and run)
collectively called a 'data step'. The second data step also saves the dataset defined above called george in the 'plato' folder. Type and run/submit the following.
libname plato 'C:\Documents and Settings\Ralph\My Documents\Data' ; data plato.mary ; input x; cards; 1 2 3 ; run; data plato.george ; set george; run;
In the Windows Explorer or by double clicking My Computer you'll see that the folder My Documents/Data contains two new files called mary.sas7bdat and george.sas7bdat. On Windows the file and folder names are not case sensitive. An example of the libname statement which could be run on Unix (my user account anyway) is
libname plato '/users/rhansen/data';
In SAS for Unix the key word LIBNAME and the SAS library name PLATO are not case sensitive, but everything typed within the quotation marks is (thus a folder/directory named '/data' is different from '/Data').
To get it (them) back
Point SAS to the folder where you expect to find a SAS dataset. Examples:
libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ;
or
libname russell '/users/rhansen/data';
We'd then be able to run
proc print data=socrates.mary; var x; run; data newgeorge; set socrates.george; newage=age+3; run; proc print data=newgeorge; var id name age newage; run;
without any problems.
On Unix, if there were a very large dataset (perhaps related to Mary) in the directory /users/ralph/data called large.sas7bdat we could temporarily work with just part of it (the first 50 observations) by running:
libname russell '/users/rhansen/data' ; data partmary ; set russell.large (obs=>50); run;
Explorer with one LIBNAME statement?, menu/New Library button, Library Icon
Using the SAS Explorer Let's name a library Mydata for now (library names are limited to 8 characters and shouldn't begin with a number). Type and submit
libname mydata 'C:\Documents and Settings\Ralph\My Documents\Data' ;
in the SAS Explorer window on the left, double click on the Libraries icon.
You should then see at least 5 Active Libraries (Gismaps, Mydata, Sashelp, Sasuser, and Work). Double click on the Mydata Icon to see what's already in the library. Sometimes the Explorer window isn't visible nor docked in it's usual location (if someone has closed it accidentally). When this has occurred, you can get the window back by clicking on View, and then Contents only (Note: **NOT Explorer!! **). In some rare instances you may also need to verify that in Tools, Options, Preferences, View (tab), that the Show, Docking View option is selected.
The Explorer works best as a tool to locate libraries and datasets that have already been defined, but it can also be used to create libraries. To create a New Library use the New Library icon on the toolbar.
In the New Library dialog window it will be required to provide a valid (short, 8 letter) SAS library name and to Browse to go to a valid hard disk location where you'd like to store datasets. Click OK when you have done so.
To save a a dataset in the newly created library we can either type and submit statements similar to what we did for Way #3 such as
data mydata.george ; set george; run;
or we can open a view of some existing data (using the Explorer) and save it from the File menu. This is illustrated now. Firstly, we'll find our way to some temporary data (assuming some exists in the WORK library). To move out of the Mydata library we click on the Up one level icon
which is visible when an Explorer window is active. Then, double-click on the Work library.
If WORK.George (a.k.a. George) has been created (as we did for Way #1) then it will appear in the explorer window as one of the Contents of 'Work'
Double-click on the George dataset icon. The VIEWTABLE window of Work. George will appear.
To save the George dataset permanently (while the Viewtable window is active) choose File->Save As and double-click on a library other than the scratch area Work library.
Hint: It's best to avoid the other default libaries as well (I.e. double-click on Mydata or a library you've defined)
Provide a meaningful Member name (which will be the name of your permanent dataset. We'll type George)
Click on the Save button (which should now be darkened/enabled instead of grayed out while the dialog has incomplete information)
The file created will have the name George.sas7bdat when it is viewed in Windows Explorer.
To get it back
Let's close SAS now to start with a clean session.
Create a new library any way you like (either by typing and submitting the libname statement as above) or by completing the New Library dialog (also described above)
Ex. Click on the
icon
on the toolbar)
It should now be a simple matter to use the Explorer window to look at the Libraries, the Mydata library (or whatever you've named 'C:\Documents and Settings\Ralph\My Documents\Data' for this session, and then to double click on Mydata.George to view it.
DATA ' '; direct access (including Unix ex.)
Direct access in a data step
Instead of making a temporary copy of a dataset when we define it, as in
data kramer; input letter $; cards; A B C ; run;
We could instead save it directly to a permanent location by typing:
data 'C:\Documents and Settings\Ralph\My Documents\Data\kramer'; input letter $; cards; A B C ; run;
If we wanted a
temporary as well as a permanent copy we could type:
data kramer; input letter $; cards; A B C ; run; * writes a temporary copy first; data 'C:\Documents and Settings\Ralph\My Documents\Data\kramer'; set kramer; run; * then a permanent copy is made;
To get it back
(notice,) we can use direct access on the set statement (reversing the read/write direction):
data kramer; set 'C:\Documents and Settings\Ralph\My Documents\Data\kramer'; run;
To create a permanent
and temporary copy of a dataset we could alternatively have typed:
data 'C:\Documents and Settings\Ralph\My Documents\Data\kramer' kramer; input letter $; cards; A B C ; run;
which follows a typical
syntax for creating two datasets from one, as in:
data k1 k2; set kramer; run;
Links:
In Excel Save As .XLS
– UsingExcel to save data, and then importing it
Problems can occur when
more than one application is used to store and work with data, and
Excel does not have formatting options (such as variable labels and
formats) that will transfer to SAS, but SAS is well-integrated with
Excel for simple data transfer.
In Excel, preparing your data. First, prepare and examine your data in Excel. The easiest way to structure your dataset (anticipating transfer to SAS for further analysis) is to use a single sheet that contains a rectangular data table. You may place long names (even column names that contain spaces) as column headers, or bypass Excel-given column names altogether, but it may be simplest to name the columns using short eight-letter names. Labels may be added later.
Secondly, if you
anticipate keeping only part of your spreadsheet (i.e. if only part
of it is actually a table of data) then you may want to use Range
Names.
For example, let's say
we wanted to keep some classroom information as formatted Excel
spreadsheet
We could define Range B4:E9 as the data we'd like to analyze … specifically naming the range 'data'. First select the range (which includes column header names in this instance). Then choose Insert, Name, Define… to open the Define Name window
To define a name for the B4:E9 range we type 'data' in the name field (replacing the word 'id') then click on OK. Alternatively, we could select/highlight the range, then click in the Name box (to the left of the = on the formula bar)
and replace the cell
address B4 with the Range name 'data'.
Finally, (importantly!)
Save and close the
Excel spreadsheet! (If you encounter an '…IML … share'
error in SAS while importing data, it is because you have left the
Excel sheet open.
To get it back (/ to
get the Excel data):
In SAS, choose File,
Import Data to start the Import Wizard
Click on Next with out changing the data source/import type. Click on Browse to locate where you have saved the Class2005.xls data file. Choose the file (the spreadsheet) and click Open. Click on OK. Choose data (instead of one of the sheets (Sheet1$, Sheet2$, or Sheet3$)) as the table you want to import. (Click the options button to …) Check that the Options are correctly set as you'd like.
Click on Next.
Type in a valid dataset
name (or member) as your SAS Destination.
Click on Finish. The
PROC IMPORT statements (bundled in a .SAS program file) that might be
created by the 'Next' step of the wizard is discussed in the next
section/way.
You will know if the
import was successful by examining the SAS Log file. There should be
a note in the LOG file such as
NOTE:
WORK.CLASS was successfully created.
Further verification is
easy to get by typing and submitting a program like:
proc contents data=class; run;
proc print data=class (obs=>10); run;
Links: PROC IMPORT (and
to example)
In Excel Save As CSV (move to Unix, SSH)
Saving, moving and reading CSV files To save a spreadsheet such as the Class2005 spreadsheet discussed in the Way #6 section we will first want to follow several of the preparations of the data as described in the previous section. Attention is neede re: the column headers and where the actual data resides on the sheet (in the workbook).
In addition (for CSV files) we may remove some of the sheet titles ('Class Information –2005') and padding rows and columns to simplify the import into SAS later on.
For example, let's first remove rows 1-3 and column A from above so that we have the following.
Next, choose File, Save as .., then select the File Type (.CSV) to save the data as a comma-separated value format. We should pay close attention to where this file is saved and be certain that the file ends with a .CSV extension. On some systems an H: drive link to the Bingsuns platform may be set up so that you can directly save the CSV file to a Unix platform.
Click on OK to Save only the active sheet since we can't save multiple sheets as a Comma Delimited file.
We'll also see
Click on Yes because we are not concerned about formatting (bold text, italics, alignment) We just want the data in separate columns.
Close the Excel program now. When asked if you'd like to save changes, you may choose 'Yes' or 'No' to continue inconsequentially. You must, however, close the Excel program before attempting to read the CSV file in SAS.
If we had saved the
file in a folder called 'C:\Documents and Settings\Ralph\New Folder'
we might now see the following when we examine the folder with
Windows Explorer.
A CSV file is actually simple text. Most Windows systems will change the icon appearance of the file and use Excel to open it, but we can bypass this default and look at the text by Right-clicking the icon and choosing to open it with Notepad or WordPad.
To get it back(in SAS for Windows)
We can use the Import Wizard (Choose File, Import Data…and Comma Separated Values (*.csv) among the Standard data import types). In the next step you may also check that the Import Options are properly set to 'get the variable names from the first row' and to begin reading data values in the second row.
Instead of using the menu we could submit/run the following code
PROC IMPORT OUT=WORK.CLASS DATAFILE="C:\Documents and Settings\Ralph\New Folder\class2005varsonly.csv" DBMS=CSV REPLACE; GETNAMES=YES; DATAROW=>2; RUN;
To Move (Upload) the CSV File from Windows to Unix
You may need to use a File Transfer client such as WS_FTP or a secure/encrypted file transfer tool like "SSH File Transfer" (see SSH Documentation for details)
It's best to transfer the CSV document as Plain/ASCII text instead of Binary (o.w. ^M will appear in the Unix text file).
To get the data back (on Unix)
We'll use the following code:
libname here ".";
datahere.class2;
infile "class2005varsonly.csv" dsd
delimiter=","
firstobs=>2;
input id age score name $ ;
run;
It may be necessary to experiment with some of the INFILE options (ex. TRUNCOVER, MISSOVER, DSD …) and with character string lengths and informats (on the INPUT statement ex. "…name $20. ;" or in a LENGTH statement) when you need to transfer long text variables or dates (see below).
Links
http://v9doc.sas.com IMPORT, CSV, INFILE, SSH, LENGTH, Informats
In SPSS Save as
Saving data in SPSS to be read by SAS
In SPSS, there are
several pieces of information that we'd probably want to keep when we
save the data (even if we plan to analyze it with SAS. Apart from
variable names and the simple variable type information (i.e. Is the
variable a Character or Numeric variable?) we'd also like to keep
Variable Labels and Value Labels. Variable Labels are long names
(text) for the shorter variable names which appear as the head of
variable columns in the SPSS Data Editor. The longer text is what
we'd like to appear on print outs of results. In the following
example, "Age group" is the Variable label for the variable
"group".
The example illustrated
here also includes Value labels. While the variable "group"
is Numeric, it contains the values 1 and 2. A 1 indicates "Young"
clients, and a 2 represents "Old" clients (relatively
speaking). These are visable in the Data editor because the "Value
labels" button ( ) is depressed.
In SPSS, to Save data
in a format that is readable by SAS we choose File, Save as…,
and click on the "Save as type" options to see the list of
file types and data formats other than SPSS (.sav) formats available
to us.
The options we are
interested in are
SAS v7 longextension
SAS v7 for Unix
SAS xpt file (see next
way)
though a few others may be readable by SAS as well.
After selecting the SAS v7 longextension type we will see that the
option of chosing
"Save value labels into a .sas file"
is also available to us.
Click on this so that a small .sas program is written which will
associate the values 1 and 2 with their labels.
Now click on the Save button (unless you'd like to save only some of
the variables using "Variables…" button).
The SPSS Output file message shows us
Data written to C:\Documents and Settings\...\Data\class2005a.sas7bdat. 5 variables and 5 cases written. Variable: id Type: Number Width: 11 Dec: 0 Variable: age Type: Number Width: 11 Dec: 0 Variable: score Type: Number Width: 11 Dec: 0 Variable: name Type: String Width: 6 Variable: group Type: Number Width: 8 Dec: 0
Value labels written
to C:\Documents and Settings\Ralph\My Documents\Data\class
indicating that two files have been created in the C:\Documents and Settings\Ralph\My Documents\Data\ folder. The path name is too long for us to see the full name of the .sas file with labels, but we'll see that it is called "class2005a.sas".
We can see the contents
of this file, if we like, using any word processor or editor (or
opening the file from the Windows Explorer.
libname library 'c:\documents and settings\ralph\my documents\data\' ;
proc format library = library ;
value group /* Age group */
1 = 'Young'
2 = 'Old' ;
proc datasets library = library ;
modify class2005a;
format group group.;
quit;
To get it (our data) back
In SAS, as we did for Way #3, if we point SAS to the folder where we expect to find a SAS dataset (such as)
libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ;
and then try to print
the data
proc print data=socrates.class2005a; run;
We'll see that our
dataset depends upon having a definition for the "group"
format.
ERROR: Format group not found or couldn't be loaded for variable group. NOTE: The SAS System stopped processing this step because of errors. NOTE: PROCEDURE PRINT used (Total process time): real time 0.68 seconds cpu time 0.00 seconds
We can also see this by
running:
proc contents data=socrates.class2005a; run;
Which shows us
The CONTENTS Procedure Data Set Name SOCRATES.CLASS2005A Observations 5 Member Type DATA Variables 5
...(and other information)
File Name C:\Documents and Settings\Ralph\My
Documents\Data\class2005a.sas7bdat
Release Created 9.0000M0
Host Created WIN
Alphabetic List of Variables and Attributes
# Variable Type Len Format Label
2 age Num 8
5 group Num 8 group5. Age group
1 id Num 8
4 name Char 6
3 score Num 8
Instead we should
ensure that the group. format defined by adding an include statement,
running the following instead. (group5. above indicates that the
'length' of the format is 5 characters. Defining group. is
sufficient.)
libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ; %include 'C:\Documents and Settings\Ralph\My Documents\Data\class2005a.sas'; proc print data=socrates.class2005a; run; proc contents data=socrates.class2005a; run;
In SAS Save as XPT file
SAS Transport (.XPT) files Save a SAS xport file
If you plan to move
datasets across different operating systems (though this method is
unneccessary between Windows and Unix), or you're working with data
from older versions of SAS you may want to save your datasets as
Transport (XPORT) files. A tranport file can contain multiple
datasets and other types of SAS files (CATALOGS, VIEWS, etc.).
Traditionally the XPORT engine is used to create and retrieve
Transport files. Using CPORT and CIMPORT procedures are a separate
method of moving and translating files (see references).
Let's begin by being
clear about where the datasets are originally stored (which folder)
and what kinds of files are created. It will seem odd (at first, but
it is technically correct) that a LIBNAME statement below is used
both for naming a folder (where the datasets originate) AND to name a
FILE (which looks like a single icon/document in Windows), but it
contains several datasets to SAS (just as a folder might).
The following creates
two small datasets in My Documents/Data folder.
libname socrates 'C:\Documents and Settings\Ralph\My Documents\Data' ; data socrates.newman; input x @@ ; cards; 1 2 3 4 5 6 ; run; data socrates.george; input c $ @@ ; cards; A B C D E; run;
Then we define a
destination for the two datasets (which are placed into a single
transport file/document)
libname jerry xport 'C:\Documents and Settings\Ralph\My Documents\apartment.xpt'; proc copy in=socrates out=jerry memtype=data; run;
If we had want to save only the George dataset we would have added a select statement, as in
libname jerry xport 'C:\Documents and Settings\Ralph\My Documents\apartment.xpt'; proc copy in=socrates out=jerry memtype=data; select george; run;
To get the data back we define the source of the data this time originating in the apartment.xpt file.
libname jerry xport 'C:\Documents and Settings\Ralph\My Documents\apartment.xpt';
Any name other than 'Jerry' could be used, and of course the location of the transport file can be changed (esp. if you decide to move the file to a new machine).
The library (JERRY) works like any other library (though you should save other datasets or objects from different SAS versions into it). We can print datasets or make temporary copies of the datasets in JERRY just as we've done earlier. For example:
proc print data=jerry.george; run; data tempnew; set jerry.newman; run; proc print data=tempnew; run;
XML
XML files read directly into SAS
<?xml version="1.0" encoding="windows-1252" ?>
<CLIMATE>
<HIGHTEMP>
<PLACE> Libya </PLACE>
<DATE> 1922-09-13 </DATE>
<DEGREE-F> 136 </DEGREE-F>
<DEGREE-C> 58 </DEGREE-C>
</HIGHTEMP>
<HIGHTEMP>
<PLACE> NYState </PLACE>
<DATE> 2005-06-13 </DATE>
<DEGREE-F> 80 </DEGREE-F>
<DEGREE-C> 25.8 </DEGREE-C>
</HIGHTEMP>
<LOWTEMP>
<PLACE> Antarctica </PLACE>
<DATE> 1983-07-21 </DATE>
<DEGREE-F> -129 </DEGREE-F>
</LOWTEMP>
</CLIMATE>
To get it back libname test xml 'C:\Documents and Settings\Ralph\My Documents\Data\xml\temps.xml';
proc datasets library=test; quit; proc print data=test.hightemp; run; proc print data=test.lowtemp; run;
See generic XML
template sent by Tom
Links:
http://support.sas.com/onlinedoc/913/getDoc/en/engxml.hlp/a002592973.htm
LIBNAME sasengine
Using the SAS LIBNAME engine options
Occasionally, in online
repositories, or when you are receiving data from a source who is not
using the latest version SAS on his/her machine, you may get a 'SAS
dataset' that has been saved in a older format that cannot be read
directly by a simple libname or filename statement (or by other
methods mentioned above). Several of these older formats are still
formats that SAS handles well (such as older versions of SAS and CSV
(comma separated values)) when you tell SAS what type of file it is
trying to read in a LIBNAME statement. This section will also
describe how to read the newer SASECRSP-type datasets that is a
specialized Stock/Financial Data base. All these types use the SAS
Engine option on a LIBNAME statement.
The syntax for the
LIBNAME statement is
LIBNAME libref <engine> 'SAS-data-library' <options> <engine/host-options>;
This means that you can read a variety of different dataset types such as those mentioned by using statements like the following (using THOMAS as our libref name):
LIBNAME thomas SASECRSP 'C:\Documents and Settings\Ralph\My Documents\Data\LIB1';
which tells SAS that the folder pointed to as 'thomas' is a repository (library) for CRSP data, or
LIBNAME thomas CSV 'C:\Documents and Settings\Ralph\My Documents\Data\LIB2';
prepares the LIB2 folder for CSV files, or
LIBNAME thomas V8 'C:\Documents and Settings\Ralph\My Documents\Data\LIB3';
means that the LIB3 folder will hold SAS version 8 (it may not be uncommon at this time to be required to work with files from version 7 (the V7 engine) or even version 6 file (V6).
Let's first save a sample dataset as a SAS Version 8 file using SAS.
*At first we'll make a temporary copy; data jerry; input id age score name $; cards; 101 19 97 Harry 102 20 80 Sally 103 25 85 George 104 18 70 Mary 105 30 94 Jane ; run;
When you declare that a
certain folder (location) will be used to store permanent datasets
using a particular SAS engine, then those datasets that you save in
that folder using the associated LIBNAME (i.e. pairing the dataset
name (a member) with the first part of it's permanent name, as in
OLDFILES.JERRY) then the dataset is saved in the 'engine' format (in
other words 'saved… using that engine'). So, if we'd like to
save JERRY as a SAS Version 8 file we can submit the following:
* Then we'll save it permanently on our Windows machine. OLDFILES is how ; * we'll refer to the library. It's our libref like Thomas was above; libname OLDFILES V8 'C:\Documents and Settings\Ralph\My Documents\Data\LIB2'; data OLDFILES.jerry; set jerry; run;
To get it back
libname OLDFILES V8 'C:\Documents and Settings\Ralph\My Documents\Data\LIB2'; data jerry; set OLDFILES.jerry; run;
See also: Documentation Online More on SAS engines http://support.sas.com/onlinedoc/913/getDoc/en/lrcon.hlp/a001302065.htm
Main
Index for SASECRSP Engine in SAS v9
http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_index.htm
SASECRSP
in ETS User's Guide
http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_sect9.htm
is
particularly informative - The SASECRSP Interface Engine - The
LIBNAME libref SASECRSP Statement
Other
example programs using CRSP and documentation can be found at
http://statmart.cc.binghamton.edu/BU_Documentation/CRSP2003/
DBF (to be written)
Using DBF files directly in SAS
Saving a DBF (from Access?)
To get it back
See also:
Online help to access DBF files in SAS
http://support.sas.com/onlinedoc/913/getDoc/en/acpcref.hlp/a000213690.htm
13 ?PROC DATASOURCE?, ?Stata, ?S-Plus (to be written)
PROC DATASOURCE? (for COMPUSTAT files), Stata?, S-Plus?
Further notes on CSV
files (and tables published on the Internet).
Further notes on CRSP data (SASCRSPE engine).
Main Index for SASECRSP Engine in SAS v9 http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_index.htm
SASECRSP
in ETS User's Guide
http://v9doc.sas.com/cgi-bin/sasdoc/cgigdoc?file=../etsug.hlp/sasecrsp_sect9.htm
is
particularly informative - The SASECRSP Interface Engine - The
LIBNAME libref SASECRSP Statement
Other
example programs using CRSP and documentation can be found at
http://statmart.cc.binghamton.edu/BU_Documentation/CRSP2003/
Notes on ICPSR
(rectangular, hierarchical, flat data files).
Notes on multiline data?
Minitab/Mathematica to
SAS
Working with Census
data
Working with GIS
(Spatial data)















