Editing DSP
From BRL-CAD
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 27: | Line 27: | ||
=== Preparing your height field data === | === Preparing your height field data === | ||
− | The DSP takes unsigned short (16-bit) integer data. Our various command-line data converters can help bring data in from pretty much any existing format, including image data, via various processing commands. If the data | + | The DSP takes unsigned short (16-bit) integer data. Our various command-line data converters can help bring data in from pretty much any existing format, including image data, via various processing commands. If the data was in png image format, for example (which is basically 3-channel 8-bit integer data), the data could be prepared with a combination of 'png-pix', 'pix-bw', and 'cv'. |
− | If you type the 'in' command, it will prompt you for each parameter individually and that should help some. For the DSP, the main parameters are: the source of the height data, the width (number of points in the | + | If you type the 'in' command, it will prompt you for each parameter individually and that should help some. For the DSP, the main parameters are: the source of the height data, the width (number of points in the Y direction) and length (number of points in the X direction) of the input data, width/length/height scaling factors, and whether to smoothly interpolate between cells (0 = do not interpolate, 1 = interpolate). |
See the 'dsp_add' tool for combining two existing DSP data files into one. | See the 'dsp_add' tool for combining two existing DSP data files into one. | ||
− | A DSP primitive is an array of cells initially defined by points in the | + | A DSP primitive is an array of cells initially defined by points in the XY plane as positive heights from Z = 0. The DSP can then be transformed to other orientations and positions. The number of cells is (numX * numY). |
The data format for the DSP primitive is network-ordered unsigned short integers (nu16). BRL-CAD has a couple of dozen tools that you can use for converting existing data into that raw format, such as the 'cv' command or the 'bw-d' and 'd-u' commands among other similar tool chains. If you use the cv command, the output format is "nus" for network unsigned shorts. | The data format for the DSP primitive is network-ordered unsigned short integers (nu16). BRL-CAD has a couple of dozen tools that you can use for converting existing data into that raw format, such as the 'cv' command or the 'bw-d' and 'd-u' commands among other similar tool chains. If you use the cv command, the output format is "nus" for network unsigned shorts. | ||
Line 79: | Line 79: | ||
Example 1. | Example 1. | ||
− | In | + | In mged create a dsp object: |
mged> in dsp1.s dsp f Ex1.dsp 142 150 0 ad 1 0.005 | mged> in dsp1.s dsp f Ex1.dsp 142 150 0 ad 1 0.005 | ||
Line 136: | Line 136: | ||
A DSP object can be created manually or programmatically by creating an ASCII data file as input using the BRL-CAD utility asc2dsp to convert it directly to the DSP binary format. An easy way to create the input file for asc2dsp is to first create it row by row in natural form with the top row being the desired top row and so on in desired viewing order. Then take the finished file and filter it through the Unix utility tac which will reverse the order of the rows (lines). | A DSP object can be created manually or programmatically by creating an ASCII data file as input using the BRL-CAD utility asc2dsp to convert it directly to the DSP binary format. An easy way to create the input file for asc2dsp is to first create it row by row in natural form with the top row being the desired top row and so on in desired viewing order. Then take the finished file and filter it through the Unix utility tac which will reverse the order of the rows (lines). | ||
− | + | For example, let's create the letter T for viewing in the X-Y plane. | |
− | |||
− | For example, let's create the letter | ||
$ cat t-normal.asc | $ cat t-normal.asc | ||
Line 150: | Line 148: | ||
Now reverse the file: | Now reverse the file: | ||
− | $ tac t-normal.asc > t | + | $ tac t-normal.asc > t.asc |
and see the result in perfect form for asc2dsp: | and see the result in perfect form for asc2dsp: | ||
− | $ cat t | + | $ cat t.asc |
0 0 1 0 0 | 0 0 1 0 0 | ||
0 0 1 0 0 | 0 0 1 0 0 | ||
Line 164: | Line 162: | ||
Finally, create the dsp file: | Finally, create the dsp file: | ||
− | $ asc2dsp t | + | $ asc2dsp t.asc t.sp |
− | (The TGM creation is left as an | + | (The TGM creation is left as an execise for the reader.) |
− | + | Now let's consider a more practical example and a real test of BRL-CAD. We can import topological data and produce a realistic ground surface. There are many free sources of such data. See this site for a start: | |
− | + | http://www.naturalgfx.com/free_topo_gis.htm | |
− | + | We started with shapefile data for the US from: | |
− | |||
− | + | http://seamless.usgs.gov/data_availability.php?serviceid=Dataset_19 | |
− | + | We downloaded the zip archive 'ned_19_arc.zip' and unzipped in its own directory: | |
− | + | $ mkdir ned_19_usa_arcgis_shapefile | |
− | + | $ mv ned_19_arc.zip ned_19_usa_arcgis_shapefile | |
+ | $ cd ned_19_usa_arcgis_shapefile | ||
+ | $ unzip ned_19_arc.zip | ||
+ | Archive: ned_19_arc.zip | ||
+ | inflating: ned_19_arc.dbf | ||
+ | inflating: ned_19_arc.pdf | ||
+ | inflating: ned_19_arc.prj | ||
+ | inflating: ned_19_arc.sbn | ||
+ | inflating: ned_19_arc.sbx | ||
+ | inflating: ned_19_arc.shp | ||
+ | inflating: ned_19_arc.shp.xml | ||
+ | inflating: ned_19_arc.shx | ||
+ | inflating: ned_19_arc.txt | ||
+ | inflating: ned_19_arc.xml | ||
+ | inflating: NED_DataDictionary2006.pdf | ||
− | + | See these pages for details of the [ESRI] shapefile format: | |
− | + | http://en.wikipedia.org/wiki/Shapefile | |
− | + | http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Before we can create the dsp for the topo data we will have to extract the data we want and get it in shape to use. We will use the open source Geospatial Data Abstraction Library (GDAL) and its OGR subset to create a C++ program to manipulate the shapefile data. The library and documentation are available here: | |
− | + | http://gdal.org | |
− | + | We will also use the nanoflann header-only library to help transform the contour data, which is not gridded, into gridded data. That library is available here: | |
− | + | http://code.google.com/p/nanoflann/ | |
− | |||
− | + | Our programs will be made available in the BRL-CAD package. | |
− | + | ||
− | + | [TO BE CONTINUED] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |