97 lines
2.7 KiB
Bash
Executable file
97 lines
2.7 KiB
Bash
Executable file
#! /bin/sh
|
|
# © M E C Swanson 2008
|
|
#script to find the complement of a mangle mask
|
|
#USAGE: find_complement.sh <mask> <complement>
|
|
#EXAMPLE:find_complement.sh holes.pol complement.pol
|
|
#input mask can be pixelized beforehand to a fixed resolution
|
|
#if the mask is complicated, e.g. pixelize -Ps0,8 holes.pol holes_pixelized.pol
|
|
|
|
if [ "$MANGLEBINDIR" = "" ] ; then
|
|
MANGLEBINDIR="../../bin"
|
|
fi
|
|
if [ "$MANGLESCRIPTSDIR" = "" ] ; then
|
|
MANGLESCRIPTSDIR="../../scripts"
|
|
fi
|
|
if [ "$MANGLEDATADIR" = "" ] ; then
|
|
MANGLEDATADIR="../../masks"
|
|
fi
|
|
|
|
mask=$1
|
|
complement=$2
|
|
dres=3
|
|
dscheme="s"
|
|
|
|
#check command line arguments
|
|
if [ "$mask" = "" ] || [ "$complement" = "" ] ; then
|
|
echo >&2 "ERROR: enter the input and output polygon files as command line arguments."
|
|
echo >&2 ""
|
|
echo >&2 "USAGE: find_complement.sh <mask> <complement>"
|
|
echo >&2 "EXAMPLE:find_complement.sh holes.pol complement.pol"
|
|
exit 1
|
|
fi
|
|
|
|
head -n 100 $mask > jmaskhead
|
|
|
|
#grab pixelization info from input files
|
|
awk '/pixelization/{print $0}' < jmaskhead > jpix
|
|
res=`awk '{print substr($2, 1, length($2)-1)}' < jpix`
|
|
scheme=`awk '{print substr($2, length($2))}' < jpix`
|
|
rm jpix jmaskhead
|
|
|
|
#if input file is unpixelized, pixelize it
|
|
#if input file is pixelized to a fixed resolution, use it as is.
|
|
if [ "$res" = "" ]; then
|
|
res=$dres
|
|
scheme=$dscheme
|
|
echo ""
|
|
echo "Pixelizing $1 ..."
|
|
$MANGLEBINDIR/pixelize -P${scheme}0,$res $mask jp || exit
|
|
echo ""
|
|
elif [ "$res" = -1 ] ; then
|
|
res=$dres
|
|
scheme=$dscheme
|
|
echo "WARNING: cannot take the complement of a mask pixelized adaptively."
|
|
echo "Pixelizing your mask using a fixed resolution:"
|
|
echo ""
|
|
echo "Pixelizing $1 ..."
|
|
$MANGLEBINDIR/pixelize -P${scheme}0,$res $mask jp || exit
|
|
echo ""
|
|
else
|
|
cp $mask jp
|
|
fi
|
|
|
|
#check for appropriate allsky file, and generate it if it's not there:
|
|
allsky=$MANGLEDATADIR/allsky/allsky$res$scheme.pol
|
|
if [ ! -e $allsky ] ; then
|
|
$MANGLESCRIPTSDIR/make_allsky.sh $res $scheme
|
|
fi
|
|
|
|
#check if input file is snapped
|
|
snapped=`awk '/snapped/{print $1}' < $mask`
|
|
|
|
#if input file isn't snapped, snap it
|
|
if [ ! "$snapped" = "snapped" ]; then
|
|
echo "Snapping $1 ..."
|
|
$MANGLEBINDIR/snap jp jps || exit
|
|
rm jp
|
|
else
|
|
mv jp jps
|
|
fi
|
|
|
|
#set weight of all polygons in mask to zero
|
|
echo 0 > jw0
|
|
echo "$MANGLEBINDIR/weight -zjw0 $mask jw"
|
|
$MANGLEBINDIR/weight -zjw0 jps jw || exit
|
|
rm jps
|
|
|
|
#balkanize the full sky with the zero-weighted mask to find the complement
|
|
echo "$MANGLEBINDIR/balkanize $allsky jw jb"
|
|
$MANGLEBINDIR/balkanize $allsky jw jb || exit
|
|
rm jw
|
|
|
|
#unify to get rid of zero weight polygons
|
|
echo "$MANGLEBINDIR/unify jb $complement"
|
|
$MANGLEBINDIR/unify jb $complement || exit
|
|
rm jb
|
|
|
|
echo "Complement of $mask written to ${complement}."
|