Mass.Gov logo  * Mass.Gov Home Page  * State Government  * State Online Services

Seal of the Commonwealth of Massachusetts

FAQsLink PageGIS ProgramCommissioner's OfficeLicensesInformation CentralSite NavigationFishing and Boating AccessRiverwaysMarine FisheriesMassWildlifeHome

Geographic Information Systems Program

ANADROMOUS FISH DATALAYER

Last updated on 5/23/97 to add additional information and correct minor errors. And on 7/31/97 and 10/21/97 to refine portions of the AML code.

OVERVIEW

The Department of Fisheries, Wildlife and Environmental Law Enforcement (DFWELE) GIS Program working in conjunction with biologists from the MA Division of Marine Fisheries and the MA Division of Fisheries and Wildlife compiled and automated a point coverage of anadromous fish data. These data include all known coastal anadromous fish runs and spawning habitat as well as runs for three major inland rivers - the Nashua, the Concord and the Shawsheen. For the purposes of this database, a run as defined by DFWELE GIS as being specific to a species and a named stream.

Note, this data layer should not be considered definitive in determining the presence or absence of fish runs, spawning habitat, barriers or fishways. It is the DFWELE GIS Program's best current representation of these features. Neither should this layer or its derived maps be used for making site specific regulatory decisions. Rather, its appropriate use is for education and regional planning. This is a transition coverage. When MASSGIS completes its "hydro centerline" project, producing a complete hydro network for the Commonwealth, inherently linear features such as fish runs and many of the spawning habitat features will be represented as such.

These data may be obtained through arrangements with MassGIS (see Data Distribution under the MassGIS Guide to User Services.

METHODOLOGY

During interviews with Division biologists the data points were compiled onto 1:25,000 basemaps using the best available hydrographic data. "Heads-up" digitizing was used to automate the data points. Paper forms were completed with information regarding locations of barriers, fishways, beginning and ending of runs and spawning habitat. The information from these forms was used to populate the associated look up tables (.lut).

 

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

Date last updated: 07/25/03
For GIs Program website content issues contact:
steve.mcrae@state.ma.us
Commonwealth of Massachusetts Home Page Executive Office of Environmental Affairs Home Page Department Home Page  

Home | Commissioner's Office | MassWildlife | Marine Fisheries | Riverways | Fishing and Boating Access | Site Navigation | Department Overview | Information Central | Licenses | GIS Program | Links | FAQs

Privacy Policy