/* PROCEDURES USED TO DEVELOP GRIDS FOR NJ/NY DRAINAGES
/* AML TO COMBINE MANY INFO DATA FILES INTO A SINGLE DBF FILE FOR USE IN SAS
/* Features derived from ele_m and/or line
coverages of streams (24k in NJ; 100k in NY)
GRID_NAME GRID_DESCRIPTION
stm_24k_cln Cleaned 24k streams (stream = arcid#, non-stream
cells = nodata)
stm2m_lnd0 Cleaned 24k streams (stream = 2, land
= 0) used to gully dem
ele_m_gul2 Elevation grid (dem) with 200 meter
gullies for stream cells
ele_m_fil Gullied elevation grid where
internal drainages are filled
flow_dir_g2m Flow direction grid derived from the filled-gullied
elevation grid
flow_acc_g2m Flow accumulation derived from the filled-gullied
elevation-flow_dir grids
stm_gt350 Stream network grid derived from
the flow_acc grid at a threshhold area > 350 cells
stm_strahlr Strahler stream-order number for each stm_gt350
stream reach
stm_link Unique stream-link number
for each stm_gt350 stream reach
stm_slp_mkm Stream slope (m/km) for each stream-link
reach
RETURN TO CONTENTS
/* Landscape-position and stream-transport
features derived from above grids
GRID_NAME GRID_DESCRIPTION
overland_d_m Flow-length distance (meters), along the hillslope
only, for all cells to a stream
stm_dist_m Flow-length distance (meters), along
the stream only, for all cells to edge of grid
stmd_x_strah Stream-distance grid divided by Strahler stream-order
number
stmd_x_slope Stream-distance grid divided by stream-slope
grid
buf31g Cells within 31
meters of stm_gt350 stream network (buffer=100, non-buffer=nodata)
buf100g Cells within 100 meters
of stm_gt350 stream network (buffer=100, non-buffer=nodata)
buf300g Cells within 300 meters
of stm_gt350 stream network (buffer=100, non-buffer=nodata)
/* Features derived for single-flowpath computations
of topographic wetness index
GRID_NAME GRID_DESCRIPTION
slope_sp single flow path slope,
in degrees, associated with each grid cell
slop2_sp single flow path slope,
zero data set to 0.01 degrees
tanb_sp tangent of slope, converted
degrees to radians
lib_sp ln of 1./tanb
lna_sp ln of single flow
path area accumulation per unit contour = (#cells+1)*900/30
atn_sp topographic wetness
index = ln(a/tanb) = lna_sp + lib_sp
twfg topographic
weighting factor, scaled by (atn_sp-min)/(max-min)=(atn_sp-4.1)/(21.361)
twfg_log log10(twfg + 1.0)
RETURN TO CONTENTS
/* Features derived from land-use related coverages
GRID_NAME GRID_DESCRIPTION
roads1_0 Roads, NJ from NJDOT 1995
DOQs, NY from 1990 census (roads = 1; non-roads = 0)
imp_road Impervious area, associated
with roads only, assumed 10 meter road width, percent
imp_nonroad Impervious area, non-road areas, percent,
regression-based estimate
imp_total Impervious area, roads plus non-roads,
percent
imp_topmodel Impervious area, urban road area and median
commercial/industrial only, percent
lu2_nj73 Land use (1973 NJ GIRAS),
full Anderson 2-digit catagories
lu2_nj73mod Land use (1973 NJ GIRAS adjusted by 1986
ITU urban), full Anderson 2-digit catagories
lu2_njny73 Land use (1973 NJ GIRAS adjusted,
1973 NY GIRAS), full Anderson 2-digit catagories
lu2_su73 Land use (1973 NJ and NY
GIRAS for LINJ SU), full Anderson 2-digit catagories
lu4_nj86 Land use (1986 NJ ITU without
GIRAS for nodata areas), Anderson 4-digit catagories
lu4_miss73 Land use (1986 NJ ITU merged GIRAS
for nodata areas), Anderson 4-digit catagories
lu2_nj86 Land use (1986 NJ ITU),
full Anderson 2-digit catagories
lu2_ny92 Land use (1992 NY GIRAS+MLRC),
full Anderson 2-digit catagories
lu2_nj86ny92 Land use (1986 NJ ITU, 1992 NY GIRAS+MLRC),
full Anderson 2-digit catagories
lu2_86lump Land use (1986 NJ, 1992 NY), lumped
into general Anderson 2-digit catagories
lu2_nj95ny92 Land use (1995 NJ ITU+OSP, 1992 NY GIRAS+MLRC),
full Anderson 2-digit catagories
lu_change95 Land use change from 1986 NJ ITU to 1995
NJ OSP new urban, urban catagories only
lu_in86new95 Land use (1986 NJ ITU plus 1995 NJ OSP), full
Anderson 2-digit catagories
lu2_95lump Land use (1995 NJ, 1992 NY), lumped
into general Anderson 2-digit catagories
lu2b_orig Land use (1986 NJ, 1973 NY),
lumped into general Anderson 2-digit catagories
RETURN TO CONTENTS
/* Features derived from other available
coverages (census, soils, NJPDES)
GRID_NAME GRID_DESCRIPTION
cb_hdens900 Housing density, mean dwelling units per
census block adjusted per cell (900 m2)
cbg_hdens900 Housing density, mean dwelling units per census
block-group adjusted per cell (900m2)
cen_hdlog Housing density, logn of mean
dwelling units per cell (900 m2), merged cb and cbg
cb_hvalu Housing value, $thous, mean
per census block
cbg_hvalu Housing value, $thous, mean per
census block-group
cen_hvlog Housing value, $thous, logn of
mean merged cb and cbg
cb_pdens900 Population density, mean persons per census
block adjusted per cell (900m2)
cbg_pdens900 Population density, mean persons per census
block-group adjusted per cell (900m2)
cen_pdlog Population density, logn of mean
persons per cell (900m2), merged cb and cbg
soil_hdep_in Soil depth, inches, of soil layers above 0.2
inches per hour permeability
soil_hp_inhr Soil permeability, inches per hour, depth-weighted
arithmetic mean of hdep
soil_ap_inhr Soil permeability, inches per hour, depth-weighted
arithmetic mean of soil profile
soil_ep_inhr Soil permeability, inches per hour, depth-weighted
logrithmic mean of soil profile
ptsrcf Point source flow,
mgal per year, gridded from NJPDES point coverage
RETURN TO CONTENTS
/* In order to preserve spatial integrity, the grid spacing
(30-meters) and snapgrid alignment of
/* the NED DEM (UTM NAD83) was used in all the grids
generated in the DG environment.
mape /larc/data/anc/car/njnybnd_u83
setwindow /larc/data/anc/car/njnybnd_u83 /ntstuff/mark/basins/demnj_utm
setcell /ntstuff/mark/basins/demnj_utm
/* Later, moved the entire database to the PC environment
9/99, renamed elevation grid to ele_m.
setwindow d:\grids\ele_m d:\grids\ele_m
setcell d:\grids\ele_m
/* 1st version of DEM was from William Acevedo Nov 1998. /* Superceeded July 1, 1999
/* Set up a grid to condition the elevation grid (create
gullies), where all stream cells have a value of 2
/* and land areas a value of 0 (6-10-99, re-done 10-20-99).
stm2_lnd0 = con(stm_24k_cln gt 0, 2, 0)
RETURN TO CONTENTS
/* Stream travel time might also be differentiated by
adjustng for reach slope. Stream slope is a log
/* skewed distribution between 0 and 273 m/km. The steeper
the slope the shorter the time of travel,
/* so divide distance by slope to make an effectively
shorten the distance for steeper slopes.
sts = con(stm_gt350 eq 1, (stm_gt350 / stm_slp_mkm),
0.)
stmd_x_slope = flowlength(flow_dir_g2m, sts, downstream)
kill sts all
/* Stream travel time might also be differentiated by
adjustng for reach slope and stream order.
/* Did not use stmd_slp_stra below because of high correlation
with stmd_x_stra
/* sxs = con(stm_gt350 eq 1, stm_gt350 / (stm_strahlr
* stm_slp_mkm), 0. )
/* stmd_slp_str = flowlength(flow_dir_g2m, sxs,
downstream)
/* kill sxs all
/* Correlation table indicates that stmd_slp_str is duplicative of stmd_x_slope.
/* Computed single path slope in degrees.
slope_sp = slope(ele_m)
/* Setting single path slope to a minimum of .01 for
the few cells with 0.0 data values.
slop2_sp = con(slope_sp le 0, .01, slope_sp)
/* Computed tangent of slope, div deg converts degrees
to radians.
tanb_sp = tan(slop2_sp div deg)
/* Computed ln of 1/tanb.
lib_sp = ln(1. / tanb_sp)
RETURN TO CONTENTS
mape atn_sp
/* set a max/min of window for even number of cells in
600m grid
/* original Cell Size = 30.000
/* Number of Rows =9000 Number of Columns =4700
/* Xmin = 451648.506 Xmax = 592648.506
/* Ymin = 4308534.323 Ymax = 4578534.323
setwindow 451648.506 4308534.323 592648.506 4578534.323
atn_sp
setcell atn_sp
mean_g = blockmean(atn_new, rectangle, 20, 20)
std_g = blockstd(atn_new, rectangle, 20, 20)
diff_g = atn_sp - mean_g
dif2_g = pow(( diff_g / std_g ), 3.)
kill diff_g all
skew_g = blocksum(dif2_g, rectangle, 20, 20) / 397
kill dif2_g all
msoil_p = blockmean(soil_hp_inhr, rectangle, 20, 20)
msoil_d = blockmean(soil_hdep_in, rectangle, 20, 20)
/* Reset Cell Size = 600m to compute a set of mean values
of block to 600-m cell
/* Grid now is 450 rows x 235 columns.
setcell 600
topmean600 = mean_g
kill mean_g all
topstd600 = std_g
kill std_g all
topskew600 = skew_g
kill skew_g all
/* soils coverages include grid values outside study
area, setmask to exclude
setmask topmean600
soil_p600 = msoil_p
kill msoil_p all
soil_d600 = msoil_d
kill msoil_d all
setcell 30
gridpaint topmean600 # linear # gray
gridpaint soil_d600 # linear # gray
gridpaint soil_p600 # linear # gray
RETURN TO CONTENTS
/* impervious area estimates for topmodel runs
setwindow d:\grids\atn_sp d:\grids\atn_sp
setcell d:\grids\atn_sp
imp_urbroad = con(lu2_nj86ny92 IN {10,11,14,16}, imp_road)
imp_military = con(lu4_nj86 eq 1211, imp_road)
imp_topmodel = merge(imp_urbroad, imp_military, imp12,
imp13, imp15, float(zerogrid_i))
describe imp_topmodel
Minimum Value =
0.000
Maximum Value =
123.524
Mean
=
4.943
Standard Deviation =
15.622
rename imp_topmodel impt
imp_topmodel = con(impt gt 100., 100., impt)
gridpaint imp_topmodel # linear # gray
kill impt all
gridnodatasymbol red
gridpaint imp_topmodel # linear # gray
/* After fix
Minimum Value =
0.000
Maximum Value =
100.000
Mean
=
4.943
Standard Deviation =
15.622
/* compute means of 20x20 cell blocks
mean_imp = blockmean(imp_topmodel , rectangle, 20, 20)
gridpaint mean_imp # linear # gray
/* Reset Cell Size = 600m to compute set mean values of
block to 600-m cell
setcell 600
top_imp600 = mean_imp
gridpaint top_imp600 # linear # gray
kill mean_imp all
setcell ele_m
RETURN TO CONTENTS
items g:\new_itu\orrklu92d.pat
COLUMN ITEM NAME WIDTH OUTPUT TYPE N.DEC
1 AREA 8 18 F 5
9 PERIMETER 8 18 F 5
17 ORRK_LU92D# 4 5 B -
21 ORRK_LU92D-ID 4 5 B -
25 LU2 2 2 I -
items lu73nynj_poly.pat
COLUMN ITEM NAME WIDTH OUTPUT TYPE N.DEC ALTERNATE NAME
1 AREA 4 12 F 3
5 PERIMETER 4 12 F 3
9 LU73NYNJ_POLY# 4 5 B -
13 LU73NYNJ_POLY-ID 4 10 B - ATT
17 LUCODE 2 2 I -
** REDEFINED ITEMS **
17 LUC1 1 1 I -
items f:\ntstuff\mark\basins\new_itu\nj_itu_d.pat
COLUMN ITEM NAME WIDTH OUTPUT TYPE N.DEC ALTERNATE NAME
1 AREA 8 18 F 5
9 PERIMETER 8 18 F 5
17 NJ_ITU_D# 4 5 B -
21 NJ_ITU_D-ID 4 5 B -
25 LAND-USE 4 4 I - LU
29 CLASS 6 6 I -
35 COWARDIN 14 14 C -
49 LABEL 65 65 C -
114 LEVELI 15 15 C -
** REDEFINED ITEMS **
25 LUCODE 1 1 I -
/* LU4 polygon cover is very large coverage so that polygrid
exceeds polygrid file # limit
/* largely because of all the 4 digit land-cover codes
for wetlands/forest types,
/* especially in southern NJ
/* setwindow used to break cover into 5 parts
setwindow * d:\grids\atn_sp
setcell d:\grids\atn_sp
luc4a = polygrid (f:\ntstuff\mark\basins\new_itu\nj_itu_d,
land-use)
setwindow * d:\grids\atn_sp
setcell d:\grids\atn_sp
luc4b = polygrid (f:\ntstuff\mark\basins\new_itu\nj_itu_d,
land-use)
setwindow * d:\grids\atn_sp
setcell d:\grids\atn_sp
luc4c = polygrid (f:\ntstuff\mark\basins\new_itu\nj_itu_d,
land-use)
setwindow * d:\grids\atn_sp
setcell d:\grids\atn_sp
luc4d = polygrid (f:\ntstuff\mark\basins\new_itu\nj_itu_d,
land-use)
setwindow * d:\grids\atn_sp
setcell d:\grids\atn_sp
luc4e = polygrid (f:\ntstuff\mark\basins\new_itu\nj_itu_d,
land-use)
setwindow d:\grids\atn_sp d:\grids\atn_sp
setcell d:\grids\atn_sp
setmask atn_sp
luc4_nj86 = merge (luc4a, luc4b, luc4c, luc4d, luc4e)
setmask off
mape atn_sp
gridnodatasymbol red
gridpaint lu4_nj86 # linear # gray
list lu4_nj86.vat
VALUE COUNT
0 78
1000 14
1100 3775126
/* cleaned up zero values with
lu4b = con (lu4_nj86 lt 99, f:\ntstuff\mark\luc2_g *
100, lu4_nj86 )
kill lu4_nj86 all
rename lu4b lu4_nj86
RETURN TO CONTENTS
/* clean up zero cells in lu2_ny92
lu92 = con (lu2_ny92 eq 0, 53, lu2_ny92 )
RETURN TO CONTENTS
rename luc2_nj86 lu2_nj86
rename luc2_ny92 lu2_ny92
rename luc2_nj73 lu2_nj73
rename luc2_nj73mod lu2_nj73mod
rename luc2b_orig lu2b_orig
rename luc2_njny73 lu2_njny73
rename luc4_nj86 lu4_nj86
rename luc4_miss73 lu4_miss73
/* clean up zero cells in both lu2_nj73 and lu2_njny73)
by making them missing
/* and merging with the original LINJ version of the
giras coverage
RETURN TO CONTENTS
/* &r e:\amls\lu2_grid.aml
grid
disp 9999
mape e:\grids\ele_m
setwindow e:\grids\ele_m e:\grids\ele_m
setcell e:\grids\ele_m
/* create a level 2a Anderson grid, lumped catagories
/* urb_res(11) -- urban residential(10,11), mixed(16),
urb other(17),
/* recreation areas(18), and also
/* transitional areas (75) which are likely developed
now
lu11 = con(lu2_nj86ny92 IN {10,11,16,17,18,75}, 11, lu2_nj86ny92
)
/* com_ind(12) -- urban commercial(12), industrial(13),
transport(14),
/*
ind/com complexes(15)
lu12 = con(lu11 IN {12,13,14,15}, 12, lu11)
kill lu11 all
/* ag_lo(22) -- orchards&etc(22) and ag other(24)
lu22 = con(lu12 IN {22,24}, 22, lu12)
kill lu12 all
/* ag_hi(21) -- cropland&pasture(20,21), feedlots(23)
lu21 = con(lu22 IN {20,21,23}, 21, lu22)
kil lu22 all
/* for_bar(40) -- forest(41-44) and barren(70-74,76)
lu40 = con(lu21 IN {41,42,43,44,70,71,72,73,74,76}, 40,
lu21)
kill lu21 all
/* tot_wat(50) -- water(51-55)
lu50 = con(lu40 IN {51,52,53,54,55}, 50, lu40)
kill lu40 all
/* wetlnd(60) -- marsh (61), wooded(62), and managed
wetlands (80)
lu2_86lump = con(lu50 IN {61,62,80}, 60, lu50)
kill lu50 all
describe lu2_86lump
gridpaint lu2_86lump # linear
q
return
/* create a level 2 Anderson grid, lumped catagories for
NJ 1986+1995 and NY 1992
/* Simply replaced the NJ 1986 data with the new urban
area in the NJOSP 1995 grid
/* of the DOQ derived land-use change since 1986. NY
will be the same 1992 MRLC
/* update of GIRAS 1973.
/* first merge lu_change95 with the lu2_86lump while
recoding luchange2 to lucode95
lu2_nj95ny92 = merge ( con(lu_change95 eq 2, 95),
lu2_86lump )
/* BELOW (june 1999) IS SUPERCEEDED WITH ABOVE
/* created a level 2 Anderson grid, for urban residential
catagories only
/* see /linj/tmdl/luc2a_grid.aml
/* aml to build a lu grid of selected lumped luc2 catagories
/* luc2a_g (deleted to make corrections, replaced with
luc2b_g)
/* luc2b_g grid contains integer values as below for
selected lumped luc2 catagories
/* example (urb_res is the integer 111 in the luc2b_g
grid and is all cells with the
the Anderson 2 category of 1100, 1600, 2400, and 7500
in the ITU cover)
/* urb_res=111 -- urban residential(11), mixed(16) ,
and ag other(24)
/* and also transitional areas (75) which are likely
developed now
/* com_ind=112 -- urban commercial(12), industrial(13),
transport(14), ind/com complexes(15)
/* ag_lo=122 -- orchards&etc(22) and recreation areas(18)
& urb other(17)
/* ag_hi=121 -- cropland&pasture(21), feedlots(23)
/* undevel=143 -- forest(41-44), wetlands(61-62), and
barren(71-74)
/* tot_wat=150 -- water(51-55)
grid
disp 9999
mape /larc/data/anc/dem/demnj_u83m
setwindow /larc/data/anc/dem/demnj_u83m /larc/data/anc/dem/demnj_u83m
setcell /larc/data/anc/dem/demnj_u83m
/* create a level 2a Anderson grid, lumped catagories
/* urb_res(111) -- urban residential(10,11), mixed(16),
and ag other(24)
/* and also transitional areas (75) which are likely
developed now
luc11_g = con(luc2_g IN {10,11,16,24,75}, 111, luc2_g)
/* com_ind(112) -- urban commercial(12), industrial(13),
transport(14), ind/com
complexes(15)
luc12_g = con(luc11_g IN {12,13,14,15}, 112, luc11_g)
kill luc11_g all
/* ag_lo(122) -- orchards&etc(22) and recreation
areas(18) & urb other(17
luc22_g = con(luc12_g IN {17,18,22}, 122, luc12_g)
kill luc12_g all
/* ag_hi(121) -- cropland&pasture(20,21), feedlots(23)
luc21_g = con(luc22_g IN {20,21,23}, 121, luc22_g)
kill luc22_g all
/* undevel(143) -- forest(41-44), wetlands(61-62), and
barren(70-74,76)
luc43_g = con(luc21_g IN {41,42,43,44,61,62,70,71,72,73,74,76},
143, luc21_g)
kill luc21_g all
/* tot_wat(150) -- water(51-55)
luc2a_g = con(luc43_g IN {51,52,53,54,55}, 150, luc43_g)
kill luc43_g all
/* Jack Pflaumer imported the county coverages, appended,
and projected to UTM (NAD83)
/* Jack converted only the new-urban polygons to a grid
(July 20, 1999)
/* /ntstuff/mark/basins/new_urban/nj_newurb_g
/* rename nj_newurb_g
lu_change95
/* M. Ayers made a grid of cells in the 1986 luc2b_g
that subsequently
/* where changed to newurban in the 1996 nj_newurb_g
lu_in86new95 = con(/ntstuff/mark/basins/new_urban/nj_newurb_g
eq 2, luc2b_g)
/* using histogram to get an estimateof total # cells
with change = 702,000
/* undeveloped = 437,000 or 62% were previously undeveloped
/* ag_hi+ag_lo = 230,000+15,000 = 245,000 or 35% were
previously agriculture
/* urban = 20,000 or 3% were previously urban ??
/* A grid of cells in 1986 luc2_g, category 75 or transitional
areas, that
/* subsequently where changed to new urban in 1996 was
made to see how these
/* transitional areas were treated
lu_chng75_g = con(luc2_g eq 75, /ntstuff/mark/basins/new_urban/nj_newurb_g)
/* very few cells where converted to new urban, probably
because they were
/* treated as developed in the 1986 coverage (like we
have also done in luc2b_g)
kill lu_chng75_g all /* did not keep this grid
RETURN TO CONTENTS
/* generated grids for hdens, pdens, hvalu for census
block groups
cbg_hdens = polygrid( g:\esri_census\nynj_cenblk, group_hdens)
cbg_pdens = polygrid( g:\esri_census\nynj_cenblk, group_pdens)
cbg_hvalu = polygrid( g:\esri_census\nynj_cenblk, group_mvalu)
/* convert houses/m2 to houses/900m2 (per grid cell basis)
cbg_hdens900 = cbg_hdens * 900.
kill cbg_hdens all
/* truncate outlier values higher than 70. in h_dens
hd = con( cbg_hdens900 le 70., cbg_hdens900, 70.)
kill cbg_hdens900 all
rename hd cbg_hdens900
/* convert people/m2 to people/900m2 (per grid cell basis)
cbg_pdens900 = cbg_pdens * 900.
kill cbg_pdens all
/* truncate outlier values higher than 1000. in p_dens
pd = con( cbg_pdens900 le 1000., cbg_pdens900, 1000.)
kill cbg_pdens900 all
rename pd cbg_pdens900
/* truncate zero values in h_valu
hv = con( cbg_hvalu gt 0., cbg_hvalu)
kill cbg_hvalu all
rename hv cbg_hvalu
/* generated grids for hdens, pdens, hvalu for census
blocks
cb_hdens = polygrid( g:\esri_census\nynj_cenblk, block_hdens)
cb_pdens = polygrid( g:\esri_census\nynj_cenblk, block_pdens)
cb_hvalu = polygrid( g:\esri_census\nynj_cenblk, block_mvalu)
/* convert houses/m2 to houses/900m2 (per grid cell basis)
cb_hdens900 = cb_hdens * 900.
kill cb_hdens all
/* truncate outlier values higher than 70. in h_dens
rename cb_hdens900 hd2
cb_hdens900 = con(hd2 le 70., hd2 , 70.)
kill hd2 all
/* convert people/m2 to people/900m2 (per grid cell basis)
cb_pdens900 = cb_pdens * 900.
kill cb_pdens all
/* truncate outlier values higher than 1000. in p_dens
rename cb_pdens900 pd2
cb_pdens900 = con(pd2 le 1000., pd2 , 1000.)
kill pd2 all
/* truncate zero values in h_valu
rename cb_hvalu hv2
cb_hvalu = con( hv2 gt 0., hv2 )
kill hv2 all
/* convert hdens to log and compute non-road impervious
area
cb_hdlog = ln(cb_hdens900)
cbg_hdlog = ln(cbg_hdens900)
cen_hdlog = merge(cb_hdlog, cbg_hdlog, float(zerogrid_i))
imp_cen = 23.0 + (5.72 * cen_hdlog)
/* convert pdens to log
cb_pdlog = ln(cb_pdens900)
cbg_pdlog = ln(cbg_pdens900)
cen_pdlog = merge(cb_pdlog, cbg_pdlog, float(zerogrid_i))
/* convert hvalu to log
cb_hvlog = ln(cb_hvalu)
cbg_hvlog = ln(cbg_hvalu)
cen_hvlog = merge(cb_hvlog, cbg_hvlog, float(zerogrid_i))
gridnodatasymbol red
gridpaint cen_hvlog # linear # gray
cb_pdlog = ln(cb_pdens900)
cbg_pdlog = ln(cbg_pdens900)
cen_pdlog = merge(cb_pdlog, cbg_pdlog, float(zerogrid_i))
gridpaint cen_pdlog # linear # gray
kill cb_hvlog all
kill cbg_hvlog all
kill cb_pdlog all
kill cbg_pdlog all
RETURN TO CONTENTS
/* need to correct pop_den in census blocks to urb resid
polys and
/* then proceed as below
/* original steps in pop_den grid produced in albers83,
redone from poly above
/* from census block files for NJ and NY(Orange-Rockland)
in /work2/doq/
/* nj_cenblk and or_cenblk were copied to /ntstuff/mark
/* Leon generated the variable POP_PER_900M2 (cell area=900M2)
in the poly coverages
/* this is the people per cell area for URBAN LAND ONLY
within each cenblk polygon
/* in INFO, alter the pop_per_900m2 to pop_900m2 for
or_cenblk, then combine covers
/* union nj_cenblk or_cenblk njny_cenblk 0.01
/* because union keeps values for the 1st cover only
when a variable is in both
/* then, in INFO >SELECT NJNY_CENBLK.PAT
/* ENTER COMMAND >RES POP_900M2 GT 0 /* cells with pop
data for NY
/* ENTER COMMAND >CALC POP_PER_900M2 = POP_900M2 /*
/* Arc: project cover njny_cenblk njnycen_a83 /linj/tmdl/utm27_alb83.prj
/* Arc: build njnycen_a83 poly
/* Usage: (*) POLYGRID(<cover>,{item},{lookup_table},{weight_table},{cellsize})
/* Grid: pop900m2_g = polygrid(njnycen_a83, pop_per_900m2,
#, #, 30)
/* Converting polygons from NJNYCEN_A83 to grid POP900M2_G
/* since pop/cell was based on urban area, grid needs
to be corrected
/* only cells that are urban should have a pop900 value
/* see stats below to compare grid versus point cover
of census data
/* Leon indicated some polys/cells outside of urban areas
have high values
/* correct grid for urban areas only
/* Grid: pop900urb_g = con(urb1_g eq 1, pop900m2_g)
/* this grid agrees well with the point coverage of population
for NJNY
Arc: frequency
Usage: FREQUENCY <in_info_file> <out_info_file>
{case_item}
Arc: statistics
Usage: STATISTICS <info_file> <out_info_file> {case_item}
Arc: statistics njnycen_a83.pat njnycen.stat
**************************************************************
* Entering Statistical Expression Input Mode *
**************************************************************
* Multiple statistical summary expressions may be input
in *
* any order. Expressions take the form: *
* SUM <item> {weight_item | weight_value} *
* MEAN <item> {weight_item | weight_value} *
* MINIMUM <item> {weight_item | weight_value} *
* MAXIMUM <item> {weight_item | weight_value} *
* STANDARDDEVIATION <item> *
* Enter END or <RETURN> to end expression
**************************************************************
Statistics: sum pop90
Statistics: end
Arc: list njnycen.stat
Record FREQUENCY SUM-POP90
1 12460 13806705.000000
/* this value is wrong because .pat includes duplicate
polys (land and water)
/* used below instead
Grid: statistics /larc/data/anc/civ/nj_pop90 point #
njnycen3.stat
Enter statistical expressions. Type END or blank line
to end.
Statistics: sum pop90
Statistics: end
liGrid: st njnycen3.stat
Record FREQUENCY SUM-POP90
1 14656 7730188.000000
/* this value is correct for point cover estimate POP
w/o NY
/* THEN computed grid pop estimates
Grid: pop.stats = zonalstats(urb1_g, pop900urb_g, sum)
Percentage of Cells Processed: 100%
Grid: list pop.stats
Record VALUE COUNT SUM
1 1 5963633 **********
Grid: info
ENTER USER NAME>ARC
ENTER COMMAND >SELECT POP.STATS
1 RECORD(S) SELECTED
ENTER COMMAND >ALTER SUM
9 SUM 4 10 F 3 4 - - - - - - -
ITEM NAME>
ITEM OUTPUT WIDTH>12
ITEM TYPE>
ITEM DECIMAL PLACES>0
ITEM PROT. LEVEL>
ALTERNATE ITEM NAME >
ENTER KEY LEVEL>
ENTER INDEX NUMBER>
9 SUM 4 12 F 0 4 - - - - - - -
ENTER COMMAND >LIST
$RECNO VALUE COUNT SUM of pop per cell
1 1 5,963,633 7,939,440
/* this value is correct for grid cover estimate POP
w/ NJNY
/* urban area was checked for both and got
/* gridded urban area = 5367269000 M2 in pop900urb_g
above (5,963,633*900)
/* polygon urban area = 5367524425 M2 in njitu_ny73 below
/*
statistics njitu_ny73 poly luc1 njnycen5.stat
Enter statistical expressions. Type END or blank line
to end.
Statistics: sum area
Statistics: end
Grid: list njnycen5.stat
Record LUC1 FREQUENCY SUM-AREA
1 1 52267 5367524425.156361
2 4 78364 8495676032.402261
3 2 16022 3376215736.717033
4 5 16973 974346207.134998
5 6 22847 1988899641.662153
6 0 1908 21682142.500700
7 7 3423 271943537.213452
RETURN TO CONTENTS
/* create a grid of roads1_0 intersected with landuse
luc2b_g
road_lu_g = njnyrds1_0g * luc2b_g
/* in arc, intersect njnyroads_u83 with rd_lu_poly to
create rd_lu_intr
intersect njnyroads_u83 rd_lu_poly rd_lu_intr line 7
RETURN TO CONTENTS
/* set up to add road_imperv to the rd_lu_poly.pat
additem rd_lu_poly.pat rd_lu_poly.pat road_imperv 8 8
f 2
RETURN TO CONTENTS
frequency RD_LU_POLY.PAT rd_lu_imp.sum
Enter Frequency item names GRID-CODE
Enter Summary item names ROAD_IMPERV
list rd_lu_imp.sum
Record CASE# FREQUENCY GRID-CODE ROAD_IMPERV AVG
1 1 75 -9999 91.420942 1.21
2 2 ******* 0 159293.369997 --
3 3 574 101 16324.759929 28.4
4 4 87942 111 2230437.272554 25.4
5 5 39356 112 1031867.584489 26.2
6 6 48816 121 1174536.547502 24.0
7 7 28379 122 710909.261319 25.1
8 8 97163 143 2274767.076130 23.4
9 9 5272 150 103175.262849 19.6
Record CASE# FREQUENCY GRID-CODE AREA
1 1 75 -9999 ******************
2 2 ******* 0 17785005296.000004
3 3 574 101 2285100.000000
4 4 87942 111 1347543000.000000
5 5 39356 112 389214000.000000
6 6 48816 121 226835100.000000
7 7 28379 122 100433700.000000
8 8 97163 143 617416196.000000
9 9 5272 150 11674800.000000
RETURN TO CONTENTS
/* calculate road_length per grid cell is a function of
the road_imperv
/* calculate road_length per grid cell = road_imp_g *
0.9
/* road density can then be determined for any drainage
area (sum length/d.a.)
/* or for any zonal grid by zonalstats(zone_grid, sum)
/* and can be distance weighted to stream or to basin
outlet as well
/* create a grid of roads = 1 and other = 0
imp_road_g = con( njroad2_g gt 0, 1, 0)
/* run statistics on area of roads ratio to area of land
use zones in luc2a_g
imp_road.dat = zonalstats(luc2a_g, imp_road_g)
SELECT IMP_ROAD.DAT THE MEAN IS THE PERCENT OF CELLS
IN ROADS
$RECNO VALUE COUNT MIN MAX MEAN
1 0 23,184 0 1 0.109
2 10 14 0 1 0.143
3 20 8 0 1 0.125
4 70 588 0 1 0.078
5 76 24,797 0 1 0.108
6 111 4,116,610 0 1 0.354 urb_res
7 112 1,391,221 0 1 0.305 com_ind
8 121 3,444,106 0 1 0.073 ag_hi
9 122 822,731 0 1 0.134 ag_lo
10 143 11,860,976 0 1 0.056 undevel
11 150 1,071,773 0 1 0.011 tot_wat
/* run statistics on area of roads ratio to area of land
use zones in luc2_g
imp_road2.dat = zonalstats(luc2_g, imp_road_g)
SELECT IMP_ROAD2.DAT THE MEAN IS THE PERCENT OF CELLS
IN ROADS
$RECNO VALUE COUNT MIN MAX MEAN
1 0 23,184 0 1 0.109
2 10 14 0 1 0.143
3 11 3,979,702 0 1 0.358
4 12 667,262 0 1 0.291
5 13 352,562 0 1 0.186
6 14 360,269 0 1 0.451
7 15 11,128 0 1 0.245
8 16 8,755 0 1 0.538
9 17 256,105 0 1 0.174
10 18 324,020 0 1 0.117
11 20 8 0 1 0.125
12 21 3,439,057 0 1 0.072
13 22 242,606 0 1 0.115
14 23 5,049 0 1 0.101
15 24 65,964 0 1 0.120
16 41 4,563,992 0 1 0.054
17 42 2,375,298 0 1 0.072
18 43 1,080,368 0 1 0.066
19 44 1,413,494 0 1 0.079
20 51 193,324 0 1 0.026
21 52 53,542 0 1 0.016
22 53 282,147 0 1 0.014
23 54 540,459 0 1 0.004
24 55 2,301 0 1 0.003
25 61 911,991 0 1 0.012
26 62 1,301,712 0 1 0.031
27 70 588 0 1 0.078
28 71 20,481 0 1 0.069
29 72 505 0 1 0.093
30 73 154,273 0 1 0.055
31 74 38,862 0 1 0.064
32 75 62,189 0 1 0.289
33 76 24,797 0 1 0.108
RETURN TO CONTENTS
laycomp.f - FORTRAN program to composite the representative
layer
values from different components into one value for each
map units. The compositing is based on the item comppct
from the comp info file. Inclusions identified in the
info file inclusn are not used in this compositing. The
following is an example of the procedure used.
eperm = (eperm1*comppct1 + eperm2*comppct2)/(comppct1
+ comppct2)
The resultant INFO file from laycalc2 and laycomp has
these items
COLUMN ITEM NAME WIDTH OUTPUT TYPE N.DEC
1 SOIL-ID 5 5 C -
6 NSEQ 4 4 I -
10 P04 8 8 F 1
18 P10 8 8 F 1
26 P40 8 8 F 1
34 P200 8 8 F 1
42 CLAY 8 8 F 1
50 BULK_DENS 8 8 F 2
58 ORGAN_MAT 8 8 F 2
66 CAT_EX_CAP 8 8 F 1
74 APERM 8 8 F 2
82 EPERM 8 8 F 2
90 HPERM 8 8 F 2
98 HDEPTH 8 8 F 1
106 PTHCK 8 8 F 1
Coverage SOILS_24K
This coverage was constructed by appending the individual
coverages
from the state ITU CD. This coverage was then cleaned
to recreate the
polygon topology. There are some problems with counties
not lining up
exactly which created some sliver polygons
RETURN TO CONTENTS
gridpaint hperm # linear # gray
gridpaint hdepth # linear # gray
kill j_hperm all
kill j_aperm all
kill j_eperm all
kill j_hdepth all
kill r_hperm all
kill r_aperm all
kill r_eperm all
kill r_hdepth all
kill n_hperm all
kill n_aperm all
kill n_eperm all
kill n_hdepth all
RETURN TO CONTENTS
/* in ARC, join items from the info file /work2/soils/layer.rep,
that Leon calculated (7/99)
/* eperm is harmonic mean of permeability in the NRCS
soil profiles computed by
/* eperm = tot_thick / sum(layer_thick / layer perm)
/* aperm is the arithmetic mean permeability of all layers
computed by
/* aperm = sum(layer_thick * layer perm) / tot_thick
/* hdepth is the thickness of the top layers of the soil
profile that
/* have an eperm less than .2 in/hr
/* hperm is the arithmetic mean perm of the hydrologically
active layers in hdepth
joinitem soils_24k.pat /work2/soils/layer.rep soils_24k.pat
soil-id alt_cou ordered
/* in grid, create 2 grids of each of these permeability
estimates
/* soilep_g is the harmonic mean, which is skewed closer
to the lowest and probably
/* limiting permeability in the vertical a proxy for
recharge??
/* soilap_g is the arithmetic mean, which is the layer
thickness weighted average and
/* probably a good approximation of the horizontal permeability
/* Dave Wolock uses this to compute a watershed average
of the same for TOPMODEL
/* Dave also assumes a soil depth of 1 meter
mape ele_m
setwindow ele_m ele_m
setcell ele_m
soilep_g = polygrid(soils_24k, eperm, #, #, 30)
soilap_g = polygrid(soils_24k, aperm, #, #, 30)
/* correlation soilep_g soilap_g
/* Correlation Coefficient (r): 0.942 between the 2 permeability
values
RETURN TO CONTENTS
/* create mask of nonrd_imp just in residential LU for
3 ESRI watersheds
setmask lu_resg
mask3w = imp_nr3w
setmask off
gridnodatasymbol red
gridpaint imp_nr3w # linear # gray
gridpaint mask3w # linear # gray
gridpaint hdl # linear # gray
/* regressions of road density, housing density/value,
and non_rd_imp area
correlation mask3w h_dens
r = .16
correlation mask3w p_dens
r = .08
correlation mask3w h_valu
r = -.14
correlation mask3w hdlog
r = .39
correlation mask3w pdlog
r = .35
correlation mask3w hvlog
r = -.14
correlation hdlog h_valu
r = -.25
correlation hdlog pdlog
r = .97
correlation hdlog hvlog
r = -.24
correlation mask3w rd_dens3w
r = .04
correlation mask3w rdlog
r = .15
correlation hdlog rdlog
r = .41
clear
scattergram hdlog rd_dens3w 10 autoscale
scattergram hdlog pdlog 10 autoscale
scattergram mask3w pdlog 10 autoscale
scattergram mask3w hdlog 10 autoscale
scattergram mask3w h_valu 10 autoscale
scattergram hdlog h_valu 10 autoscale
scattergram h_dens h_valu 10 autoscale
clear
histogram rd_dens3w # 100
histogram h_dens # 100
histogram p_dens # 100
histogram h_valu # 100
reg9a = sample (mask3w, hdlog, rdlog)
regression reg9a linear brief
coef # coef
0 10.830
1 6.560
2 -2.785
RMS Error = 7.749
Chi-Square = 36106252.786
r = .47
imp_nrw3hr = 10.8 + (6.56 * hdlog) - (2.79 * rdlog)
clear
scattergram mask3w imp_nrw3hr 10 autoscale
correlation mask3w imp_nrw3hr
kill imp_nrw3hr all
reg3a = sample (mask3w, hdlog, pdlog)
regression reg3a linear brief
coef # coef
0 28.812
1 11.181
2 -5.782
RMS Error = 8.383
Chi-Square = 43243535.002
r = .47
imp_nrw3hp = 28.8 + (11.2 * hdlog) - (5.78 * pdlog)
scattergram mask3w imp_nrw3hp 10 autoscale
correlation mask3w imp_nrw3hp
kill imp_nrw3hp all
reg6a = sample (mask3w, pdlog)
regression reg6a linear brief
coef # coef
0 17.257
1 5.344
RMS Error = 8.800
Chi-Square = 47668465.146
r = .35
imp_nrw3p = 17.3 + (5.34 * pdlog)
correlation mask3w imp_nrw3p
reg2a = sample (mask3w, hdlog)
regression reg2a linear brief
coef # coef
0 23.008
1 5.717
RMS Error = 8.485
Chi-Square = 44330170.192
r = .39
imp_nrw3h = 23.0 + (5.72 * hdlog)
scattergram mask3w imp_nrw3h 10 autoscale
correlation mask3w imp_nrw3h
kill imp_nrw3h all
reg7a = sample (mask3w, hdlog, hvlog)
regression reg7a linear brief
coef # coef
0 29.161
1 5.199
2 -1.226
RMS Error = 8.116
Chi-Square = 40001455.827
r = .37
imp_nrw3hv = 29.2 + (5.2 * hdlog) - (1.23 * hvlog)
correlation mask3w imp_nrw3hv
scattergram mask3w imp_nrw3hv 10 autoscale
reg8a = sample (mask3w, hdlog, h_valu)
regression reg8a linear brief
coef # coef
0 23.587
1 5.258
2 -0.004
RMS Error = 8.124
Chi-Square = 40085967.851
r = .37
imp_nrw3hvu = 23.6 + (5.26 * hdlog) - (0.004 * h_valu)
correlation mask3w imp_nrw3hvu
clear
scattergram mask3w imp_nrw3hvu 10 autoscale
kill imp_nrw3hvu all
reg9a = sample (mask3w, pdlog, hvlog)
regression reg9a linear brief
coef # coef
0 27.395
1 4.739
2 -1.864
RMS Error = 8.342
Chi-Square = 42260141.383
r = .34
imp_nrw3pv = 27.4 + (4.74 * pdlog) - (1.86 * hvlog)
correlation mask3w imp_nrw3pv
clear
scattergram mask3w imp_nrw3pv 10 autoscale
kill imp_nrw3pv all
/* regression models with all 3 watersheds
r = .45 imp_nrw3h = 23.0 + (5.72 * hdlog)
r = .37 imp_nrw3hv = 29.2 + (5.2 * hdlog) - (1.23 * hvlog)
r = .37 imp_nrw3hvu = 23.6 + (5.26 * hdlog) - (0.004
* h_valu)
r = .47 imp_nrw3hr = 10.8 + (6.56 * hdlog) - (2.79 *
rdlog)
r = .35 imp_nrw3p = 17.3 + (5.34 * pdlog)
r = .47 ** imp_nrw3hp = 28.8 + (11.2 * hdlog) - (5.78
* pdlog)
/* ** hdlog and pdlog autocorrelate = .97
/* w19 data results
r = .53 imp_nrln = 23.7 + (6.93 * hdlog)
r = .53 imp_nrh2 = 21.6 + (6.19 * hdlog) + (1.07 * pdens)
r = .53 imp_nr19 = 21.9 + (6.14 * hdlog) - (.002 * h_valu)
+ (1.04 * p_dens)
r = .47 imp_nrallb = 15.8 + (4.78 * h_dens)
r = .38 imp_nrall = 14.1 + (152 * rd_dens) + (4.56 *
h_dens)
/* w06 data results
r = .27 imp_nr06 = 21.9 + (7.14 * hdlog)
/* hdlog produces a very similar model in the 3 seperate
cases with a reduced r
/* (increased scatter) when all 3 watershed data are
combined. The basic pattern
/* remains apparent in the data, there are simply more
outliers/scatter. Therefore,
/* use this model- imp_nonrd_est = 23.0 + (5.72 * hdlog)
z_impnr = zonalstats(lu86_iall, imp_nr3w, mean)
list z_impnr
VALUE COUNT AREA MEAN
0 506 455400.0000 -5.5943
1100 4316 3884400.0000 23.1924
1110 87857 ************ 37.5418
1120 404846 ************ 19.6669
1130 145352 ************ 13.7995
1140 88042 ************ 9.1733
1150 83 74700.0000 25.9979
1200 115997 ************ 70.4473
1211 11004 9903600.0000 33.0861
1300 71505 ************ 74.0020
1400 49934 ************ 33.5963
1461 3794 3414600.0000 0.3727
1500 681 612900.0000 79.8455
1600 1652 1486800.0000 53.4578
1700 89015 ************ 1.9511
1750 2142 1927800.0000 -0.4381
1800 59276 ************ 11.5050
1804 15399 ************ 7.2842
1850 1531 1377900.0000 1.5745
2100 165226 ************ 1.3684
2140 62804 ************ -0.5012
2200 20927 ************ 2.2281
2260 340 306000.0000 -11.2136
2300 214 192600.0000 36.1219
2400 3595 3235500.0000 20.1571
4100 28721 ************ 21.6743
4110 27240 ************ -2.1550
4120 365447 ************ -1.2449
4200 126093 ************ -2.3309
4210 35373 ************ -3.3945
4220 99618 ************ -3.0065
4230 3611 3249900.0000 -2.8555
4310 1748 1573200.0000 13.1152
4311 1569 1412100.0000 -7.9049
4312 11676 ************ -1.9132
4320 2559 2303100.0000 16.8854
4321 2701 2430900.0000 -3.8080
4322 10838 9754200.0000 -1.6222
4400 48516 ************ 3.3050
4410 18486 ************ -1.9709
4420 32562 ************ -2.5095
4430 10186 9167400.0000 -1.5261
4440 9661 8694900.0000 -1.4871
5100 5832 5248800.0000 -0.2656
5200 7205 6484500.0000 -0.1379
5300 44387 ************ -0.1858
5400 62265 ************ -0.3388
5420 9 8100.0000 0.0000
6110 14785 ************ 0.0084
6120 4860 4374000.0000 -0.0202
6210 254893 ************ 0.3822
6220 30175 ************ -0.9984
6221 15084 ************ -0.2819
6231 57429 ************ 0.3131
6232 2499 2249100.0000 -2.1676
6233 2541 2286900.0000 -0.6187
6234 1807 1626300.0000 -0.9014
6240 44572 ************ -0.0346
6251 16566 ************ -0.5284
6252 29264 ************ -0.7871
7200 330 297000.0000 -0.6735
7300 8637 7773300.0000 1.3593
7400 8170 7353000.0000 4.0828
7430 6713 6041700.0000 6.6443
7500 10612 9550800.0000 30.8871
7600 2527 2274300.0000 2.2681
8000 183 164700.0000 21.5107
1100 4316 3884400.0000 23.1924
1110 87857 ************ 37.5418
1120 404846 ************ 19.6669
1130 145352 ************ 13.7995
1140 88042 ************ 9.1733
1150 83 74700.0000 25.9979
1200 115997 ************ 70.4473 comm
1211 11004 9903600.0000 33.0861 military
1300 71505 ************ 74.0020 indust
1400 49934 ************ 33.5963 trans/util
1500 681 612900.0000 79.8455 ind/com complexes
1600 1652 1486800.0000 53.4578 mix urban
1700 89015 ************ 1.9511 other urban
1800 59276 ************ 11.5050 rec land
2300 214 192600.0000 36.1219 confined feeding ag
2400 3595 3235500.0000 20.1571 other ag
4100 28721 ************ 21.6743
4310 1748 1573200.0000 13.1152
4320 2559 2303100.0000 16.8854
7500 10612 9550800.0000 30.8871 transitional (assumed
urb-res)
8000 183 164700.0000 21.5107
/* based on the means of the 3 ESRI watershed covers,
use the following
/* landuse_series assigned_non-road_IA%
/* 1100 use non-road equation with hdlog
/* 1200 use 70.
/* 1300 use 74.
/* 1400 use 33.
/* 1500 use 80.
/* 1600 use non-road equation
/* 1700-1800 use roads only
/* 2300 36.
/* 2400 20.
/* 7500 use non-road equation
/* 8000 21.
/* all others use roads only
/* create luc2b equivalent imp_area
setwindow d:\grids\atn_sp d:\grids\atn_sp
setcell d:\grids\atn_sp
cb_hdlog = ln(cb_hdens900)
cbg_hdlog = ln(cbg_hdens900)
cen_hdlog = merge(cb_hdlog, cbg_hdlog, float(zerogrid_i))
imp_cen = 23.0 + (5.72 * cen_hdlog)
gridnodatasymbol red
gridpaint imp_cen linear # gray
RETURN TO CONTENTS
imp_com_ind = merge(imp_military, imp12, imp13, imp14, imp15, imp17, imp80)
imp_nonroad = merge(imp11, imp_com_ind, imp23, imp24,
float(zerogrid_i))
gridnodatasymbol red
gridpaint cb_hdlog # linear # gray
gridpaint imp_nr_lu2 # linear # gray
/* then overlay imp_road with imp_lu2 to get combined
total imp area grid
imp_total = imp_road + ( (imp_nonroad / 100.) * (100.
- imp_road) )
/* The imp_topmodel is more conservative an estimate
of impervious than imp_total.
/* Imp-topmodel is more an attempt to estimate the effective
impervious area.
/* Imp_total is just that, an attemt to estimate the
spatial proximaty of total impervious area.
/* Both can be tested for relevance in the regression
analyses to follow.
describe imp_nonroad
Minimum Value =
-9.069
Maximum Value =
93.666
Mean
=
6.702
Standard Deviation =
15.723
/* Negative numbers are desired in non-road to counter
balance road impervious when summed.
/* Impervious>100 that resulted from road area calculation
need to be fixed, after the sum.
describe imp_road
Minimum Value =
0.000
Maximum Value =
123.787
Mean
=
1.975
Standard Deviation =
7.330
describe imp_total
Minimum Value =
-9.069
Maximum Value =
123.787
Mean
=
9.604
Standard Deviation =
18.778
/* Negative numbers and imp>100 that resulted from the
summation of imp_total need to be fixed.
rename imp_total impt
impt0 = con(impt gt 0., impt, 0.)
imp_total = con(impt0 gt 100., 100., impt0)
gridpaint imp_total # linear # gray
kill impt all
kill impt0 all
/* After fix
describe imp_total
Minimum Value = &n