c# pdf reader itextsharp : Cut pages out of pdf Library control class asp.net web page html ajax sumanual_600dpi_a49-part462

8.2. UNDERSTANDING AND USING SU SHELL PROGRAMS
79
temp=dmocogs
output=dmocmgs
smute=1.7
vnmo=1500,1550,1700,2000,2300,2600,3000
[3]
tnmo=0.00,0.40,1.00,2.00,3.00,4.00,6.00
# sort to common-offset, nmo, dmo, inverse-nmo, sort back to cmp
susort <$input offset cdp |
[4]
sunmo smute=$smute vnmo=$vnmo tnmo=$tnmo |
[5]
sudmofk cdpmin=201 cdpmax=800 dxcdp=13.335 noffmix=4 verbose=1 | [6]
sunmo invert=1 smute=$smute vnmo=$vnmo tnmo=$tnmo >$temp
[7]
susort <$temp cdp offset >$output
[8]
Discussion of numbered lines:
The core of the shell program (lines 5-7) is recognized as the typical dmo process: crude nmo, dmo,
and then “inverse” nmo. The dmo processing is surrounded by sorting operations (lines 4 and 8). Here
is a detailed discussion of the shell program keyed to the numbers appended to the listing (see also the
discussion above for the Plot shell):
1. Set a debugging mode that asks UNIX to echo the lines that are executed. You can comment
this line off when its output is no longer of interest. An alternate debugging flag is set -v which
echos lines as they are read by the shell interpreter. You can use both modes at once if you like.
2. This line and the next two lines set filenames that, in this case, are in the same directory as the
shell program itself. Again, the reason for using parameters here is to make it easy to “clone”
the shell for use with other data sets. Those of us who work with only a few data sets at any
given time, find it convenient to devote a directory to a given data set and keep the shells used to
process the data in that directory as documentation of the processing parameters used. (SU does
not have a built-in “history” mechanism.)
3. The dmo process requires a set of velocity-time picks for the subsidiary nmo processes. Because
these picks must be consistent between the nmo and the inverse nmo, it is a good idea to make
them parameters to avoid editing mistakes. Again, note the format of SU parameter vectors:
comma-separated strings with no spaces. The nmo program (sunmo) will give an error message
and abort if the vnmo and tnmo vectors have different lengths.
4. Note that susort allows the use of secondary sort keys. Do not assume that a secondary field
that is initially in the “right” order will remain in that order after the sort—if you care about the
order of some secondaryfield, specify it (as this shell programdoes). In this line, we sort the data
according to increasing offsets and then, within each offset, we sort according to increasing cdp
number.
5. The forward nmo step.
6. The dmo step.
7. The inverse nmo step.
8. Sort back to cdp and have increasing offset within each cdp.
If you want to thoroughly understand this shell program, your next step is to study the self-docs of
the programs involved:
% sunmo
SUNMO - NMO for an arbitrary velocity function of time and CDP
Cut pages out of pdf - remove PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provides Users with Mature Document Manipulating Function for Deleting PDF Pages
delete page from pdf file online; delete pages from pdf in reader
Cut pages out of pdf - VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Visual Basic Sample Codes to Delete PDF Document Page in .NET
delete pages out of a pdf; copy pages from pdf to word
80
CHAPTER 8. PROCESSING FLOWS WITH SU
sunmo <stdin >stdout [optional parameters]
Optional Parameters:
vnmo=2000
NMO velocities corresponding to times in tnmo
tnmo=0
NMO times corresponding to velocities in vnmo
...
Related shell programs are su/examples/Nmostack and su/examples/Mig.
8.3 Extending SU by shell programming
Shell programming can be used to greatly extend the reach of SU without writing C code. See, for
example, CvStack, FilterTest, FirstBreak, and Velan in su/examples.
It isa sadfact that the UNIX shell is nota high level programminglanguage—consequently, effective
shell coding often involves arcane tricks. In this section, we’ll provide some useful templates for some of
the common UNIX shell programming idioms.
We use CvStack as an illustration. The core of this shell is a double loop over velocities and cdps
that produces velocity panels—a concept not contained in any single SU program.
Remark: For most of us, writing a shell like CvStack from scratch is a time-consuming affair. To
cut down the development time, your authors excerpt from existing shells to make new ones even when
we don’t quite remember what every detail means. We suggest that you do the same!
We won’t comment on the lines already explained in our previous two shell code examples (see
Sections 8.2.1 and 8.2.3), but instead focus on the new features used in CvStack.
#! /bin/sh
# Constant-velocity stack of a range of cmp gathers
# Authors: Jack, Ken
# NOTE: Comment lines preceding user input start with #!#
set -x
#!# Set input/output file names and data parameters
input=cdp601to610
stackdata=cvstack
cdpmin=601 cdpmax=610
fold=30
space=1
# 1 null trace between panels
#!# Determine velocity sampling.
vmin=1500
vmax=3000
dv=150
### Determine ns and dt from data (for sunull)
nt=‘sugethw ns <$input | sed 1q | sed ’s/.*ns=//’‘
[1]
dt=‘sugethw dt <$input | sed 1q | sed ’s/.*dt=//’‘
### Convert dt to seconds from header value in microseconds
dt=‘bc -l <<END
[2]
scale=4
$dt / 1000000
END‘
VB.NET Image: Image Cropping SDK to Cut Out Image, Picture and
VB.NET Image Cropper Control SDK to Cut Out Part of Image. Do you need to cut out certain unwanted part from one image file by VB.NET code?
delete pages of pdf reader; delete a page from a pdf online
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark can view PDF document in single page or continue pages. Support to zoom in and zoom out PDF page.
delete blank pages in pdf files; delete pdf page acrobat
8.3. EXTENDING SU BY SHELL PROGRAMMING
81
### Do the velocity analyses.
>$stackdata # zero output file
[3]
v=$vmin
while [ $v -le $vmax ]
[4]
do
cdp=$cdpmin
while [ $cdp -le $cdpmax ]
[5]
do
suwind <$input \
[6]
key=cdp min=$cdp max=$cdp count=$fold |
sunmo cdp=$cdp vnmo=$v tnmo=0.0 |
sustack >>$stackdata
cdp=‘bc -l <<END
[7]
$cdp + 1
END‘
done
sunull ntr=$space nt=$nt dt=$dt >>$stackdata
[8]
v=‘bc -l <<END
$v + $dv
END‘
done
### Plot the common velocity stacked data
ncdp=‘bc -l <<END
$cdpmax-$cdpmin+1
END‘
f2=$vmin
d2=‘bc -l <<END
$dv/($ncdp + $space)
[9]
END‘
sugain <$stackdata tpow=2.0 |
suximage perc=99 f2=$f2 d2=$d2 \
title="File: $input Constant-Velocity Stack " \
label1="Time (s)" label2="Velocity (m/s)" &
exit
[10]
Discussion of numbered lines:
1. This elaborate construction gets some information from the first trace header ofthe data set. The
program sugethw lists the values of the specified keys in the successive traces. For example,
% suplane | sugethw tracl ns
tracl=1
ns=64
tracl=2
ns=64
tracl=3
ns=64
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Remove Image from PDF Page. Image: Copy, Paste, Cut Image in can view PDF document in single page or continue pages. Support to zoom in and zoom out PDF page.
delete pages from a pdf document; delete pages in pdf
VB.NET PDF Text Extract Library: extract text content from PDF
Extract highlighted text out of PDF document. Image text extraction control provides text extraction from PDF images and image files.
delete pdf pages reader; delete page in pdf reader
82
CHAPTER 8. PROCESSING FLOWS WITH SU
tracl=4
ns=64
tracl=5
ns=64
tracl=6
ns=64
...
Although sugethwis eager to give the values for every trace in the data set, we only need it once.
The solution is to use the UNIX stream editor (sed). In fact, we use it twice. By default, sed
passes along its input to its output. Our first use is merely to tell sed to quit after it puts the first
line in the pipe. The second pass through sed strips off the unwanted material before the integer.
In detail, the second sed command reads: replace (or substitute) everything up to the characters
ns= with nothing, i.e., delete those characters.
2. We are proud of this trick. The Bourne shell does not provide floating point arithmetic. Where
this is needed, we use the UNIX built-in bc calculator program with the “here document” facility.
Here, we make the commonly needed conversion of sampling interval which is given in micro-
seconds in the SEG-Y header, but as seconds in SU codes. Note carefully the backquotes around
the entire calculation—we assign the result of this calculation to the shell variable on the left of
the equal sign, here dt. The calculation may take several lines. We firstsetthe number of decimal
places with scale=4 and then do the conversion to seconds. The characters END that follow the
here document redirection symbol << are arbitrary, the shell takes its input from the text in the
shell file until it comes to a line that contains the same characters again. For more information
about bc:
% man bc
3. As the comment indicates, this is a special use ofthe output redirection symbol that has the effect
of destroying anypre-existing file of the same name or opening a new file with that name. In fact,
this is what > always does as its first action—it’s a dangerous operator! If you intend to append,
then, as mentioned earlier, use >>.
4. This is the outer loop over velocities. Another warning about spaces—the spaces around the
bracket symbols are essential.
Caveat: The bracket notation is a nice alternative to the older clunky test notation:
while test $v -le $vmax
Because the bracket notation is not documented on the typical sh manual page, we have some
qualms about using it. But, as far as we know, all modern sh commands support it—please let
us know if you find one that doesn’t.
WARNING! OK, now you know that there is a UNIX command called test. So don’t use the
name “test” for one of your shell (or C) programs—depending on your $PATH setting, you could
be faced with seemingly inexplicable output.
5. This is the inner loop over cdps.
6. Reminder: No spaces or tabs after the line continuation symbol!
7. Notice that we broke the nice indentation structure by putting the final END against the left
margin. That’s because the sh manual page says that the termination should contain only the
END (or whatever you use). In fact, most versionssupport indentation. We didn’t think the added
beautification was worth the risk in a shell meant for export. Also note that we used bc for an
integer arithmetic calculation even though integer arithmetic is built into the Bourne shell—why
learn two arcane rituals, when one will do? See man expr, if you are curious.
C# PDF Text Extract Library: extract text content from PDF file in
Ability to extract highlighted text out of PDF document. Please have a quick test by using the following C# example code for text extraction from all PDF pages.
delete a page from a pdf acrobat; cut pages from pdf
C# WPF PDF Viewer SDK to view PDF document in C#.NET
Image from PDF Page. Image: Copy, Paste, Cut Image in PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET Abilities to zoom in and zoom out PDF page.
copy pages from pdf to new pdf; cut pages out of pdf
8.3. EXTENDING SU BY SHELL PROGRAMMING
83
0
1
2
3
4
5
Time (s)
1500
2000
2500
3000
Velocity (m/s)
File: cdp601to610  Constant-Velocity Stack 
Figure 8.2: Output of the CvStack shell program.
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
Image from PDF Page. Image: Copy, Paste, Cut Image in PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET Abilities to zoom in and zoom out PDF page.
delete a page from a pdf file; delete pages from pdf
C# PDF Form Data fill-in Library: auto fill-in PDF form data in C#
Able to fill out all PDF form field in C#.NET. RasterEdge XDoc.PDF SDK package provides PDF field processing features for your C# project.
delete pages from a pdf in preview; delete pages out of a pdf file
84
CHAPTER 8. PROCESSING FLOWS WITH SU
8. sunullisa programI (Jack)wrote to create all-zerotraces to enhance displaysofthe sortproduced
by CvStack. Actually, I had written this program many times, but this was the first time I did it
on purpose. (Yes, that was an attempt at humor.)
9. An arcane calculation to get velocity labeling on the trace axis. Very impressive! I wonder what
it means? (See last item.)
10. The exit statement is useful because you might want to save some “spare parts” for future use.
If so, just put them after the exit statement and they won’t be executed.
Figure 8.2 shows an output generated by CvStack.
VB.NET PDF - WPF PDF Viewer for VB.NET Program
Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Users can rotate PDF pages, zoom in or zoom out PDF pages and go to any pages
delete a page in a pdf file; delete pages from a pdf
VB.NET PDF- HTML5 PDF Viewer for VB.NET Project
Remove Image from PDF Page. Image: Copy, Paste, Cut Image in NET comment annotate PDF, VB.NET delete PDF pages, VB.NET PDF page and zoom in or zoom out PDF page
delete page on pdf reader; delete page from pdf file
Chapter 9
Answers to Frequently Asked
Questions
This chapter addresses questions often asked by new SU users. Some answers refer to the directory
CWPROOT. We use this symbolic name for the directory that contains the CWP/SU source code, include
files, libraries, and executables. You are asked to specify this directory name during the SU installation
procedure.
9.1 Installation questions
Complete information about the installation process is found in the README files supplied with the
distribution. Here we discuss only some commonly found installation problems.
Question 1 I get error messages about missing fgetpos and fsetpos routines, even though I am using
the GCC compiler. How do I get around this problem?
Answer 1 We’ve seen this problem most often with older SUN OS 4.xx (pre-SOLARIS). These SUN
systems may not have the fgetpos and fsetpos subroutines defined. Because these two routines are
not currently used in the SU package, we have modified the installation process to permit the user
to define a compile-time flag to circumvent this problem. Please uncomment the OPTC line in the
paragraph in Makefile.config that looks like this:
# For SUN installing with GCC compiler but without GLIBC libraries
#OPTC = -O -DSUN_A -DSUN
and do a ”make remake”.
Question 2 I get error messages regarding missing strtoul, and/or strerror routines, even though I
am using the GCC compiler. How do I get around this problem?
Answer 2 Again, this is most often seen with the older SUN OS. The fixis the same as for the previous
question.
Question 3 Why do I get missing subroutine messages about ANSI C routines? Isn’t the GCC compiler
supposed to be an ANSI compiler?
Answer 3 The GCC compiler is just that, a compiler. It draws on the libraries that are present on
the machine. If the GNU libraries (this is the ”glibc” package) have not been installed, then the GCC
compiler will use the libraries that are native to the machine you are running on. Because the four
routines listed above are not available in the SUN 4. OS, GCC does not recognize them. However,
installing the GNU libraries will make the GCC compiler behave as a full ANSI C compiler.
85
86
CHAPTER 9. ANSWERS TO FREQUENTLY ASKED QUESTIONS
Question 4 Why do I get missing subroutine messages about ANSI C routines? I can’t get the code to
compile because my compiler can’t find ”bzero” or ”bcopy”, how can I fix this?
Answer 4 You really shouldn’t be having this problem, because we try to keep to the ANSI standard,
but sometimes old style function calls creep in. The problem of rooting these things out is exacerbated
because many systems still support the old style calls.
If you have trouble installing because your compiler can’t find ”bcopy” or ”bzero” make the following
replacements.
Replace all statements of the form
bzero( a, b);
with statements of the form:
memset( (void *) a , (int) ’\0’, b );
Please replace all instances of statements of the form of:
bcopy ( a , b, c);
with a statements of the form:
memcpy( (void *) b, (const void *) a, c );
9.2 Data format questions
In this section, we address questions about converting data that are in various formats into SU format.
Question 5 What is the data format that SU programs expect?
Answer 5 The SU data format is based on, (but is notexactlythe same as) the SEG-Y format. The SU
formatconsists ofdata traces eachofwhichhas a header. The SU trace header is identical to SEG-Y trace
header. Both the header and the trace data are written in the native binary format of your machine.
You will need to use segyread to convert SEGY data to SU data.
Caution: The optional fields in the SEG-Y trace header are used for different purposes at different sites.
SU itself makes use of certain of these fields. Thus, you may need to use segyclean—see the answer to
Question 7. SU format does not have the binary and ebcdic tape headers that are part of the SEG-Y
format.
After installing the package, you can get more information on the SEG-Y/SU header by typing:
% sukeyword -o
This lists the include file segy.h that defines the SU trace header.
Question 6 Is there any easy way of adding necessary SEG-Y information to our own modeled data to
prepare our data for processing using the SU package?
Answer 6 It depends on the details of how your data was written to the file:
1. If you have a ‘datafile’ that is in the form of binary floating point numbers of the type that would
be created by a C program, then use suaddhead to put SU (SEG-Y) trace headers on the data.
Example:
% suaddhead < datafile ns=N_SAMP > data.su
9.2. DATA FORMAT QUESTIONS
87
Here, N_SAMP is the (integer) number of samples per trace in the data.
2. If your data are Fortran-style floats, then you would use:
% suaddhead < datafile ftn=1 ns=NS > data.su
See also, Question 10.
3. If your data are ASCII, then use:
% a2b n1=N1 < data.ascii | suaddhead ns=NS > data.su
Here N1 is the number of floats per line in the file data.ascii.
4. If you have some other data type, then you may use:
% recast < data.other in=IN out=float | suaddhead ns=NS > data.su
where IN is the type (int, double, char, etc...)
For further information, consult the self-docs of the programs suaddhead, a2b, and recast.
Question 7 I used segyread to read a SEG-Y tape. Everything seems to work fine, but when I plot my
data with suximage, the window is black. What did I do wrong?
Answer 7 When you read an SEG-Y tape, you need to pipe the data through segyclean to zero the
optional SEG-Y trace header field. If the SU programs see nonzero values in certain parts ofthe optional
field, they try to display the data as “nonseismic data,” using those values to set the plot parameters.
Another possibility is that there are a few data values that are so large that they are overwhelming
the 256 gray scale levels in the graphics. The way to get around this problem is to set perc=99 in the
graphics program. For example:
% suximage < sudata perc=99 &
This will clip data values with size in the top 1 percentile of the total data.
Question 8 I am trying to plot data with the pswigb (or pswigp, or xwigb, or ...) program. I know
that I have data with n1=NSAMP and n2=NTRACES, but when I plot, I find that I have to set n1=NSAMP+60
for the plot to look even remotely correct. Why is this?
Answer 8 It is likely that you are trying to plot with the wrong tool. The input data format of the
programs, pswigb, pswigp, pscontour, pscube, psmovie, xwigb, xgraph, and xmovie, expect data to
consist of simple floating point numbers. If your data are SU data (SEG-Y) traces, then there is an
additional header at the beginning of each trace, which, on most computer architectures, is the same
number (240) of bytes as the storage for 60 floats.
To plot these data, use respectively: supswigb, supswigp, supscontour, supscube, supsmovie,
suxwigb, suxgraph, or suxmovie.
Also, it is not necessary to specify the dimensions of the data for these latter programs. The su-
versions of the codes determine the necessary information from the appropriate header values. (In fact,
that is all they do—the actual graphics is handled by the version without the su prefix.)
Question 9 I want to check the size of a file to see if it has the right number of values, but I am not
sure how to take the header into account. How is this done?
88
CHAPTER 9. ANSWERS TO FREQUENTLY ASKED QUESTIONS
Answer 9 If the file consists of simple floating point numbers, then the size in bytes equals the size
of a float times the number of samples (SIZE = 4 * N_SAMP). The SU data (SEG-Y traces) also have a
header (240 bytes per trace) giving the total number of bytes as:
(240 + 4 N_SAMP ) N_TRACES.
The byte count computed in this way is the number that the UNIX command ls -l shows.
Caveats: The above calculations assume that you have the conventional architecture and that the
header definition in segy.h has not been altered. Watch out as machines with 64 bit word size become
common!
Question 10 I have some data in Fortran form and tried to convert it to SU data via the following:
% suaddhead < data.fortran ns=N_SAMP ftn=1 > data.su
but this did not work properly. I am sure that my fortran data are in unformatted binary floats. What
should I do?
Answer 10 There are different ways of interpreting the term “unformatted” with regard to fortran
data. Try:
% ftnstrip < data.fortran | suaddhead ns=N_SAMP > data.su
The program ftnstrip can often succeed in converting your fortran data into C-like binary data,
even when the ftn=1 option in suaddhead fails. (Note: the program ftnunstrip may be used to take
C-style binary data and convert it to Fortran form.)
Question 11 I just successfully installed the CWP/SU package, but when I try to run the demo scripts,
Iget many error messages describing programs that the shell script cannot find. How do I fix this?
Answer 11 You need to put CWPROOT/bin (where CWPROOT is /your/root/path that contains the
CWP/SU source code, include files, libraries, and executables) in your shell PATH. This is done in your
.cshrc file if you run under csh or tcsh. In Bourne shell (sh), Born Again shell (bash), or Korn shell
(ksh) the PATH variable is in your .profile file. You also need to type
% rehash
if you are running C-shell /bin/csh or TC-shell /bin/tcsh as your working shell environment, if you
have not relogged since you compiled the codes.
Question 12 How do I transfer data between SU and a commercial package, such as Promax.
Answer 12 The short answer is that you make a SEGY tape on disk file. To do convert a file called,
say, ”data.su” to a segy file do the following:
% segyhdrs < data.su
% segywrite tape=data.segy < data.su
Now use Promax to read data.segy. This file is a ”Promax tape-on-disk file in IBM Real format.”
Choose Promax menus accordingly.
For other commercial packages, use the appropriate commands to read a SEGY tape on disk file.
To go from the commercial package to SU follow the reverse steps. Create a file that is a SEGY tape
image and then use
% segyread tape=data.segy | segyclean > data.su
Documents you may be interested
Documents you may be interested