Posts

PCI EASI Script [PIX_to_SHP_batch_export.eas]

This simple EASI script used with the MODEL command in PCI will batch convert vector files stored in PCIDSK (PIX) format into Shape File (SHP) format with the exact same file name as the input files. This was originally created for PCI Geomatica v9.1 but was last tested and working with no problems in PCI Geomatica v10.0


!—————————————————————————-
!—————————————————————————-
!
! Batch Export PIX Vector to SHP Script
! [PIX_to_SHP_batch_export.eas]
!
! This script will export vector segments from PIX files located in a
! given directory into Shape files and place the new files into the same
! directory. The script assumes that no SHP files with the same names
! already exist and all the input files are setup the same with the
! vector segments stored the same.
!
!—————————————————————————-
!—————————————————————————-
! Define variables
!—————————————————————————-

!to store location of input & output files

local string in_files

!for the file format and extension types

local string type, ext

!file names

local string bn, fn

!to store directory listing of input files

local mstring dirlist

!to store vector segment number

local integer vec

local integer i

local $Z

!—————————————————————————-
! Clear the EASI window and then show the header information
!—————————————————————————-

PRINT @(1 ,1,CLREOS)

print “———————————————————————–”
print @reverse,” ‘Batch export PIX vector to SHP’ EASI Script “,@alloff
print “”
print “”
print “”
print “———————————————————————–”
print “”
print ” This script will export vectors from PIX files in a given directory ”
print ” into SHP format using the same file names as the input files. ”
print “”
print ” All input vector files are expected to be setup the same with all ”
print ” vectors to be exported, stored using the same segment number.”
print “”
print “———————————————————————–”
print “”

!—————————————————————————-
! Collect input from user
!—————————————————————————-

print “Enter the directory that contains the PIX files to export to SHP:”

input “>” in_files

print “Enter the vector segment number that the vector is stored in:”

input “>” vec

!——————————————————————-
! Get the contents of the directory
!——————————————————————-

type =”pix

dirlist = getdirectory(in_files)

let $Z = “\

for i = 1 to f$len(dirlist)

!——————————————————————-
! Extract parts of the filenames
!——————————————————————-

fn = in_files + $Z + dirlist[i]

ext = getfileextension(fn)

bn = getfilebasename(fn)

if (ext ~= type) then

print “”
print “Exporting:”, bn, “from PIX to SHP”
print “”

!—————————————————————-
! Set up the parameters and execute the FEXPORT command
!—————————————————————-

fili = in_files + $Z + dirlist[i]
filo = in_files + $Z + bn
dbiw =
dbic =
dbib =
dbvs = vec
dblut =
dbpct =
ftype =”SHP
foptions =

R Fexport

PRINT @(1 ,1,CLREOS)

endif

endfor

PRINT @(1 ,1,CLREOS)

print “——————————————————————-”
print “”
print @reverse,” ‘Batch export PIX vector to SHP’ EASI Script Finished “,@alloff
print “”
print “——————————————————————-”

return

!—————————————————————————-
!—————————————————————————-

Script to generate a PIX file large enough to contain all input DEM files

Below is a simple EASI script used with the MODEL command in PCI will generate an output PIX file with extents large enough to contain all of the input files PIX files and then mosaic each of the input files into the output pix file. It was designed to mosaic several DEM files into one large DEM file.

This was originally created for PCI Geomatica v9.1 but was last tested and working with no problems in PCI Geomatica v10.0 – Just copy the code below into a blank text file and edit as needed.

!—————————————————————————-

! Multiple DEM Mosaic Script
! [mul_DEM_mosaic.eas]

! Ted MacKinnon – tmackinnon.com
!
! This script will generate an output PIX file with extents large enough
! to contain all of the input files and then mosaic each of the input
! files into the new output pix file.
!
! This script was designed to mosaic several DEM files into one large
! DEM file. Each input DEM file must have the same projection,
! resolution and at each DEM should have at least 150m overlap.
!
! The user is expected that the user will enter (or verify) the parameters
! of ‘CIMPRO’ at the bottom of this script prior to running the script.
! Parmaters such as BXPXSZ and DBIC have been hard coded.

!—————————————————————————-
!—————————
! Define variables
!—————————

!for input & output pix files and pixel size

local string inputFile, outputFile
local string pixel

!to obtain list of input files
local mstring inputList
local integer inputIndex

!for extracting georeferencing information

local GeoInfo geoInfo
local integer geoFile

!to contain bounding rectangle of all input files

local double boundULX, boundULY, boundLRX, boundLRY

!—————————————————————————-
! Clear the EASI window and then show the header information
!—————————————————————————-

PRINT @(1 ,1,CLREOS)

print “———————————————————————–

print @reverse,” ‘Mosaic multiple DEM files’ EASI Script “,@alloff
print “”
print “”
print “”
print “———————————————————————–“
print “”
print ” This script will generate an new output PIX file with extents large “
print ” enough to contain all of the PIX files in this directory and then “
print ” mosaic each of the PIX files into the new output file.”
print “”
print ” The output file will contain the following projection: “
print “”

! The projection will be printed to the screen as a general reminder

print ” UTM 11 S E000″

