c# parse pdf data : Get pdf metadata SDK software API .net winforms azure sharepoint SpatialEcologyGME1-part91

Automating commands with for loops in GME
The for loop is essential for ecient processing of many datasets. The few lines of code in
afor loop can generate thousands of commands that are run. The premise of this approach
is that you wish to iterate over a sequence of continuous numbers, or over a discontinuous
or arbitrary sequence of values in a list, running a sequence of commands at each iteration.
Simple examples will make this distinction clear.
Example 1: Iterating over a continuous series of numbers
If you have a telemetry dataset with 50 animals that are numbered starting at 101 and
ending at 150, then to calculate a kernel density estimate for each animal the for loop would
be:
for (i in 101:150)f
kde(in=”telemetry.shp”, out=paste(”kde
”, i, ”.img”), bandwidth=”SCV”, cellsize=20,
where=paste(”ANIMALID=”, i));
g
This would create output rasters named kde
1.img, kde
2.img, etc. This form of for loop
is straightforward but rather limitedbecause values ofinterest are often not continuous series.
Example 2: Iterating over a list of values
For loops can also iterate over an arbitrarily ordered list of values provided they have
been dened as variables in GME. For instance:
ids <- c(”M01”,”F01”,”M02”,”F02”,”J01”);
We could write a for loop that simply specied the number of items in the list: for(i in
1:6)f ... g, but it is generally more useful to write  exible loops that determine the length of
the list dynamically:
for (i in 1:length(ids))f
kde(in=”telemetry.shp”, out=paste(”kde
”, ids[i], ”.img”), bandwidth=”SCV”, cellsize=20,
where=paste(”ANIMALID=’”, ids[i], ”’”));
g
Note that inside the for loop we now use ids[i] instead of just i. We could perhaps have
just used i to name the output rasters in this particular case, but you will generally want to
refer back to the value of the item in the list, not the value of the current index.
Often you may wish to perform some operation on many datasets stored in dierent fold-
ers, or on sets of unique values in an ID eld. GME provides you with tools to automatically
generate these lists. See these commands for further information: uniquevalues, list.raster,
list.vector. For instance, list.raster can be used to nd every raster dataset in a folder and all
subfolders matching a specied naming convention. This can be very useful for automation.
11
Get pdf metadata - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
batch pdf metadata; get pdf metadata
Get pdf metadata - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
view pdf metadata; edit multiple pdf metadata
Generating GME commands using R
Ris a more  exible environment than GME for manipulating strings and constructing GME
commands in an automated way. The idea here is that you either copy and paste these
commands from R into GME, or write the commands to a text le and run them as a script
from GME.
The R cat() and paste() functions are the key to generating GME commands in R. The
important points to note are that:
1. use a slash-double quote combination (n") to write a double quote in the cat function
2. end each line with "nn" (this tells R to start a new line)
3. make sure you specify the sep="" option for that cat function because the default is a
space
Example 1: writing KDE commands for each individual when the unique ID eld is a
text eld
uniqueids<- unique(ANIMALID)
for (i in 1:length(uniqueids))f
cat(”kde(in=n”telemetry.shpn”, out=n”kde
”, uniqueids[i], ”.imgn”, bandwidth=n”SCVn”, cellsize=20,
where=n”ANIMALID=’”, uniqueids[i], ”’n”);nn”, sep=””)
g
If the uniquevalues vector was c("M01","F01","M02","F02","J01"), for instance, that
would result in these commands being written to the R window from where they can be
copied and pasted into GME and run:
kde(in=”telemetry.shp”, out=”kde
M01.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M01’”);
kde(in=”telemetry.shp”, out=”kde
F01.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F01’”);
kde(in=”telemetry.shp”, out=”kde
M02.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M02’”);
kde(in=”telemetry.shp”, out=”kde
F02.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F02’”);
kde(in=”telemetry.shp”, out=”kde
J01.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’J01’”);
Example 2: writing KDE commands for each individual and season (this is a more com-
plicated version of Example 1 that requires nested for loops)
This example assumes there is a season eld coded with numbers 1-4 representing 4
dierent seasons, and we want to calculate dierent kernel density estimates for each animal
in each season. Let’s also count the records to ensure there are enough data points, and only
run the kde command if there are more than 30.
uniqueids<- unique(ANIMALID)
12
C# TIFF: TIFF Metadata Editor, How to Write & Read TIFF Metadata
TIFFDocument doc = new TIFFDocument(@"c:\demo1.tif"); // Get Xmp metadata for string. TagCollection collection = doc.GetTagCollection(0); // Get Exif metadata.
c# read pdf metadata; edit pdf metadata
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
' Get PDF document. Dim fileInpath As String = "" Dim doc As PDFDocument = New PDFDocument(fileInpath) ' Get all annotations. ' Get PDF document.
batch update pdf metadata; add metadata to pdf programmatically
for (i in 1:length(uniqueids))f
for (j in 1:4)f
recs <- which(ANIMALID==uniqueids[i] & SEASON==j)
if (length(recs) >30) f
cat(”kde(in=n”telemetry.shpn”, out=n”kde
”, uniqueids[i], ”seas”, j, ”.imgn”, bandwidth=n”SCVn”,
cellsize=20, where=n”ANIMALID=’”, uniqueids[i], ”’ ANDSEASON=”, j, ”n”);nn”, sep=””)
ggg
If the uniquevalues vector wasc("M01","F01","M02","F02","J01"),forinstance,but that
only animalM01hadany datainseason4, that wouldresult in thesecommands being written
to the R window from where they can be copied and pasted into GME and run:
kde(in=”telemetry.shp”, out=”kde
M01seas1.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M01’ AND SEASON=1”);
kde(in=”telemetry.shp”, out=”kde
M01seas2.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M01’ AND SEASON=2”);
kde(in=”telemetry.shp”, out=”kde
M01seas3.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M01’ AND SEASON=3”);
kde(in=”telemetry.shp”, out=”kde
M01seas4.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M01’ AND SEASON=4”);
kde(in=”telemetry.shp”, out=”kde
F01seas1.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F01’ AND SEASON=1”);
kde(in=”telemetry.shp”, out=”kde
F01seas2.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F01’ AND SEASON=2”);
kde(in=”telemetry.shp”, out=”kde
F01seas3.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F01’ AND SEASON=3”);
kde(in=”telemetry.shp”, out=”kde
F01seas4.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F01’ AND SEASON=4”);
kde(in=”telemetry.shp”, out=”kde
M02seas1.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M02’ AND SEASON=1”);
kde(in=”telemetry.shp”, out=”kde
M02seas2.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M02’ AND SEASON=2”);
kde(in=”telemetry.shp”, out=”kde
M02seas3.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M02’ AND SEASON=3”);
kde(in=”telemetry.shp”, out=”kde
M02seas4.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’M02’ AND SEASON=4”);
kde(in=”telemetry.shp”, out=”kde
F02seas1.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F02’ AND SEASON=1”);
kde(in=”telemetry.shp”, out=”kde
F02seas2.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F02’ AND SEASON=2”);
kde(in=”telemetry.shp”, out=”kde
F02seas3.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F02’ AND SEASON=3”);
kde(in=”telemetry.shp”, out=”kde
F02seas4.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’F02’ AND SEASON=4”);
kde(in=”telemetry.shp”, out=”kde
J01seas1.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’J01’ AND SEASON=1”);
kde(in=”telemetry.shp”, out=”kde
J01seas2.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’J01’ AND SEASON=2”);
13
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
Get PDF document. String fileInpath = @""; PDFDocument doc = new PDFDocument(fileInpath); // Get all annotations. Get PDF document.
acrobat pdf additional metadata; change pdf metadata
How to C#: Modify Image Metadata (tag)
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel How to C#: Modify Image Metadata (tag). With XImage.Raster, you can get the image tags and modify them rapidly
read pdf metadata java; pdf metadata
kde(in=”telemetry.shp”, out=”kde
J01seas3.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’J01’ AND SEASON=3”);
kde(in=”telemetry.shp”, out=”kde
J01seas4.img”, bandwidth=”SCV”, cellsize=20,
where=”ANIMALID=’J01’ AND SEASON=4”);
Ris a more powerful but complex solution for generating GME commands. It is recom-
mended primarily for people with automation requirements that cannot be readily handled
within GME directly.
2.4 Projection denition les
Projection les are simply text les that dene a projection and the associated parameters.
GME uses these projection denition les to work with projections. This section provides
key information on how to work with these les, how to create them, and where to nd them.
Some GME commands require you to reference a prj le, so it is important to know how to
work with these les.
ArcGIS has dozens of pre-dened projections. In ArcGIS 10 they are located in the
installation folder in the ’Coordinate Systems’ folder, and are organized in sub-folders repre-
senting dierent families and collections of projections. (E.g. on my computer they are here:
C:nProgram FilesnArcGISnDesktop10.0nCoordinate Systems). This is one important source
for projection les as you can nd the projection le corresponding to your projection of
interest, and copy it to your working folder. You will probably be familiar with the directory
structure because it is the same one that you must navigate when using the projection tools
in ArcGIS.For instance, I often work with the UTMprojection, and the Zone 17N projection
le is found here:
C:nProgramFilesnArcGISnDesktop10.0nCoordinateSystemsnProjectedCoordinateSystemsn
UTMnWGS 1984nNorthern HemispherenWGS 1984 UTM Zone 17N.prj.
You can copy these les (copy, not move!) to other working folders if you wish (it is often
more convenient to have them in your working folder when using GME).
Alternatively, if a projection le is associated with a particular dataset, it will have the
same name as the dataset and end in a .prj extention. For instance, a shapele called
roads.shp will have a roads.prj le in the same location as the .shp le. If the .prj le is
missing this implies that the projection is undened (it is wise to ensure projections are
always dened). Thus, if you know a dataset is in the projection you wish to work with, you
can reference that prj le in GME commands. Or you can copy that prj le and rename it
with the name of the projection (so that it is easily identiable in the future).
All of these prj les can be opened in Notepad (or another text editor), although the
information is stored in a format that is not easily readable. It is strongly recommended that
you never manually edit a prj le.
How can you create custom projection les? Perhaps the easiest way is to use ArcCatalog
to create a new shapele: in ArcCatalog,right-click on a folder and select New, then Shaple.
Give it a name, and set it as point, line or polygon - it does not matter. In the Spatial
Reference section, select Edit, and then in the new form that appears New (you have to
say Projected or Geographic at this point). Continue through the process of dening your
14
VB.NET PDF: Get Started with PDF Library
rotate PDF pages, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET VB.NET PDF: Get Started with .NET PDF Library Using VB.
view pdf metadata in explorer; edit pdf metadata online
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Scan image to PDF, tiff and various image formats. Get image information, such as its location, zonal information, metadata, and so on.
pdf metadata online; google search pdf metadata
projection. At the end of this process your new shapele will have a .prj le associated with
it. I suggest you now copy this prj le, and give it a new name that can be easily identied
as your custom projection.
2.5 Specifying statistical and empirical distributions
Several of the commands in this interface accept statistical distributions as arguments (e.g.
the movement modellingsimulation commands). This section describes the distributions that
are available, and how to specify them.
There are 13 statistical distributions available, and there is also the ability to specify an
empirical distribution. The statistical distributions are all enabled via R:
1. BETA. The R command ’rbeta’ is used to generate beta distributed values based on
the two shape parameters specied. Syntax: c("BETA", shape1, shape2), e.g.
c("BETA", 1.5, 0.2).
2. BINOMIAL. The R command ’rbinom’ is used to generate binomially distributed
discrete values based on a specied size (number of trials) and probability parameter.
Syntax: c("BINOMIAL", size, prob), e.g. c("BINOMIAL", 20, 0.543).
3. CAUCHY. The R command ’rcauchy’ is used to generate Cauchy distributed values
based on a specied location and scale parameter. Syntax: c("CAUCHY", location,
scale), e.g. c("CAUCHY", 0.1, 0.987).
4. EXPONENTIAL. The R command ’rexp’ is used to generate exponentially
distributed values based on a single rate parameter. Syntax: c("EXPONENTIAL",
rate), e.g. c("EXPONENTIAL", 0.25).
5. GAMMA. The R command ’rgamma’ is used to generate gamma distributed values
based on the two shape parameters specied. Syntax: c("GAMMA", shape1, shape2),
e.g. c("GAMMA", 0.001, 0.001).
6. GEOMETRIC. The R command ’rgeom’ is used to generate geometric distributed
discrete values based on a single probability parameter. Syntax: c("GEOMETRIC",
prob), e.g. c("GEOMETRIC", 0.25).
7. LOGNORMAL. The R command ’rlnorm’ is used to generate log normally
distributed values based on a specied mean and standard deviation. Syntax:
c("LOGNORMAL", log mean, log standard deviation), e.g. c("LOGNORMAL",
1.234, 0.987).
8. NEGBINOMIAL. The R command ’rnbinom’ is used to generate negative binomially
distributed discrete values based on a specied size (number of trials) and probability
parameter. Syntax: c("NEGBINOMIAL", size, prob), e.g. c("NEGBINOMIAL", 20,
0.543).
9. NORMAL. The R command ’rnorm’ is used to generate normally (Gaussian)
distributed values based on a specied mean and standard deviation. Syntax:
15
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Capture image from whole PDF based on special characteristics. Get image information, such as its location, zonal information, metadata, and so on.
embed metadata in pdf; change pdf metadata creation date
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
You can easily get pages from a PDF file, and then use these pages to create and output a new PDF file. Pages order will be retained.
edit pdf metadata acrobat; remove pdf metadata
c("NORMAL", mean, standard deviation), e.g. c("NORMAL", 0, 1) or
c("NORMAL", 53.234, 3.678).
10. POISSON. The R command ’rpois’ is used to generate Poisson distributed discrete
values based on a single parameter lambda. Syntax: c("POISSON", lambda), e.g.
c("POISSON", 5).
11. UNIFORM. The R command ’runif’ is used to generate a uniform distribution of
values between a specied minimum and maximum value. Syntax: c("UNIFORM",
minimum, maximum), e.g. c("UNIFORM", 0, 1) or c("UNIFORM", 0, 3124.232).
12. WEIBULL. The R command ’rweibull’ is used to generate Weibull distributed values
based on the specied shape and scale parameters. Syntax: c("WEIBULL", shape,
scale), e.g. c("WEIBULL", 1.234, 2.345).
13. WRAPPEDCAUCHY. The R command ’rwrpcauchy’ in the CircStats package is
used to generate Wrapped Cauchy distributed values based on a specied location
and rho parameter. Syntax: c("WRAPPEDCAUCHY", location, rho), e.g.
c("WRAPPEDCAUCHY", 0.1, 0.987).
Alternatively an empirical distribution can be used to represent any other distribution
(with a small margin of error). Empirical distributions are represented as frequency tables
in a comma delimited format. Each row in the table contains a minimum value, a maximum
value, and thefrequency ofvalues inthat intervalin theempiricaldistribution (this frequency
can either be expressed as a percentage, a count, or a probability). Draws are made from
an empirical distribution using a rejection algorithm: an interval is randomly selected from
the table (all intervals have equal probability of selection), a random number from a uniform
distribution is generated and used to determine if a value from that intervalwill be generated
or not (if the random number is less than or equal to the specied probability value then
avalue is generated), and nally a value is generated from the interval by drawing from a
uniform distribution using the specied minimum and maximum values for that interval.
Thesmallertheintervals foreach of the bins in the frequency table,the closer the empirical
distribution will match the real distribution). Note that the intervals do not have to be
constant among all bins. In portions of the distribution where the density is eectively
constant (a  at portion of the density curve) then a wide interval can be used to represent
that portion of the distribution. Conversely, where the density changes rapidly (the steeper
portions of the density curve) then the bins should be narrow.
Theempiricaldistribution should be written toa commadelimitedtext le withnoheader
row (no column headings or labels), and three columns containing the minimum, maximum
and frequency values respectively. For example, this is an empirical distribution of turn
angles for a movement path:
-180,-160,0.048623563
-160,-140,0.04777977
-140,-120,0.043349858
-120,-100,0.049256408
-100,-80,0.052104208
16
C# PDF insert text Library: insert text into PDF content in C#.net
String inputFilePath = Program.RootPath + "\\" 1.pdf"; PDFDocument doc = new PDFDocument(inputFilePath); // get a text manager from the document object
read pdf metadata online; extract pdf metadata
-80,-60,0.05600675
-60,-40,0.063917308
-40,-20,0.068980065
-20,0,0.080898639
0,20,0.078894631
20,40,0.07319903
40,60,0.062440671
60,80,0.054846535
80,100,0.042506065
100,120,0.042400591
120,140,0.044615547
140,160,0.042506065
160,180,0.047674296
In this example the frequency column contains probabilities, and the probabilities sum
to 1 across all rows. Note that if you provide counts or percentages, the program will
automatically convert this to probabilities.
2.6 Using GME with Python (and ArcToolbox tools)
GMEis notformally integratedwithArcToolbox,but does allow integrationwithArcToolbox
/Model Builder models via Python. Although Python functionality is currently rather basic,
Ido plan to enable Python users to call GME commands via COM. However, for now what
I oer is the ability to call GME commands via the command prompt (issuing a system
command from Python).
To call GME commands from Python you need to issue a system command to the GME
executable SEGME.exe, with the command(s) you wish to execute included as a command
line argument. If you want to call a series of commands then it is recommended that you
write those to a text le (with a semicolon to end each line), and call SEGME.exe with the
’run’ command, referencing that text le.
If you want the GME interface to close when it has nished processing those commands
then include the switch -c as the rst argument (see examples below). This would allow you
to call GME repeatedly, for instance in a loop, without command windows building up with
every call to SEGME.
You must rst load the subprocess Python library (using: import subprocess as subp)
at the beginning of your Python session. To call GME from the command line you use the
following generic syntax:
os.system(r’pathnSEGME.exe commands’)
where path is the full directory path to the SEGME command, usually:
subp.call(r’C:nProgram FilesnSpatialEcologynGMEnSEGME.exe commands’)
and commands is the list of commands you wish to execute. Note that the r at the beginning
of that path name is not a mistake: it tells Python to interpret the following text literally.
Please note that you need to add a backslash before all quote marks in the commands text,
otherwise it is the same syntax as GME. For instance, here is a Python call to GME that
17
tells it to run the GME script called "E:ndatangmescript.txt":
subp.call(r’C:nProgram FilesnSpatialEcologynGMEnSEGME.exe -c
run(in=n"E:ndatangmescript.txtn");’);
(This command has been displayed on two lines here because it is too long for a single
line, though in Python it would be a single line). Note that by including -c directly after
SEGME.exe, this will force the GME interface to close when it has nished running the
specied commands.
18
3 COMMAND REFERENCE
3.1 Strategic Commands
Strategic commands
There are 5 important features of GME that I strongly recommend you learn about before
using GME. They will change the way you use GME, design geospatial analyses,
organise your data, and share analysis ideas with others. They are fundamental
tools for ecient data analysis. If you use R, no doubt you will recognize the value of these
features already. While some of them can be used individually, exploiting the power of GME
involves using them together. The few minutes it takes you to read this section is time well
spent. I summarize the features here, but more detailed syntax help is provided for each one
in the Command Reference section.
1. For loops. These are a basic programming construct that allows you to repeat one or
more commands many times. An "index variable" (usually a single letter) is used to control
the number of iterations. Importantly, this index variable can be used within the block of
commands in the loop to alter the arguments to the commands. For loops can be nested. An
example is provided below.
2. Variable assignment for simple data types. This allows you to dene your own
variables, and set them to equal a simple data type: text (strings), integers, double precision
numbers, or one dimensionalvectors of strings or numbers. This feature enables you to write
easily re-usablescripts: youonly needto set thevariables once atthe beginning ofyour script,
and then you can refer to the variable name in all subsequent commands. One obvious way
that this is useful is if you want to run the same set of commands on similar datasets in
many folders, or on dierent drives or computers - you only need to change the path variable
once rather than search and replace the incorrect path in every single command. (Also see
the ls() command when using variable assignment).
3. r.eval() function. This function evaluates R code, retrieves the output of that code,
and embeds it into the GME command string. This provides you with a way of linking the
phenomenal power of R with GME. Sometimes the r.eval() functions is simply a matter of
convenience , for instance, rather than typing a 50 value sequence by hand, e.g. c(0, 0.02,
0.04 ... 0.98, 1), we could type r.eval(seq(0,1,0.02)). More importantly, it allows you to access
much more powerful R code to parameterize your GME commands. For instance, you might
use the optimisation commands in R to generate a maximum likelihood parameter value.
4. paste() function. This function is similar to the R paste function. It allows you
to construct strings (text) dynamically. This is particularly important within for loops. For
instance,assuming we have set the variable called path (path <- "C:ndatanrastersn"), and we
have written a for loop as for(i in 1:3)f...g, then this paste function: paste(path, "tmband",
i, ".tif") evaluates to: "C:ndatanrastersntmband1.tif" in the rst loop. A more complete
example is provided below.
5. The "where" clause. This allows you to specify a subset of records/vector features
to process based on a simple logical statement (an SQL statement). This makes data man-
agement easier (youdon’t have to split datasets apart to runanalyses),andmore importantly
19
it provides you with an important mechanism for repeating an analysis on dierent subsets
of data.
Example
Here is an example that brings all these elements together. Imagine you wish to create
kernel density estimates for each individual in each month, based on a database of GPS
telemetry locations. In this example we assume there are 10 animals with ID numbers
1001-1010, and we want to process points for each month:
inpath <- ”C:ndatan”
outpath <- ”C:noutputn”
for (i in 1001:1010) f
for (j in 1:12)f
kde(in=paste(inpath, ”telemetry.shp”), out=paste(outpath, ”kde
an”, i, ”
m”, j, ”.img”),
bandwidth=1000, cellsize=r.eval((250000-120000)/2000), where=paste(”ANIMALID=”, i, ” AND
MONTH=”, j));
g;
g;
These few lines of code generate 120 kde commands. How does this work? There are two
loops: one loop that corresponds to the animal ID numbers as is identied with the variable
’i’, and a second nested loop corresponding to the month with variable ’j’. Note that there
are three ’paste’ commands embedded within the kde command, two of which use the two
index variables i and j. The r.eval() statement is simplistic and contrived, but does illustrate
how it can be used. In the rst iteration of the loop, i=1001 and j=1, and the resulting
command becomes:
kde(in=”C:ndatantelemetry.shp”, out=”C:noutputnkde
an1001
m1.img”,
bandwidth=1250, cellsize=65, where=”ANIMALID=1001 AND MONTH=1”);
The second iteration of the loop would result in:
kde(in=”C:ndatantelemetry.shp”,
out=”C:noutputnkde
an1001
m2.img”, bandwidth=1250, cellsize=65, where=”ANIMALID=1001
AND MONTH=2”);
and so on, until the nal iteration, which yields:
kde(in=”C:ndatantelemetry.shp”,
out=”C:noutputnkde
an1010
m12.img”, bandwidth=1250, cellsize=65, where=”ANIMALID=1010
AND MONTH=12”);
Do youwant evenmore power to construct GMEscripts? Consider using R(or Python,or
any other programming/scripting language) directly to write GME commands to a text le,
and run them using the ’run’ command. For instance, R has a vast array of commands that
20
Documents you may be interested
Documents you may be interested