ATTRIBUTES
The .pat (point attribute table) file contains references to [interview] form number, [form] page number and point id number. Form and point id number were combined to form a unique ID. The references to form and page number were designed to facilitate reference back to the appropriate forms during the data checking process.
There are three lookup tables: one to identify the river; one to identify the barriers and fishways; and one to identify the runs and spawning habitats. There is a one to many relationship between the data points and the beginning/ending points of runs and spawning habitats. This will require the use of the NEXT command for INFO only queries or Cursors in ARCEDIT or ARCPLOT. See sample code at the end of this documentation.
Items in the ANADFISH.PAT
| FORM |
# of form on which original data written down |
| PAGE |
page # of form |
| PTID |
# on form and on markup map which identifies a feature |
| COMMENTS |
comment on feature |
| ANADID |
contatenation of FORM and PTID to produce a unique coverage id which is used to relate points in the coverage to records in the the .luts |
Note: underlined items below have code definitions included in a later section.
Items in the ANADRIV.LUT
| FORM |
# of form on which original data written down |
| RIVPAGE |
page # on form on which data for particular river begins |
| RIVPTID |
# on form and on markup map which identifies the beginning of a river |
| CLASS |
# defines where river flows into {(1) bay or ocean; (2) into 1; (3) into 2} |
| NAME |
name of river |
| ALIAS |
other name of river |
| ISCOMMENT |
yes or no, simplifies reselect |
| COMMENTS |
|
| ANADRIVID |
concatenation of FORM and RIVPTID to produce a unique id which is used to relate to the .pat or .luts |
Table relate note:
To identify a river with any point, relate ANADID from the .PAT to ANADRIVID in the ANADRIV.LUT
Items in the ANADRUN.LUT
| FORM |
# of form on which original data written down |
| RIVPAGE |
page # on form on which data for particular river associated with a run begins |
| RIVPTID |
# on form and on markup map which identifies a feature |
| RUNPAGE |
page # on form on which data for particular EVENTTYPE begins |
| BEGPTID |
# on form and PTID on markup map which marks beginning of EVENTTYPE |
| ENDPTID |
# on form and PTID on markup map which marks ending of EVENTTYPE |
| SPECIES |
species of fish (separate records maintained for each species, even if run is the same) |
| EVENTTYPE |
Run or Spawning |
| STATUS1 |
existing or historical |
| STATUS2 |
common or rare |
| STATUS3 |
confirmed or unconfirmed |
| ISCOMMENT |
yes or no, comments are rare, useful for finding them. |
| COMMENTS |
|
| ANADRIVID |
concatenation of FORM and RIVPTID to produce a unique coverage id which is used to relate to the .pat or luts |
| ANADBGID |
concatenation of FORM and BEGPTID to produce a unique coverage id which is used to relate to the .pat to identify the beginning of an EVENTTYPE |
| ANADEDID |
concatentation of FORM and ENDPTID to produce a unique coverage id which is used to relate to the .pat to identify the end of an EVENTTYPE |
Table relate note:
To identify the beginning of an EVENTTYPE, relate ANADID from the .PAT to ANADBGID in the ANADRUN.LUT
To identify the end of an EVENTTYPE, relate ANADID from the .PAT to ANADEDID in the ANADRUN.LUT
Items in the ANADBAR.LUT
| FORM |
# of form on which original data written down |
| RIVPAGE |
page # on form on which data for particular river containing barrier begins |
| RIVPTID |
# on form and on markup map which identifies a feature |
| BARPAGE |
page # on form on which data for a particular barrier is found |
| BARPTID |
# on form and on markup map which identifies a barrier |
| DAM |
yes or no, simplifies reselect |
| FISHWAY |
yes or no, simplifies reselect |
| TYPEFISHWAY |
what kind of fishway |
| EFFECTFISHWAY |
{(1) all species pass; (2) some species pass; (3) no species pass} |
| NATURALBAR |
yes or no, simplifies reselect |
| TYPENATBAR |
what kind of natural barrier |
| OTHERBAR |
yes or no, simplifies reselect |
| TYPEOTHERBAR |
what kind of man made barrier |
| ISCOMMENT |
yes or no, simplifies reselect |
| COMMENTS |
|
| ISDIAGRAM |
yes or no, simplifies reselect |
| ANADRIVID |
concatenation of FORM and RIVPTID to produce a unique coverage id which is used to relate to the .pat or luts to identify a river |
| ANADBARID |
concatenation of FORM and BARPTID to produce a unique coverage id which is used to relate to the .pat to identify the barrier location |
Table relate note:
To identify a barrier or fishway, relate ANADID from the .PAT to ANADBARID in ANADBAR.LUT
Coding for categorical items in the lookup tables is as follows:
LOOKUP TABLE ITEM DEFINITIONS
ANADRIV.LUT CLASS 1 Empties into ocean or bay
2 Empties into 1
3 Empties into 2
ANADRUN.LUT EVENTTYPE LOC Local concentration
RUN Run
SPN Spawning habitat
SPECIES ALW Alewife
ASH American Shad
ASM Atlantic Salmon
ATS Atlantic Sturgeon
BBH Blueback Herring
LMP Lamprey
RBS Rainbow Smelt
SNS Shortnosed Sturgeon
WPR White Perch
STATUS1 E existing
H historic
STATUS2 C common
R rare
STATUS3 C confirmed
U unconfirmed
ANADBAR.LUT EFFECTFISHWAY 1 All species pass
2 Some species pass
3 No species pass
TYPEFISHWAY DN Denil
EL Elevator
FL Fishladder
LO Locks used by fish
ST Steps
TM Temporary
UN Unknown
VS Vertical slot
WB Wooden boards
WD Weir pool and denil
WF Weir pool and Fishladder
WP Weir pool
WS Weir pool and steps
TYPENATBAR NF Natural falls
BL Boulders
DRB Dry river bed
SB Sand bar
BB Barrier beach
BD Bog dam
RAPID Rapid
VG Thick growth vegetation
GE Ground elevation
LF Low flow
TYPEOTHERBAR SW Sluiceway
TG Tidegate
CUL Culvert
DI Ditch
PP Power plant
SCREEN
Programming examples using relates:
SAMPLE CODE UTILIZING CURSORS ( ARCPLOT):
NOTE: The following is a fragment of code from DFWELE's AREAMAP plotting aml. AREAMAP is designed to call various datalayers, combining them to create plotting themes. In this particular situation the markersymbols and text information have been designed to be scale dependent. First a white circle is placed on the map where all dams, fishways, runs & spawning points will be plotted. This is to ensure that the markersymbol for these features shows up over information previously layed down in the map. Then reselects are performed to plot the data associated through lookup tables to the points. Finally text information is layed down. The larger the scale the more information about the point is plotted.
The code below is offered on an "as is" basis with no representations as to accuracy or completeness. The user assumes responsibility for determining its fitness and appropriateness for a particular use.
&TYPE *\**** THEMESET 01500, LAYER 9,
&TYPE PLOTTING ANAD FISH POINTS
&TYPE *\**** SET UP RESTORE RELATE
relate restore $ANAD/anadfish.prl
MAPSCALE %.SCALE%
&type *\**** SET UP MARKERSETS AND SYMBOLS ACCORDING TO SCALE
&IF %.SCALE% LT 25000 &THEN &DO
&S MSET1 = $PLOTDATA/DFW.MRK
&S MSET2 = $PLOTDATA/DFW.MRK
&S MSYM1 = 22 /* DAM
&S MSYM2 = 20 /* FISHWAY
&S MSYM3 = 21 /* RUN
&S MSYM4 = 23 /* SPN
&S MSYM5 = 24 /* WHITE SPOT - lay down before all other spots so other symbols show up
&S MSIZE2 = .3 /* RUN/SPN
&S MSIZE3 = .3 /* FISHWAY
&S MSIZE1 = .3 /* DAM/ WHITE SPOT
&END /* LT 25000
&IF %.SCALE% GE 25000 &THEN &DO
&S MSET1 = $PLOTDATA/DFW.MRK
&S MSET2 = $PLOTDATA/DFW.MRK
&S MSYM1 = 22 /* DAM
&S MSYM2 = 20 /* FISHWAY
&S MSYM3 = 21 /* RUN
&S MSYM4 = 23 /* SPN
&S MSYM5 = 24 /* WHITE SPOT - lay down before all other spots so other symbols show up
&S MSIZE2 = .15 /* RUN/SPN
&S MSIZE3 = .15 /* FISHWAY
&S MSIZE1 = .15 /* DAM/ WHITE SPOT
&END /* GE 25000
&lv
&TYPE \* *************************************************************
&TYPE \* **** SETTING UP RELATES TO INFO LOOKUP TABLES
RELATE ADD
BEGREL
/DFWELE/COMM/PROJ/ANAD/ANADFISH.RUN
INFO
ANADID
ANADBGID
LINEAR
RO
ENDREL
/DFWELE/COMM/PROJ/ANAD/ANADFISH.RUN
INFO
ANADID
ANADEDID
LINEAR
RO
BARREL
/DFWELE/COMM/PROJ/ANAD/ANADFISH.BAR
INFO
ANADID
ANADBARID
LINEAR
RO
~
&TYPE \* ***************************************************************
&TYPE *\**** LAYING DOWN WHITE POINT SYMBOLS AS BASE FOR ALL OTHER POINTS
MARKERSET %MSET1%
MARKERSYM %MSYM5%
MARKERSI %MSIZE1%
RESEL $ANAD/ANADFISH.BAR INFO DAM = 'Y' /* make reselects from the INFO lookup table
ASEL $ANAD/ANADFISH.BAR INFO FISHWAY = 'Y'
RESEL $ANAD/ANADFISH POINT BARREL//DAM = 'Y' /* make reselects in the .PAT
ASEL $ANAD/ANADFISH POINT BARREL//FISHWAY = 'Y'
POINTS $ANAD/ANADFISH NOID
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.BAR INFO
RESEL $ANAD/ANADFISH.RUN INFO EVENTTYPE = 'RUN' OR EVENTTYPE = 'SPN'
RESELECT $ANAD/anadfish point BEGREL//STATUS1 = 'E'
ASEL $ANAD/ANADFISH POINT ENDREL//STATUS1 = 'E'
RESEL $ANAD/ANADFISH POINT BEGREL//EVENTTYPE EQ 'RUN'
ASEL $ANAD/ANADFISH POINT ENDREL//EVENTTYPE = 'RUN'
ASEL $ANAD/ANADFISH POINT BEGREL//EVENTTYPE EQ 'SPN'
ASEL $ANAD/ANADFISH POINT ENDREL//EVENTTYPE EQ 'SPN'
RESEL $ANAD/ANADFISH POINT BEGREL//ANADBGID NE ENDREL//ANADEDID OR BEGREL//SPECIES NE ENDREL//SPECIES
POINTS $ANAD/ANADFISH NOID
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.RUN INFO
&TYPE LAYING DOWN POINTS FOR \***** DAMS
MARKERSET %MSET1%
MARKERSYM %MSYM1%
MARKERSI %MSIZE1%
RESEL $ANAD/ANADFISH.BAR INFO DAM = 'Y'
RESEL $ANAD/ANADFISH POINT BARREL//DAM = 'Y'
POINTS $ANAD/ANADFISH NOID
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.BAR INFO
&TYPE LAYING DOWN POINTS FOR \***** RUN / FISHWAY / SPAWN
MARKERSET %MSET1%
MARKERSYM %MSYM2%
MARKERSI %MSIZE3%
RESEL $ANAD/ANADFISH.BAR INFO FISHWAY = 'Y'
RESEL $ANAD/ANADFISH POINT BARREL//FISHWAY = 'Y'
POINTS $ANAD/ANADFISH noid
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.BAR INFO
MARKERSET %MSET2%
MARKERSYM %MSYM3%
MARKERSI %MSIZE2%
RESEL $ANAD/ANADFISH.RUN INFO EVENTTYPE = 'RUN'
RESELECT $ANAD/anadfish point BEGREL//STATUS1 = 'E'
ASEL $ANAD/ANADFISH POINT ENDREL//STATUS1 = 'E'
RESEL $ANAD/ANADFISH POINT BEGREL//EVENTTYPE = 'RUN'
ASEL $ANAD/ANADFISH POINT ENDREL//EVENTTYPE = 'RUN'
POINTS $ANAD/ANADFISH NOID
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.RUN INFO
MARKERSET %MSET2%
MARKERSYM %MSYM4%
MARKERSI %MSIZE2%
RESEL $ANAD/ANADFISH.RUN INFO EVENTTYPE = 'SPN'
RESELECT $ANAD/anadfish point BEGREL//STATUS1 = 'E'
ASEL $ANAD/ANADFISH POINT ENDREL//STATUS1 = 'E'
RESEL $ANAD/ANADFISH POINT BEGREL//EVENTTYPE = 'SPN'
ASEL $ANAD/ANADFISH POINT ENDREL//EVENTTYPE = 'SPN'
RESEL $ANAD/ANADFISH POINT BEGREL//ANADBGID NE ENDREL//ANADEDID OR BEGREL//SPECIES NE ENDREL//SPECIES
POINTS $ANAD/ANADFISH NOID
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.RUN INFO
&TYPE \* ******************************************************************
&TYPE LAYING DOWN TEXT FOR ANAD FISH
&TYPE *\***** SETTING UP OVERPOST CONDITIONS
&IF %.SCALE% GT 200000 &THEN &GOTO SKIPTEXT
&IF %.SCALE% LT 25000 &THEN &DO
textset font
textfont univers
textcolor 1
textsize 0.1
textoffset 0.03 0
textalignment automatic
overpost on
/* overpost {resolution} {radius} {increment}
overpost 0.05 1.75 0.2
overpost increment
overpost text moveable nodelete
overpost marker fixed nodelete
leaders on
leadertolerance 0.1
leadersymbol 1
textalignment automatic
&END
&IF %.SCALE% GE 25000 &THEN &DO
textset font
textfont univers
textcolor 1
textsize 0.08
textoffset 0.03 0
overpost on
/* overpost {resolution} {radius} {increment}
overpost 0.05 0.75 0.5
overpost increment
overpost text moveable nodelete
overpost marker fixed nodelete
leaders on
leadertolerance 0.1
leadersymbol 1
textalignment automatic
&END
&TYPE *\**** SETTING UP CURSORS in order to grab all available points
CURSOR ANADBAR_CURS DECLARE $ANAD/ANADFISH.BAR INFO RO /* declare cursor (on info file)
CURSOR ANADRUN_CURS DECLARE $ANAD/ANADFISH.RUN INFO RO /* declare cursor (on info file)
&S CHECK [SHOW MAPSCALE]
RESEL $ANAD/ANADFISH.BAR INFO DAM = 'Y'
ASEL $ANAD/ANADFISH.BAR INFO FISHWAY = 'Y'
RESEL $ANAD/ANADFISH POINT BARREL//DAM = 'Y'
ASEL $ANAD/ANADFISH POINT BARREL//FISHWAY = 'Y'
RESELECT $ANAD/ANADFISH POINT MAPE
&IF %.SCALE% LE 35000 &THEN &DO
CURSOR ANADBAR_CURS OPEN /* declare cursor open
&DO &WHILE %:ANADBAR_CURS.AML$NEXT% /* do while for info
&IF %.SCALE% LE 18000 &THEN &DO
POINTTEXT $ANAD/ANADFISH BARREL//TYPEFISHWAY|''|'EFF-'|BARREL//EFFECTFISHWAY
&END /* LE 18000
&IF %.SCALE% GT 18000 AND %.SCALE% LE 25000 &THEN &DO
POINTTEXT $ANAD/ANADFISH BARREL//TYPEFISHWAY
&END /* GT 18000 AND LT 35000
CURSOR ANADBAR_CURS NEXT /* move records along in info
&END /* end of DO for info
CURSOR ANADBAR_CURS CLOSE /* declare cursor closed
&END /* LT 35000
&IF %.SCALE% GT 35000 &THEN &DO
TEXTSI .08
POINTTEXT $ANAD/ANADFISH BARREL//ANADBARID
&END /* GT 35000
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.BAR INFO
RESEL $ANAD/ANADFISH.RUN INFO EVENTTYPE = 'RUN' OR EVENTTYPE = 'SPN'
RESELECT $ANAD/anadfish point BEGREL//STATUS1 = 'E'
ASEL $ANAD/ANADFISH POINT ENDREL//STATUS1 = 'E'
RESEL $ANAD/ANADFISH POINT BEGREL//EVENTTYPE = 'RUN'
ASEL $ANAD/ANADFISH POINT ENDREL//EVENTTYPE = 'RUN'
ASEL $ANAD/ANADFISH POINT BEGREL//EVENTTYPE = 'SPN'
ASEL $ANAD/ANADFISH POINT ENDREL//EVENTTYPE = 'SPN'
RESEL $ANAD/ANADFISH POINT BEGREL//ANADBGID NE ENDREL//ANADEDID OR BEGREL//SPECIES NE ENDREL//SPECIES
RESELECT $ANAD/ANADFISH POINT MAPE
&IF %.SCALE% LE 35000 &THEN &DO
CURSOR ANADRUN_CURS OPEN /* declare cursor open
&DO &WHILE %:ANADRUN_CURS.AML$NEXT% /* do while for info
&IF %.SCALE% LE 18000 &THEN &DO
pointtext $anad/anadfish BEGREL//species|''|BEGREL//eventtype|''
|'BEGINS'\BEGREL//status1|BEGREL//status2|BEGREL//status3
pointtext $anad/anadfish ENDREL//species|''|ENDREL//eventtype|''
|'ENDS'\ENDREL//status1|ENDREL//status2|ENDREL//status3
&END /* LE 18000
&IF %.SCALE% GT 18000 AND %.SCALE% LE 35000 &THEN &DO
pointtext $ANAD/ANADFISH BEGREL//SPECIES|''|BEGREL//EVENTTYPE|''|'BEGINS'
pointtext $ANAD/ANADFISH ENDREL//SPECIES|''|ENDREL//EVENTTYPE|''|'ENDS'
&END /* GT 18000 AND LE 35000
CURSOR ANADRUN_CURS NEXT /* move records along in info
&END /* end of DO for info
CURSOR ANADRUN_CURS CLOSE /* declare cursor closed
&END /* LT 35000
&IF %.SCALE% GT 35000 &THEN &DO
TEXTSI .08
POINTTEXT $ANAD/ANADFISH ANADID
&END /* GT 35000
ASEL $ANAD/ANADFISH POINT
ASEL $ANAD/ANADFISH.RUN INFO
overpost off
leaders off
&TYPE FINISH LAYING DOWN TEXT
&LABEL SKIPTEXT /* scale gt 200000
&TYPE */**** FINISH PLOTTING ANADFISH POINTS
SAMPLE CODE using the NEXT command (INFO):
The NEXT command example is given in the context of an INFO program. The program uses information from the .lut tables in INFO reports (not present in this documentation) to produce reports about runs/spawning habitat and barriers/fishways.
ENTER COMMAND TYPE ANADFISH.PG
PROGRAM NAME: ANADFISH.PG
10000 PROGRAM SECTION ONE
10001 OUTPUT ANADFISH.LIS INIT
10002 SELECT ANADRUN.LUT
10003 SORT ON ANADRIVID
10004 SELECT ANADBAR.LUT
10005 SORT ON ANADRIVID
10006 SELECT ANADRIV.LUT
10007 SORT ON FORM, RIVPTID
10008 RELATE ANADRUN.LUT 1 BY ANADRIVID
10009 RELATE ANADBAR.LUT 2 BY ANADRIVID
10010 NEXT1
10011 REPORT RIVRUN.RPT Y 60
10012 REPORT BARRIV.RPT Y 60
|