print “”
print “———————————————————————–“
print “”

!—————————————————————————-
! Collect input from user
!—————————————————————————-

print “”
print “Enter the Output file name:”
input “>” outputFile
print “”

print “Enter the pixel size for: “,outputfile

input “>” pixel

print “”
print “”

PRINT @(1 ,1,CLREOS)

!—————————————————————————-
! Create list of input files
!—————————————————————————-

sys “dir *.pix /b > pixlist.txt”

inputList = Text$Import(“pixlist.txt”)

!—————————————————————————
! Read georeferencing of each input file
!—————————————————————————-

for inputIndex = 1 to F$LEN(inputList)

print inputList(inputIndex)

geoFile = DBOpen(inputList(inputIndex), “r”)
call DBReadGeoInfo(geoFile, geoInfo)
call DBClose(geoFile)

print “Georeferencing: “, geoInfo.Units
print “Image extents: “,geoInfo.ULX, “, “, geoInfo.ULY, ” “, geoInfo.LRX, “, “, geoInfo.LRY

PRINT @(1 ,1,CLREOS)

!————————————————————————-
! initialize bounds using first file
!————————————————————————-

if inputIndex = 1 then

boundULX = geoInfo.ULX
boundULY = geoInfo.ULY
boundLRX = geoInfo.LRX
boundLRY = geoInfo.LRY

else

!———————————————————————–
! assumes UTM projection (ULY > LRY)
!———————————————————————–

if geoInfo.ULX < boundULX then
boundULX = geoInfo.ULX

endif

if geoInfo.ULY > boundULY then

boundULY = geoInfo.ULY

endif

if geoInfo.LRX > boundLRX then

boundLRX = geoInfo.LRX

endif

if geoInfo.LRY < boundLRY then
boundLRY = geoInfo.LRY

endif

endif

print “”

endfor

print outputFile, ” file extents: “, boundULX, ” “, boundULY, ” “, boundLRX, ” “, boundLRY

!—————————————————————————-
! create the output PIX file containing bounds
!—————————————————————————-

FILE = outputFile
TEX1 =

!Specify the # of channels here

DBNC = 1,0,0,0
DBLAYOUT = “PIXEL”

!Specify the projection info here

PROJECT = “UTM”
ZONE = 11
ROW = “S”
ELLIPS = “0”
LLBOUND = “N”

ULX = F$STRING(boundULX)
ULY = F$STRING(boundULY)
LRX = F$STRING(boundLRX)
LRY = F$STRING(boundLRY)
BXPXSZ = pixel
BYPXSZ = pixel
REPORT = “TERM”

run CIMPRO

!—————————————————————————-
! Mosaic each PIX file from the listing into the outputfile
!—————————————————————————-

inputList = Text$Import(“pixlist.txt”)

for inputIndex = 1 to F$LEN(inputList)

inputFile = inputList(inputIndex)

!————————————————————————–
! Clear the EASI window and show progress
!————————————————————————–

PRINT @(1 ,1,CLREOS)

print “”
print “Mosaicking “, inputFile, ” into “, outputFile
print “”

FILI = inputFile
DBIC = 1
DBVS =
DBLUT =
FILO = outputFile
DBOC = 1
BLEND =
BACKVAL = 0

run MOSAIC

endfor
!—————————————————————————-
!—————————————————————————-

Script to clip the unnecessary excess portions of an air photo mosaic

Below is a simple EASI script that when used with the MODEL command in PCI will clip the unnecessary excess portions of an air photo mosaic created from Ortho Engine to an irregular buffered shape around a set study area. This was originally created for PCI Geomatica v9.1 but was last tested and working with no problems in PCI Geomatica v10.0 – Just copy the code below into a blank text file and edit as needed.

!——————————————————————————————–

! Irregular_Polygon_Clip [bitmap_clip.eas]

! Ted MacKinnon – tmackinnon.com

! This simple script used with the MODEL command in PCI EASI

! will clip the unnecessary excess portions of an airphoto mosaic

! to an irregular buffered shape around the study area.

!

! The working file ‘working-file.pix’ has the existing

! mosaic image located in the first three channels,

! an existing irregular shaped polygon bitmap and

! three empty 8 bit channels.

!

! %%2 is the bitmap mask of the irregular shape

! %1, %2, %3 are the RGB existing image channels

! %4, %5, %6 will be the new modeled RGB image channels

! the RGB value of 255, 255, 255 will set the background to white

!

! Simply change the file name to use this script with a different

! file and ensure that the channels and segments are setup the same

!——————————————————————————————–

!——————————–

! Set up and run the model

!——————————–

MODEL ON “working-file.pix” OVER dbiw

if %%2 = 1 then

%4 = %1;

%5 = %2;

%6 = %3;

else

%4 = 255;

%5 = 255;

%6 = 255;

endif;

ENDMODEL

!———————————————-

! Export the resultant channels to a new file

!———————————————-

FILI = “working-file.pix

FILO = “mosaic_clipped.tif

DBIW =

DBIC = 4,5,6

DBIB =

DBVS =

DBLUT =

DBPCT =

FTYPE = “TIF

FOPTIONS = “”

RUN FEXPORT

!——————————————————————————————–