[GRASS-user] Map Collars (missing attachment)
Hamish
hamish_b at yahoo.com
Wed Apr 1 18:49:49 EDT 2009
> some time ago, Chris wrote:
> > The first issue to tackle is to remove the collars of the NOAA charts.
> > I've searched the archives and there are only two dated posts and both
> > recommend shapefiles. Well there are no shapefiles for the Atlantic or
> > other water bodies so this method cannot work.
Hamish:
> I'm not sure how that's supposed to work, but FWIW you might try the
> NOAA coastline extractor or the v.in.gshhs addon module to get the
> Atlantic coastline as a vector map.
>
> > If anyone has any suggestions or ideas it would be greatly
> > appreciated on how to remove map collars of NOAA charts.
>
> the attached script is probably very far from the fastest way to do it,
> but it works on the test map I tried (NOAA #12200). maybe the salmon
> color needs to be a bit more fuzzy to cover different maps?
> probably some maps have more than single pixel specks to be removed,
> so r.neighbors window size could be upped.
(or make the resolution 2x as coarse, which would speed up processing
as well, at the cost of the edge pixels)
> the idea:
> 1) download RNC maps from NOAA's website
> 2) Convert BSB format to GeoTIFF with gdalwarp
> 3) Import GeoTiff into GRASS
> 4) remove any single pixel specks from the map
> 5) temporarily mask out white, black, salmon colored metacontent which
> occurs in the collars
> 6) zoom to the extent of the color-masked map
> 7) save a copy of the original chart using the smaller bounds to GeoTIFF
> 8) ... tile GeoTIFF as needed for MapServer/WMS or GpsDrive application
> 9) go sailing
....
> -----Inline Attachment Follows-----
hmmm, the shell script attachment seems to have been removed at some point.
Did the listserv settings change? Chris, did you get it via the cc?
cut&pasted: (hopefully yahoo's completely fubar'd mail servers of late
do not randomly line wrap it too badly)
decollar_noaa_charts.sh
-----------------------
r.in.gdal in=./BSB_ROOT/12200/12200_1_merc.tif out=noaa_12200
MAP="noaa_12200"
g.region rast="$MAP"
# check that we are dealing with a paletted map
eval `r.info -t "$MAP"`
if [ "$datatype" != "CELL" ] ; then
echo "ERROR: only categorical maps can be processed"
fi
# find cats in map
CATS=`r.category $MAP`
# find black and white category numbers
unset BLACK WHITE SALMON
for CAT in $CATS ; do
RULE=`r.what.color in="$MAP" value="$CAT"`
echo "$RULE"
COLOR=`echo "$RULE" | cut -f2 -d' '`
if [ "$COLOR" = "0:0:0" ] ; then
BLACK="$CAT"
elif [ "$COLOR" = "255:255:255" ] ; then
WHITE="$CAT"
elif [ "$COLOR" = "219:73:150" ] ; then
SALMON="$CAT"
fi
done
echo "black is $BLACK, white is $WHITE, salmon is $SALMON"
REMAINING=`echo $CATS | tr ' ' '\n' | grep -vw "$BLACK\|$WHITE\|$SALMON"`
#### setup temporary file
TMP="`g.tempfile pid=$$`"
if [ $? -ne 0 ] || [ -z "$TMP" ] ; then
g.message -e "Unable to create temporary files"
#exit 1
fi
echo "$BLACK = NULL" > "$TMP"
echo "$WHITE = NULL" >> "$TMP"
echo "$SALMON = NULL" >> "$TMP"
for CAT in $REMAINING ; do
echo "$CAT = $CAT" >> "$TMP"
done
# remove stray single dots
r.neighbors in="$MAP" out="$MAP.despeckle" method=mode
# make a reclass map, setting black and white to NULL
r.reclass in="$MAP.despeckle" out="$MAP.filtered" rules="$TMP"
g.region zoom="$MAP.filtered"
r.mapcalc "$MAP.cropped = $MAP"
r.mapcalc "$MAP.cropped = $MAP.filtered"
## debug method for finding residuals
#r.mapcalc "$MAP.cover = 1"
#g.region rast="$MAP"
#r.mapcalc "$MAP.residual = if($MAP.cover == 1, null(), $MAP)"
#r.stats -c "$MAP.residual"
## single 6,8 dot
#d.zoom to collar which should be empty
#r.univar $MAP
#r.out.xyz $MAP
#echo "symbol basic/star 20 -72.35262972 38.8881031 black blue" | d.graph -m
#echo "symbol basic/star 20 -74.51749113 39.27423606 black aqua" | d.graph -m
r.out.gdal in="$MAP" out="$MAP_decollared.tif" type=Byte #...
Hamish
More information about the grass-user
mailing list